nixfmt
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -11,8 +12,8 @@ pre-commit-hooks-nix.lib.${pkgs.system}.run {
|
|||||||
hooks = {
|
hooks = {
|
||||||
pre-commit-hook-ensure-sops.enable = true;
|
pre-commit-hook-ensure-sops.enable = true;
|
||||||
treefmt = {
|
treefmt = {
|
||||||
enable = true;
|
enable = lib.mkForce true;
|
||||||
settings.fail-on-change = false;
|
settings.fail-on-change = lib.mkForce false;
|
||||||
packageOverrides.treefmt = inputs.treefmt-nix.lib.mkWrapper pkgs ../../treefmt.nix;
|
packageOverrides.treefmt = inputs.treefmt-nix.lib.mkWrapper pkgs ../../treefmt.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
315
flake.nix
315
flake.nix
@@ -6,8 +6,8 @@
|
|||||||
# The name "snowfall-lib" is required due to how Snowfall Lib processes your
|
# The name "snowfall-lib" is required due to how Snowfall Lib processes your
|
||||||
# flake's inputs.
|
# flake's inputs.
|
||||||
snowfall-lib = {
|
snowfall-lib = {
|
||||||
url = "github:snowfallorg/lib";
|
url = "github:snowfallorg/lib";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
@@ -84,179 +84,180 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# We will handle this in the next section.
|
# We will handle this in the next section.
|
||||||
outputs = inputs:
|
outputs =
|
||||||
inputs.snowfall-lib.mkFlake {
|
inputs:
|
||||||
# You must provide our flake inputs to Snowfall Lib.
|
inputs.snowfall-lib.mkFlake {
|
||||||
inherit inputs;
|
# You must provide our flake inputs to Snowfall Lib.
|
||||||
|
inherit inputs;
|
||||||
|
|
||||||
# The `src` must be the root of the flake. See configuration
|
# The `src` must be the root of the flake. See configuration
|
||||||
# in the next section for information on how you can move your
|
# in the next section for information on how you can move your
|
||||||
# Nix files to a separate directory.
|
# Nix files to a separate directory.
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
# Add a module to a specific host.
|
# Add a module to a specific host.
|
||||||
systems = {
|
systems = {
|
||||||
# common modules
|
# common modules
|
||||||
modules.nixos = with inputs; [
|
modules.nixos = with inputs; [
|
||||||
authentik-nix.nixosModules.default
|
authentik-nix.nixosModules.default
|
||||||
chaotic.nixosModules.default
|
chaotic.nixosModules.default
|
||||||
crowdsec.nixosModules.crowdsec
|
crowdsec.nixosModules.crowdsec
|
||||||
crowdsec.nixosModules.crowdsec-firewall-bouncer
|
crowdsec.nixosModules.crowdsec-firewall-bouncer
|
||||||
disko.nixosModules.disko
|
disko.nixosModules.disko
|
||||||
impermanence.nixosModules.impermanence
|
impermanence.nixosModules.impermanence
|
||||||
lanzaboote.nixosModules.lanzaboote
|
lanzaboote.nixosModules.lanzaboote
|
||||||
sops-nix.nixosModules.sops
|
sops-nix.nixosModules.sops
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
];
|
|
||||||
|
|
||||||
# common darwin modules
|
|
||||||
modules.darwin = with inputs; [
|
|
||||||
nix-homebrew.darwinModules.nix-homebrew
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
];
|
|
||||||
|
|
||||||
# Host config
|
|
||||||
hosts = {
|
|
||||||
# ######################################################
|
|
||||||
# Desktop #
|
|
||||||
# ######################################################
|
|
||||||
desktop = {
|
|
||||||
modules = with inputs; [
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
||||||
nixos-hardware.nixosModules.common-gpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-hidpi
|
|
||||||
nixos-hardware.nixosModules.common-pc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ######################################################
|
|
||||||
# NAS #
|
|
||||||
# ######################################################
|
|
||||||
nas = {
|
|
||||||
modules = with inputs; [
|
|
||||||
nixos-hardware.nixosModules.common-pc
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
||||||
nixos-hardware.nixosModules.common-hidpi
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
];
|
|
||||||
# overlays = with inputs; [ crowdsec.overlays.default ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ######################################################
|
|
||||||
# Steamdeck #
|
|
||||||
# ######################################################
|
|
||||||
steamdeck = {
|
|
||||||
modules = with inputs; [
|
|
||||||
disko.nixosModules.disko
|
|
||||||
jovian.nixosModules.jovian
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
||||||
nixos-hardware.nixosModules.common-gpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-hidpi
|
|
||||||
nixos-hardware.nixosModules.common-pc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ######################################################
|
|
||||||
# NUC #
|
|
||||||
# ######################################################
|
|
||||||
nuc = {
|
|
||||||
modules = with inputs; [
|
|
||||||
disko.nixosModules.disko
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
||||||
nixos-hardware.nixosModules.common-gpu-amd
|
|
||||||
nixos-hardware.nixosModules.common-hidpi
|
|
||||||
nixos-hardware.nixosModules.common-pc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ######################################################
|
|
||||||
# Pi4 #
|
|
||||||
# ######################################################
|
|
||||||
pi4 = {
|
|
||||||
modules = with inputs; [
|
|
||||||
disko.nixosModules.disko
|
|
||||||
nixos-raspberrypi.nixosModules.raspberry-pi-4.base
|
|
||||||
nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4
|
|
||||||
nixos-raspberrypi.lib.inject-overlays
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ######################################################
|
|
||||||
# Pi5 #
|
|
||||||
# ######################################################
|
|
||||||
pi5 = {
|
|
||||||
modules = with inputs; [
|
|
||||||
disko.nixosModules.disko
|
|
||||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.base
|
|
||||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.display-vc4
|
|
||||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.bluetooth
|
|
||||||
nixos-raspberrypi.lib.inject-overlays
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ######################################################
|
|
||||||
# Mac #
|
|
||||||
# ######################################################
|
|
||||||
macbook-pro-nixos = {
|
|
||||||
modules = with inputs; [
|
|
||||||
nixos-apple-silicon.nixosModules.default
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
overlays = with inputs; [ nix-vscode-extensions.overlays.default ];
|
|
||||||
|
|
||||||
homes = {
|
|
||||||
modules = with inputs; [
|
|
||||||
nix-index-database.homeModules.nix-index
|
|
||||||
sops-nix.homeManagerModules.sops
|
|
||||||
];
|
];
|
||||||
|
|
||||||
overlays = with inputs; [
|
# common darwin modules
|
||||||
nix-vscode-extensions.overlays.default
|
modules.darwin = with inputs; [
|
||||||
|
nix-homebrew.darwinModules.nix-homebrew
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
users = {
|
# Host config
|
||||||
# "matt@desktop" = {
|
hosts = {
|
||||||
# modules = with inputs; [
|
# ######################################################
|
||||||
# sops-nix.homeManagerModules.sops
|
# Desktop #
|
||||||
# ];
|
# ######################################################
|
||||||
# };
|
desktop = {
|
||||||
"deck@steamdeck" = {
|
|
||||||
modules = with inputs; [
|
modules = with inputs; [
|
||||||
steam-rom-manager.homeManagerModules.default
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||||
|
nixos-hardware.nixosModules.common-gpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-hidpi
|
||||||
|
nixos-hardware.nixosModules.common-pc
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ######################################################
|
||||||
|
# NAS #
|
||||||
|
# ######################################################
|
||||||
|
nas = {
|
||||||
|
modules = with inputs; [
|
||||||
|
nixos-hardware.nixosModules.common-pc
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||||
|
nixos-hardware.nixosModules.common-hidpi
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
];
|
||||||
|
# overlays = with inputs; [ crowdsec.overlays.default ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ######################################################
|
||||||
|
# Steamdeck #
|
||||||
|
# ######################################################
|
||||||
|
steamdeck = {
|
||||||
|
modules = with inputs; [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
jovian.nixosModules.jovian
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||||
|
nixos-hardware.nixosModules.common-gpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-hidpi
|
||||||
|
nixos-hardware.nixosModules.common-pc
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ######################################################
|
||||||
|
# NUC #
|
||||||
|
# ######################################################
|
||||||
|
nuc = {
|
||||||
|
modules = with inputs; [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||||
|
nixos-hardware.nixosModules.common-gpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-hidpi
|
||||||
|
nixos-hardware.nixosModules.common-pc
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ######################################################
|
||||||
|
# Pi4 #
|
||||||
|
# ######################################################
|
||||||
|
pi4 = {
|
||||||
|
modules = with inputs; [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
nixos-raspberrypi.nixosModules.raspberry-pi-4.base
|
||||||
|
nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4
|
||||||
|
nixos-raspberrypi.lib.inject-overlays
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ######################################################
|
||||||
|
# Pi5 #
|
||||||
|
# ######################################################
|
||||||
|
pi5 = {
|
||||||
|
modules = with inputs; [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
nixos-raspberrypi.nixosModules.raspberry-pi-5.base
|
||||||
|
nixos-raspberrypi.nixosModules.raspberry-pi-5.display-vc4
|
||||||
|
nixos-raspberrypi.nixosModules.raspberry-pi-5.bluetooth
|
||||||
|
nixos-raspberrypi.lib.inject-overlays
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ######################################################
|
||||||
|
# Mac #
|
||||||
|
# ######################################################
|
||||||
|
macbook-pro-nixos = {
|
||||||
|
modules = with inputs; [
|
||||||
|
nixos-apple-silicon.nixosModules.default
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
overlays = with inputs; [ nix-vscode-extensions.overlays.default ];
|
||||||
|
|
||||||
|
homes = {
|
||||||
|
modules = with inputs; [
|
||||||
|
nix-index-database.homeModules.nix-index
|
||||||
|
sops-nix.homeManagerModules.sops
|
||||||
|
];
|
||||||
|
|
||||||
|
overlays = with inputs; [
|
||||||
|
nix-vscode-extensions.overlays.default
|
||||||
|
];
|
||||||
|
|
||||||
|
users = {
|
||||||
|
# "matt@desktop" = {
|
||||||
|
# modules = with inputs; [
|
||||||
|
# sops-nix.homeManagerModules.sops
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
"deck@steamdeck" = {
|
||||||
|
modules = with inputs; [
|
||||||
|
steam-rom-manager.homeManagerModules.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
# Configure Snowfall Lib, all of these settings are optional.
|
# Configure Snowfall Lib, all of these settings are optional.
|
||||||
snowfall = {
|
snowfall = {
|
||||||
# Choose a namespace to use for your flake's packages, library,
|
# Choose a namespace to use for your flake's packages, library,
|
||||||
# and overlays.
|
# and overlays.
|
||||||
namespace = "mjallen";
|
namespace = "mjallen";
|
||||||
|
|
||||||
# Add flake metadata that can be processed by tools like Snowfall Frost.
|
# Add flake metadata that can be processed by tools like Snowfall Frost.
|
||||||
meta = {
|
meta = {
|
||||||
# A slug to use in documentation when displaying things like file paths.
|
# A slug to use in documentation when displaying things like file paths.
|
||||||
name = "mjallen";
|
name = "mjallen";
|
||||||
|
|
||||||
# A title to show for your flake, typically the name.
|
# A title to show for your flake, typically the name.
|
||||||
title = "mjallen Flake";
|
title = "mjallen Flake";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs-builder = channels: {
|
||||||
|
formatter = inputs.treefmt-nix.lib.mkWrapper channels.nixpkgs ./treefmt.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs-builder = channels: {
|
|
||||||
formatter = inputs.treefmt-nix.lib.mkWrapper channels.nixpkgs ./treefmt.nix;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
{ lib, pkgs, home, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
home,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
update-switch = "darwin-rebuild switch --flake ~/nix-config";
|
update-switch = "darwin-rebuild switch --flake ~/nix-config";
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ in
|
|||||||
"name:steam, monitor:${display.input}, default:false, special, class:(.*[Ss]team.*)"
|
"name:steam, monitor:${display.input}, default:false, special, class:(.*[Ss]team.*)"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
windowRule = [
|
windowRule = [
|
||||||
"size 2160 3356, tag:horizonrdp"
|
"size 2160 3356, tag:horizonrdp"
|
||||||
];
|
];
|
||||||
@@ -95,7 +94,7 @@ in
|
|||||||
tooltip = false;
|
tooltip = false;
|
||||||
exec = "waybar-hass --get_light light.living_room_lights";
|
exec = "waybar-hass --get_light light.living_room_lights";
|
||||||
interval = "once";
|
interval = "once";
|
||||||
format = "{text}";#"";
|
format = "{text}"; # "";
|
||||||
on-click = "waybar-hass --toggle_light light.living_room_lights";
|
on-click = "waybar-hass --toggle_light light.living_room_lights";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
let
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
ll = "ls -alh";
|
ll = "ls -alh";
|
||||||
@@ -19,40 +19,40 @@ in
|
|||||||
|
|
||||||
home.username = "matt";
|
home.username = "matt";
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "/home/matt/.config/sops/age/keys.txt";
|
age.keyFile = "/home/matt/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = "/etc/nixos/secrets/secrets.yaml";
|
defaultSopsFile = "/etc/nixos/secrets/secrets.yaml";
|
||||||
validateSopsFiles = false;
|
validateSopsFiles = false;
|
||||||
secrets = {
|
secrets = {
|
||||||
"ssh-keys-public/pi4" = {
|
"ssh-keys-public/pi4" = {
|
||||||
path = "/home/matt/.ssh/id_ed25519.pub";
|
path = "/home/matt/.ssh/id_ed25519.pub";
|
||||||
mode = "0644";
|
mode = "0644";
|
||||||
};
|
};
|
||||||
"ssh-keys-private/pi4" = {
|
"ssh-keys-private/pi4" = {
|
||||||
path = "/home/matt/.ssh/id_ed25519";
|
path = "/home/matt/.ssh/id_ed25519";
|
||||||
mode = "0600";
|
mode = "0600";
|
||||||
};
|
};
|
||||||
# "ssh-keys-public/desktop-nixos" = {
|
# "ssh-keys-public/desktop-nixos" = {
|
||||||
# path = "/home/matt/.ssh/authorized_keys";
|
# path = "/home/matt/.ssh/authorized_keys";
|
||||||
# mode = "0600";
|
# mode = "0600";
|
||||||
# };
|
# };
|
||||||
|
|
||||||
# "ssh-keys-public/desktop-nixos-root" = {
|
# "ssh-keys-public/desktop-nixos-root" = {
|
||||||
# path = "/home/matt/.ssh/authorized_keys2";
|
# path = "/home/matt/.ssh/authorized_keys2";
|
||||||
# mode = "0600";
|
# mode = "0600";
|
||||||
# };
|
# };
|
||||||
|
|
||||||
# "ssh-keys-public/desktop-windows" = {
|
# "ssh-keys-public/desktop-windows" = {
|
||||||
# path = "/home/matt/.ssh/authorized_keys3";
|
# path = "/home/matt/.ssh/authorized_keys3";
|
||||||
# mode = "0600";
|
# mode = "0600";
|
||||||
# };
|
# };
|
||||||
|
|
||||||
# "ssh-keys-public/macbook-macos" = {
|
# "ssh-keys-public/macbook-macos" = {
|
||||||
# path = "/home/matt/.ssh/authorized_keys4";
|
# path = "/home/matt/.ssh/authorized_keys4";
|
||||||
# mode = "0600";
|
# mode = "0600";
|
||||||
# };
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
mangohud.enable = lib.mkForce true;
|
mangohud.enable = lib.mkForce true;
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ pkgs, lib, config, namespace, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
|
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs,... }:
|
{ pkgs, ... }:
|
||||||
let
|
let
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
update-boot = "sudo nixos-rebuild boot --max-jobs 10";
|
update-boot = "sudo nixos-rebuild boot --max-jobs 10";
|
||||||
|
|||||||
@@ -44,7 +44,15 @@ in
|
|||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.dolphin-emu;
|
package = pkgs.dolphin-emu;
|
||||||
romFolder = "gc";
|
romFolder = "gc";
|
||||||
fileTypes = [ ".iso" ".ISO" ".gcm" ".GCM" ".ciso" ".CISO" "rvz" ];
|
fileTypes = [
|
||||||
|
".iso"
|
||||||
|
".ISO"
|
||||||
|
".gcm"
|
||||||
|
".GCM"
|
||||||
|
".ciso"
|
||||||
|
".CISO"
|
||||||
|
"rvz"
|
||||||
|
];
|
||||||
extraArgs = "-b -e \"\${filePath}\"";
|
extraArgs = "-b -e \"\${filePath}\"";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.desktop.gnome;
|
cfg = config.mjallen.desktop.gnome;
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.desktop.hyprland;
|
cfg = config.mjallen.desktop.hyprland;
|
||||||
@@ -345,7 +350,7 @@ in
|
|||||||
", swipe:3:ld, exec, foot"
|
", swipe:3:ld, exec, foot"
|
||||||
|
|
||||||
# tap with 3 fingers
|
# tap with 3 fingers
|
||||||
", tap:3, exec, foot"
|
", tap:3, exec, foot"
|
||||||
|
|
||||||
# longpress can trigger mouse binds:
|
# longpress can trigger mouse binds:
|
||||||
", longpress:2, movewindow"
|
", longpress:2, movewindow"
|
||||||
@@ -390,14 +395,16 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig =
|
||||||
exec-once = dbus-update-activation-environment --systemd --all
|
''
|
||||||
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
exec-once = dbus-update-activation-environment --systemd --all
|
||||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||||
exec-once = xhost +SI:localuser:root
|
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
exec-once = nwg-look -a
|
exec-once = xhost +SI:localuser:root
|
||||||
exec-once = nwg-dock-hyprland -d
|
exec-once = nwg-look -a
|
||||||
'' + cfg.extraConfig or '''';
|
exec-once = nwg-dock-hyprland -d
|
||||||
|
''
|
||||||
|
+ cfg.extraConfig or '''';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,31 +45,31 @@ with lib;
|
|||||||
|
|
||||||
wallpaper = mkOption {
|
wallpaper = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "list of hyprland wallpaper configs";
|
description = "list of hyprland wallpaper configs";
|
||||||
};
|
};
|
||||||
|
|
||||||
monitor = mkOption {
|
monitor = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "list of hyprland monitor configs";
|
description = "list of hyprland monitor configs";
|
||||||
};
|
};
|
||||||
|
|
||||||
monitorv2 = mkOption {
|
monitorv2 = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "list of hyprland monitorv2 configs";
|
description = "list of hyprland monitorv2 configs";
|
||||||
};
|
};
|
||||||
|
|
||||||
workspace = mkOption {
|
workspace = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "list of hyprland workspace definitions";
|
description = "list of hyprland workspace definitions";
|
||||||
};
|
};
|
||||||
|
|
||||||
windowRule = mkOption {
|
windowRule = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "list of hyprland window rules";
|
description = "list of hyprland window rules";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -92,14 +92,38 @@ with lib;
|
|||||||
defaultApps = mkOption {
|
defaultApps = mkOption {
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
browser = mkOption { type = types.package; default = pkgs.firefox; };
|
browser = mkOption {
|
||||||
editor = mkOption { type = types.package; default = pkgs.micro; };
|
type = types.package;
|
||||||
fileExplorer = mkOption { type = types.package; default = pkgs.nemo; };
|
default = pkgs.firefox;
|
||||||
visual = mkOption { type = types.package; default = pkgs.vscodium; };
|
};
|
||||||
terminal = mkOption { type = types.package; default = pkgs.kitty; };
|
editor = mkOption {
|
||||||
office = mkOption { type = types.package; default = pkgs.onlyoffice-bin_latest; };
|
type = types.package;
|
||||||
video = mkOption { type = types.package; default = pkgs.vlc; };
|
default = pkgs.micro;
|
||||||
imageViewer = mkOption { type = types.package; default = pkgs.nomacs; };
|
};
|
||||||
|
fileExplorer = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.nemo;
|
||||||
|
};
|
||||||
|
visual = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.vscodium;
|
||||||
|
};
|
||||||
|
terminal = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.kitty;
|
||||||
|
};
|
||||||
|
office = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.onlyoffice-bin_latest;
|
||||||
|
};
|
||||||
|
video = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.vlc;
|
||||||
|
};
|
||||||
|
imageViewer = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.nomacs;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
description = "Default applications used across the system.";
|
description = "Default applications used across the system.";
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.desktop.hyprland;
|
cfg = config.mjallen.desktop.hyprland;
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.desktop.hyprland;
|
cfg = config.${namespace}.desktop.hyprland;
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.desktop.hyprland;
|
cfg = config.${namespace}.desktop.hyprland;
|
||||||
in
|
in
|
||||||
@@ -7,41 +12,41 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.hyprlock = {
|
programs.hyprlock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
background = [
|
background = [
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
path = cfg.wallpaper; # supports png, jpg, webp (no animations, though)
|
path = cfg.wallpaper; # supports png, jpg, webp (no animations, though)
|
||||||
color = "rgba(25, 20, 20, 1.0)";
|
color = "rgba(25, 20, 20, 1.0)";
|
||||||
|
|
||||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||||
blur_passes = "3"; # 0 disables blurring
|
blur_passes = "3"; # 0 disables blurring
|
||||||
blur_size = "7";
|
blur_size = "7";
|
||||||
noise = "0.0117";
|
noise = "0.0117";
|
||||||
contrast = "0.8916";
|
contrast = "0.8916";
|
||||||
brightness = "0.8172";
|
brightness = "0.8172";
|
||||||
vibrancy = "0.1696";
|
vibrancy = "0.1696";
|
||||||
vibrancy_darkness = "0.0";
|
vibrancy_darkness = "0.0";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
input-field = [
|
input-field = [
|
||||||
{
|
{
|
||||||
size = "200, 50";
|
size = "200, 50";
|
||||||
position = "0, -80";
|
position = "0, -80";
|
||||||
monitor = cfg.primaryDisplay;
|
monitor = cfg.primaryDisplay;
|
||||||
dots_center = true;
|
dots_center = true;
|
||||||
fade_on_empty = true;
|
fade_on_empty = true;
|
||||||
font_color = "rgb(202, 211, 245)";
|
font_color = "rgb(202, 211, 245)";
|
||||||
inner_color = "rgb(91, 96, 120)";
|
inner_color = "rgb(91, 96, 120)";
|
||||||
outer_color = "rgb(24, 25, 38)";
|
outer_color = "rgb(24, 25, 38)";
|
||||||
bothlock_color = -1;
|
bothlock_color = -1;
|
||||||
outline_thickness = 5;
|
outline_thickness = 5;
|
||||||
placeholder_text = ''<span foreground="##cad3f5">Password...</span>'';
|
placeholder_text = ''<span foreground="##cad3f5">Password...</span>'';
|
||||||
shadow_passes = 2;
|
shadow_passes = 2;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.desktop.hyprland;
|
cfg = config.${namespace}.desktop.hyprland;
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.desktop.hyprland;
|
cfg = config.mjallen.desktop.hyprland;
|
||||||
|
|
||||||
themeSize = "compact"; # [ "standard" "compact" ]
|
themeSize = "compact"; # [ "standard" "compact" ]
|
||||||
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||||
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
||||||
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
||||||
iconThemeVariant = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
iconThemeVariant = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||||
iconScheme = "nord"; # [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" ]
|
iconScheme = "nord"; # [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" ]
|
||||||
|
|
||||||
|
|||||||
@@ -6,34 +6,34 @@ in
|
|||||||
{
|
{
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
BROWSER = "${cfg.defaultApps.browser.pname}";
|
BROWSER = "${cfg.defaultApps.browser.pname}";
|
||||||
CLUTTER_BACKEND = "wayland";
|
CLUTTER_BACKEND = "wayland";
|
||||||
EDITOR = "${cfg.defaultApps.editor.pname}";
|
EDITOR = "${cfg.defaultApps.editor.pname}";
|
||||||
VISUAL = "${cfg.defaultApps.visual.pname}";
|
VISUAL = "${cfg.defaultApps.visual.pname}";
|
||||||
ICON_THEME = cfg.iconThemeName;
|
ICON_THEME = cfg.iconThemeName;
|
||||||
GTK_CSD = "0";
|
GTK_CSD = "0";
|
||||||
GTK_THEME = cfg.gtkThemeName;
|
GTK_THEME = cfg.gtkThemeName;
|
||||||
GTK_USE_PORTAL = "1";
|
GTK_USE_PORTAL = "1";
|
||||||
HYPRCURSOR_THEME = config.home.pointerCursor.name;
|
HYPRCURSOR_THEME = config.home.pointerCursor.name;
|
||||||
HYPRCURSOR_SIZE = config.home.pointerCursor.size;
|
HYPRCURSOR_SIZE = config.home.pointerCursor.size;
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
NIXOS_OZONE_WL = "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||||
QT_QPA_PLATFORM = "wayland-egl";
|
QT_QPA_PLATFORM = "wayland-egl";
|
||||||
QT_QPA_PLATFORMTHEME = "gtk3";
|
QT_QPA_PLATFORMTHEME = "gtk3";
|
||||||
QT_SCALE_FACTOR = "1";
|
QT_SCALE_FACTOR = "1";
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
SDL_VIDEODRIVER = "wayland";
|
SDL_VIDEODRIVER = "wayland";
|
||||||
TERMINAL = "${cfg.defaultApps.terminal.pname}";
|
TERMINAL = "${cfg.defaultApps.terminal.pname}";
|
||||||
XCURSOR_THEME = config.home.pointerCursor.name;
|
XCURSOR_THEME = config.home.pointerCursor.name;
|
||||||
XCURSOR_SIZE = config.home.pointerCursor.size;
|
XCURSOR_SIZE = config.home.pointerCursor.size;
|
||||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
XDG_DATA_HOME = "\${HOME}/.local/share";
|
XDG_DATA_HOME = "\${HOME}/.local/share";
|
||||||
XDG_SESSION_DESKTOP = "Hyprland";
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
XDG_SESSION_TYPE = "wayland";
|
XDG_SESSION_TYPE = "wayland";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
enableNixpkgsReleaseCheck = lib.mkDefault false;
|
enableNixpkgsReleaseCheck = lib.mkDefault false;
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ config, lib, pkgs, system, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
isArm = "aarch64-linux" == system;
|
isArm = "aarch64-linux" == system;
|
||||||
open-remote-ssh = pkgs.vscode-utils.buildVscodeExtension {
|
open-remote-ssh = pkgs.vscode-utils.buildVscodeExtension {
|
||||||
@@ -27,44 +33,48 @@ in
|
|||||||
default = {
|
default = {
|
||||||
enableUpdateCheck = false;
|
enableUpdateCheck = false;
|
||||||
enableExtensionUpdateCheck = false;
|
enableExtensionUpdateCheck = false;
|
||||||
extensions = with pkgs; [
|
extensions =
|
||||||
vscode-extensions.arrterian.nix-env-selector
|
with pkgs;
|
||||||
vscode-extensions.bbenoist.nix
|
[
|
||||||
vscode-extensions.brettm12345.nixfmt-vscode
|
vscode-extensions.arrterian.nix-env-selector
|
||||||
vscode-extensions.cweijan.vscode-database-client2
|
vscode-extensions.bbenoist.nix
|
||||||
vscode-extensions.dendron.dendron-markdown-preview-enhanced
|
vscode-extensions.brettm12345.nixfmt-vscode
|
||||||
vscode-extensions.jnoortheen.nix-ide
|
vscode-extensions.cweijan.vscode-database-client2
|
||||||
vscode-extensions.mkhl.direnv
|
vscode-extensions.dendron.dendron-markdown-preview-enhanced
|
||||||
vscode-extensions.ms-python.debugpy
|
vscode-extensions.jnoortheen.nix-ide
|
||||||
vscode-extensions.ms-python.pylint
|
vscode-extensions.mkhl.direnv
|
||||||
vscode-extensions.ms-python.python
|
vscode-extensions.ms-python.debugpy
|
||||||
# vscode-extensions.ms-python.vscode-pylance
|
vscode-extensions.ms-python.pylint
|
||||||
vscode-extensions.redhat.vscode-yaml
|
vscode-extensions.ms-python.python
|
||||||
vscode-extensions.yy0931.vscode-sqlite3-editor
|
# vscode-extensions.ms-python.vscode-pylance
|
||||||
|
vscode-extensions.redhat.vscode-yaml
|
||||||
|
vscode-extensions.yy0931.vscode-sqlite3-editor
|
||||||
|
|
||||||
# open-remote-ssh
|
# open-remote-ssh
|
||||||
# nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
# nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
||||||
# open-vsx.jeanp413.open-remote-ssh
|
# open-vsx.jeanp413.open-remote-ssh
|
||||||
] ++ ( if !isArm then x86_only else [ ] ) ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
]
|
||||||
{
|
++ (if !isArm then x86_only else [ ])
|
||||||
name = "copilot-mcp";
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
publisher = "automatalabs";
|
{
|
||||||
version = "0.0.49";
|
name = "copilot-mcp";
|
||||||
sha256 = "sha256-+G2OQl5SCN7bh7MzGdYiRclIZefBE7lWnGg1kNpCvnA=";
|
publisher = "automatalabs";
|
||||||
}
|
version = "0.0.49";
|
||||||
{
|
sha256 = "sha256-+G2OQl5SCN7bh7MzGdYiRclIZefBE7lWnGg1kNpCvnA=";
|
||||||
name = "mcp-server-runner";
|
}
|
||||||
publisher = "zebradev";
|
{
|
||||||
version = "0.1.0";
|
name = "mcp-server-runner";
|
||||||
sha256 = "sha256-StydVt3VzQUSS/pYp76jnIwtZlEj8gWAGzOARs93J+E=";
|
publisher = "zebradev";
|
||||||
}
|
version = "0.1.0";
|
||||||
{
|
sha256 = "sha256-StydVt3VzQUSS/pYp76jnIwtZlEj8gWAGzOARs93J+E=";
|
||||||
name = "claude-dev";
|
}
|
||||||
publisher = "saoudrizwan";
|
{
|
||||||
version = "3.17.9";
|
name = "claude-dev";
|
||||||
sha256 = "sha256-y3bFtMe5vZrO3DFb31KDvkzjD2jM76wK89mKhgJXC70=";
|
publisher = "saoudrizwan";
|
||||||
}
|
version = "3.17.9";
|
||||||
];
|
sha256 = "sha256-y3bFtMe5vZrO3DFb31KDvkzjD2jM76wK89mKhgJXC70=";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
userSettings = {
|
userSettings = {
|
||||||
|
|
||||||
@@ -110,10 +120,12 @@ in
|
|||||||
# You can write arbitary Nix expressions here, to produce valid "options" declaration result.
|
# You can write arbitary Nix expressions here, to produce valid "options" declaration result.
|
||||||
# Tip: for flake-based configuration, utilize `builtins.getFlake`
|
# Tip: for flake-based configuration, utilize `builtins.getFlake`
|
||||||
"nixos" = {
|
"nixos" = {
|
||||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations.<name>.options";
|
"expr" =
|
||||||
|
"(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations.<name>.options";
|
||||||
};
|
};
|
||||||
"home-manager" = {
|
"home-manager" = {
|
||||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations.<name>.options";
|
"expr" =
|
||||||
|
"(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations.<name>.options";
|
||||||
};
|
};
|
||||||
# # Tip: use ${workspaceFolder} variable to define path
|
# # Tip: use ${workspaceFolder} variable to define path
|
||||||
# "nix-darwin" = {
|
# "nix-darwin" = {
|
||||||
|
|||||||
@@ -29,33 +29,33 @@ in
|
|||||||
background_opacity = "0.85";
|
background_opacity = "0.85";
|
||||||
|
|
||||||
# The basic colors
|
# The basic colors
|
||||||
foreground = nord.snowStorm.nord6;
|
foreground = nord.snowStorm.nord6;
|
||||||
background = nord.polarNight.nord0;
|
background = nord.polarNight.nord0;
|
||||||
selection_foreground = nord.polarNight.nord0;
|
selection_foreground = nord.polarNight.nord0;
|
||||||
selection_background = nord.aurora.nord15;
|
selection_background = nord.aurora.nord15;
|
||||||
|
|
||||||
# Cursor colors
|
# Cursor colors
|
||||||
cursor = nord.aurora.nord15;
|
cursor = nord.aurora.nord15;
|
||||||
cursor_text_color = nord.polarNight.nord0;
|
cursor_text_color = nord.polarNight.nord0;
|
||||||
|
|
||||||
# URL underline color when hovering with mouse
|
# URL underline color when hovering with mouse
|
||||||
url_color = nord.aurora.nord15;
|
url_color = nord.aurora.nord15;
|
||||||
|
|
||||||
# Kitty window border colors
|
# Kitty window border colors
|
||||||
active_border_color = nord.frost.nord10;
|
active_border_color = nord.frost.nord10;
|
||||||
inactive_border_color = nord.polarNight.nord1;
|
inactive_border_color = nord.polarNight.nord1;
|
||||||
bell_border_color = nord.aurora.nord13;
|
bell_border_color = nord.aurora.nord13;
|
||||||
|
|
||||||
# OS Window titlebar colors
|
# OS Window titlebar colors
|
||||||
wayland_titlebar_color = nord.polarNight.nord0;
|
wayland_titlebar_color = nord.polarNight.nord0;
|
||||||
macos_titlebar_color = nord.polarNight.nord0;
|
macos_titlebar_color = nord.polarNight.nord0;
|
||||||
|
|
||||||
# Tab bar colors
|
# Tab bar colors
|
||||||
active_tab_foreground = nord.polarNight.nord3;
|
active_tab_foreground = nord.polarNight.nord3;
|
||||||
active_tab_background = nord.aurora.nord15;
|
active_tab_background = nord.aurora.nord15;
|
||||||
inactive_tab_foreground = nord.snowStorm.nord6;
|
inactive_tab_foreground = nord.snowStorm.nord6;
|
||||||
inactive_tab_background = nord.polarNight.nord1;
|
inactive_tab_background = nord.polarNight.nord1;
|
||||||
tab_bar_background = nord.polarNight.nord3;
|
tab_bar_background = nord.polarNight.nord3;
|
||||||
|
|
||||||
# Colors for marks (marked text in the terminal)
|
# Colors for marks (marked text in the terminal)
|
||||||
mark1_foreground = nord.polarNight.nord0;
|
mark1_foreground = nord.polarNight.nord0;
|
||||||
@@ -86,11 +86,11 @@ in
|
|||||||
color11 = nord.aurora.nord13;
|
color11 = nord.aurora.nord13;
|
||||||
|
|
||||||
# blue
|
# blue
|
||||||
color4 = nord.frost.nord10;
|
color4 = nord.frost.nord10;
|
||||||
color12 = nord.frost.nord10;
|
color12 = nord.frost.nord10;
|
||||||
|
|
||||||
# magenta
|
# magenta
|
||||||
color5 = nord.aurora.nord15;
|
color5 = nord.aurora.nord15;
|
||||||
color13 = nord.aurora.nord15;
|
color13 = nord.aurora.nord15;
|
||||||
|
|
||||||
# cyan
|
# cyan
|
||||||
@@ -98,7 +98,7 @@ in
|
|||||||
color14 = nord.frost.nord8;
|
color14 = nord.frost.nord8;
|
||||||
|
|
||||||
# white
|
# white
|
||||||
color7 = nord.snowStorm.nord5;
|
color7 = nord.snowStorm.nord5;
|
||||||
color15 = nord.snowStorm.nord4;
|
color15 = nord.snowStorm.nord4;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -36,7 +36,8 @@
|
|||||||
"browser.newtabpage.activity-stream.topSitesRows" = 3; # Set number of rows for top sites on new tab page
|
"browser.newtabpage.activity-stream.topSitesRows" = 3; # Set number of rows for top sites on new tab page
|
||||||
"layout.css.light-dark.enabled" = true; # Enable light/dark theme support
|
"layout.css.light-dark.enabled" = true; # Enable light/dark theme support
|
||||||
"extensions.activeThemeID" = "default-theme@mozilla.org"; # Set active theme
|
"extensions.activeThemeID" = "default-theme@mozilla.org"; # Set active theme
|
||||||
"extensions.webextensions.uuids" = "{\"formautofill@mozilla.org\" =\"851c83b7-26d5-449c-8cc9-d8951a0ce78d\",\"pictureinpicture@mozilla.org\" =\"42fa2650-5134-4bef-bafa-b73f9ae51bad\",\"screenshots@mozilla.org\" =\"efd2b692-43c4-433a-aea5-0cb79f8312d4\",\"webcompat-reporter@mozilla.org\" =\"c43a6be2-fb56-4253-b384-ce8e09a89999\",\"webcompat@mozilla.org\" =\"e25fd1bb-7c53-413f-9528-bb922c322a56\",\"default-theme@mozilla.org\" =\"610b67c3-9145-46f7-814f-d8ee2cc8edff\",\"addons-search-detection@mozilla.com\:\"caedb3ca-5cf5-4e23-a251-d742f23e6fc8\",\"uBlock0@raymondhill.net\" =\"7e7d9fd9-12bf-42d3-9c7c-9ffd05420ec7\",\"78272b6fa58f4a1abaac99321d503a20@proton.me\" =\"7242a067-06d8-430b-94a3-00d264cdd57b\",\"addon@darkreader.org\" =\"2f02b112-6acd-4bdc-af2c-1432eb527339\",\"jid1-xUfzOsOFlzSOXg@jetpack\" =\"d0c72046-9903-4118-8160-a028840bf928\",\"chrome-gnome-shell@gnome.org\" =\"a1ab53e6-b765-4f25-8349-383cc04682a0\",\"user-agent-switcher@ninetailed.ninja\" =\"259d07cc-bb32-4ed5-b90f-6d73abdeb7bb\",\"firefoxdav@icloud.com\" =\"110e6e2c-18f8-461d-9f26-b8f04482b6f1\",\"ciscowebexstart1@cisco.com\" =\"a4062240-e73a-4353-bddb-d608d84881f7\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\" =\"9164e437-812b-4a07-8dfd-2fd73b39329b\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\" =\"648fc678-a6fb-47cd-9792-fb9520678c17\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\" =\"f0b43422-070e-466e-85c9-6543f209f075\",\"jid1-MnnxcxisBPnSXQ@jetpack\" =\"4c448202-c843-4cae-b5c3-d11f2da58fa3\",\"soundfixer@unrelenting.technology\" =\"59b35eb8-1c85-4919-a905-80d120993ddc\",\"floccus@handmadeideas.org\" =\"8ad2956c-8091-41af-a689-7d2108f5958d\",\"{79b9dbcf-cc5a-4cda-89ef-c4ab097eb074}\" =\"c2a223a7-32e0-4726-9f20-17236702b1f5\",\"linkgopher@oooninja.com\" =\"a257858c-0dce-415b-b123-6222876cf843\"}";
|
"extensions.webextensions.uuids" =
|
||||||
|
"{\"formautofill@mozilla.org\" =\"851c83b7-26d5-449c-8cc9-d8951a0ce78d\",\"pictureinpicture@mozilla.org\" =\"42fa2650-5134-4bef-bafa-b73f9ae51bad\",\"screenshots@mozilla.org\" =\"efd2b692-43c4-433a-aea5-0cb79f8312d4\",\"webcompat-reporter@mozilla.org\" =\"c43a6be2-fb56-4253-b384-ce8e09a89999\",\"webcompat@mozilla.org\" =\"e25fd1bb-7c53-413f-9528-bb922c322a56\",\"default-theme@mozilla.org\" =\"610b67c3-9145-46f7-814f-d8ee2cc8edff\",\"addons-search-detection@mozilla.com\:\"caedb3ca-5cf5-4e23-a251-d742f23e6fc8\",\"uBlock0@raymondhill.net\" =\"7e7d9fd9-12bf-42d3-9c7c-9ffd05420ec7\",\"78272b6fa58f4a1abaac99321d503a20@proton.me\" =\"7242a067-06d8-430b-94a3-00d264cdd57b\",\"addon@darkreader.org\" =\"2f02b112-6acd-4bdc-af2c-1432eb527339\",\"jid1-xUfzOsOFlzSOXg@jetpack\" =\"d0c72046-9903-4118-8160-a028840bf928\",\"chrome-gnome-shell@gnome.org\" =\"a1ab53e6-b765-4f25-8349-383cc04682a0\",\"user-agent-switcher@ninetailed.ninja\" =\"259d07cc-bb32-4ed5-b90f-6d73abdeb7bb\",\"firefoxdav@icloud.com\" =\"110e6e2c-18f8-461d-9f26-b8f04482b6f1\",\"ciscowebexstart1@cisco.com\" =\"a4062240-e73a-4353-bddb-d608d84881f7\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\" =\"9164e437-812b-4a07-8dfd-2fd73b39329b\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\" =\"648fc678-a6fb-47cd-9792-fb9520678c17\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\" =\"f0b43422-070e-466e-85c9-6543f209f075\",\"jid1-MnnxcxisBPnSXQ@jetpack\" =\"4c448202-c843-4cae-b5c3-d11f2da58fa3\",\"soundfixer@unrelenting.technology\" =\"59b35eb8-1c85-4919-a905-80d120993ddc\",\"floccus@handmadeideas.org\" =\"8ad2956c-8091-41af-a689-7d2108f5958d\",\"{79b9dbcf-cc5a-4cda-89ef-c4ab097eb074}\" =\"c2a223a7-32e0-4726-9f20-17236702b1f5\",\"linkgopher@oooninja.com\" =\"a257858c-0dce-415b-b123-6222876cf843\"}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.programs.nwg-dock;
|
cfg = config.mjallen.programs.nwg-dock;
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.programs.nwg-drawer;
|
cfg = config.mjallen.programs.nwg-drawer;
|
||||||
@@ -11,42 +16,42 @@ in
|
|||||||
home.packages = with pkgs; [ nwg-drawer ];
|
home.packages = with pkgs; [ nwg-drawer ];
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/nwg-drawer/drawer.css".text = ''
|
".config/nwg-drawer/drawer.css".text = ''
|
||||||
window {
|
window {
|
||||||
background-color: ${nord.polarNight.nord0}bf;
|
background-color: ${nord.polarNight.nord0}bf;
|
||||||
color: ${nord.snowStorm.nord5}00
|
color: ${nord.snowStorm.nord5}00
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search entry */
|
/* search entry */
|
||||||
entry {
|
entry {
|
||||||
background-color: ${nord.polarNight.nord1}0f
|
background-color: ${nord.polarNight.nord1}0f
|
||||||
}
|
}
|
||||||
|
|
||||||
button, image {
|
button, image {
|
||||||
background: none;
|
background: none;
|
||||||
border: none
|
border: none
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover {
|
button:hover {
|
||||||
background-color: ${nord.frost.nord10}1a
|
background-color: ${nord.frost.nord10}1a
|
||||||
}
|
}
|
||||||
|
|
||||||
/* in case you wanted to give category buttons a different look */
|
/* in case you wanted to give category buttons a different look */
|
||||||
#category-button {
|
#category-button {
|
||||||
margin: 0 10px 0 10px
|
margin: 0 10px 0 10px
|
||||||
}
|
}
|
||||||
|
|
||||||
#pinned-box {
|
#pinned-box {
|
||||||
padding-bottom: 5px;
|
padding-bottom: 5px;
|
||||||
border-bottom: 1px dotted ${nord.polarNight.nord3}
|
border-bottom: 1px dotted ${nord.polarNight.nord3}
|
||||||
}
|
}
|
||||||
|
|
||||||
#files-box {
|
#files-box {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px dotted ${nord.polarNight.nord3};
|
border: 1px dotted ${nord.polarNight.nord3};
|
||||||
border-radius: 15px
|
border-radius: 15px
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.programs.nwg-panel;
|
cfg = config.mjallen.programs.nwg-panel;
|
||||||
@@ -12,14 +12,14 @@ in
|
|||||||
|
|
||||||
'';
|
'';
|
||||||
".config/nwg-panel/preferred-apps.json".text = ''
|
".config/nwg-panel/preferred-apps.json".text = ''
|
||||||
{
|
{
|
||||||
"\\.pdf$": "${cfg.defaultApps.browser.pname}",
|
"\\.pdf$": "${cfg.defaultApps.browser.pname}",
|
||||||
"\\.svg$": "inkscape",
|
"\\.svg$": "inkscape",
|
||||||
"\\.(jpg|png|tiff|gif)$": "${cfg.defaultApps.imageViewer.pname}",
|
"\\.(jpg|png|tiff|gif)$": "${cfg.defaultApps.imageViewer.pname}",
|
||||||
"\\.(mp3|ogg|flac|wav|wma)$": "audacious",
|
"\\.(mp3|ogg|flac|wav|wma)$": "audacious",
|
||||||
"\\.(avi|mp4|mkv|mov|wav)$": "${cfg.defaultApps.video.pname}",
|
"\\.(avi|mp4|mkv|mov|wav)$": "${cfg.defaultApps.video.pname}",
|
||||||
"\\.(doc|docx|xls|xlsx)$": "${cfg.defaultApps.office.pname}"
|
"\\.(doc|docx|xls|xlsx)$": "${cfg.defaultApps.office.pname}"
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,14 +7,38 @@ with lib;
|
|||||||
defaultApps = mkOption {
|
defaultApps = mkOption {
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
browser = mkOption { type = types.package; default = pkgs.firefox; };
|
browser = mkOption {
|
||||||
editor = mkOption { type = types.package; default = pkgs.micro; };
|
type = types.package;
|
||||||
fileExplorer = mkOption { type = types.package; default = pkgs.nemo; };
|
default = pkgs.firefox;
|
||||||
visual = mkOption { type = types.package; default = pkgs.vscodium; };
|
};
|
||||||
terminal = mkOption { type = types.package; default = pkgs.kitty; };
|
editor = mkOption {
|
||||||
office = mkOption { type = types.package; default = pkgs.onlyoffice-bin_latest; };
|
type = types.package;
|
||||||
video = mkOption { type = types.package; default = pkgs.vlc; };
|
default = pkgs.micro;
|
||||||
imageViewer = mkOption { type = types.package; default = pkgs.gnome-photos; };
|
};
|
||||||
|
fileExplorer = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.nemo;
|
||||||
|
};
|
||||||
|
visual = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.vscodium;
|
||||||
|
};
|
||||||
|
terminal = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.kitty;
|
||||||
|
};
|
||||||
|
office = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.onlyoffice-bin_latest;
|
||||||
|
};
|
||||||
|
video = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.vlc;
|
||||||
|
};
|
||||||
|
imageViewer = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.gnome-photos;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
description = "Default applications used across the system.";
|
description = "Default applications used across the system.";
|
||||||
|
|||||||
@@ -234,10 +234,10 @@ in
|
|||||||
calendar = {
|
calendar = {
|
||||||
mode = "month";
|
mode = "month";
|
||||||
format = {
|
format = {
|
||||||
months = "<span color='${nord.frost.nord9}'><b>{}</b></span>";
|
months = "<span color='${nord.frost.nord9}'><b>{}</b></span>";
|
||||||
days = "<span color='${nord.frost.nord10}'><b>{}</b></span>";
|
days = "<span color='${nord.frost.nord10}'><b>{}</b></span>";
|
||||||
weekdays = "<span color='${nord.frost.nord8}'><b>{}</b></span>";
|
weekdays = "<span color='${nord.frost.nord8}'><b>{}</b></span>";
|
||||||
today = "<span color='${nord.aurora.nord14}'><b><u>{}</u></b></span>";
|
today = "<span color='${nord.aurora.nord14}'><b><u>{}</u></b></span>";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -247,8 +247,8 @@ in
|
|||||||
interval = 60;
|
interval = 60;
|
||||||
# statuses: 'Charging', 'Discharging'
|
# statuses: 'Charging', 'Discharging'
|
||||||
states = {
|
states = {
|
||||||
warning = 30;
|
warning = 30;
|
||||||
critical = 15;
|
critical = 15;
|
||||||
};
|
};
|
||||||
format = "{capacity}% {icon}";
|
format = "{capacity}% {icon}";
|
||||||
format-icons = {
|
format-icons = {
|
||||||
@@ -296,239 +296,241 @@ in
|
|||||||
# * { font-size: 13px; }
|
# * { font-size: 13px; }
|
||||||
# window.eDP-1 * { font-size: 10px; }
|
# window.eDP-1 * { font-size: 10px; }
|
||||||
|
|
||||||
style = ''
|
style =
|
||||||
.blink_me {
|
''
|
||||||
animation: blinker 1s linear infinite;
|
.blink_me {
|
||||||
}
|
animation: blinker 1s linear infinite;
|
||||||
|
|
||||||
@keyframes blinker {
|
|
||||||
50% {
|
|
||||||
color: ${nord.aurora.nord11};
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
@keyframes blinker {
|
||||||
font-family:
|
50% {
|
||||||
Jetbrains Mono Nerd Font,
|
color: ${nord.aurora.nord11};
|
||||||
monospace;
|
}
|
||||||
font-size: 14px;
|
}
|
||||||
min-height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#waybar {
|
* {
|
||||||
background: transparent;
|
font-family:
|
||||||
color: ${nord.snowStorm.nord6};
|
Jetbrains Mono Nerd Font,
|
||||||
margin: 5px 5px;
|
monospace;
|
||||||
}
|
font-size: 14px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces {
|
#waybar {
|
||||||
background-color: ${nord.polarNight.nord0};
|
background: transparent;
|
||||||
${defaultBorderRadius}
|
color: ${nord.snowStorm.nord6};
|
||||||
${defaultOpacity}
|
margin: 5px 5px;
|
||||||
${defaultCenterOptions}
|
}
|
||||||
margin-left: 0.6rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
#workspaces {
|
||||||
color: ${nord.frost.nord10};
|
background-color: ${nord.polarNight.nord0};
|
||||||
${defaultBorderRadius}
|
${defaultBorderRadius}
|
||||||
padding: 0.4rem;
|
${defaultOpacity}
|
||||||
}
|
${defaultCenterOptions}
|
||||||
|
margin-left: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces button.active {
|
#workspaces button {
|
||||||
color: ${nord.frost.nord8};
|
color: ${nord.frost.nord10};
|
||||||
${defaultBorderRadius}
|
${defaultBorderRadius}
|
||||||
}
|
padding: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces button:hover {
|
#workspaces button.active {
|
||||||
color: ${nord.frost.nord7};
|
color: ${nord.frost.nord8};
|
||||||
${defaultBorderRadius}
|
${defaultBorderRadius}
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.focused {
|
#workspaces button:hover {
|
||||||
color: ${nord.snowStorm.nord6};
|
color: ${nord.frost.nord7};
|
||||||
background: ${nord.aurora.nord13};
|
${defaultBorderRadius}
|
||||||
${defaultBorderRadius}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
#workspaces button.focused {
|
||||||
color: ${nord.polarNight.nord0};
|
color: ${nord.snowStorm.nord6};
|
||||||
background: ${nord.snowStorm.nord6};
|
background: ${nord.aurora.nord13};
|
||||||
${defaultBorderRadius}
|
${defaultBorderRadius}
|
||||||
}
|
}
|
||||||
|
|
||||||
#tooltip {
|
#workspaces button.urgent {
|
||||||
background: ${nord.polarNight.nord0};
|
color: ${nord.polarNight.nord0};
|
||||||
border-color: ${nord.polarNight.nord0};
|
background: ${nord.snowStorm.nord6};
|
||||||
${defaultBorderRadius}
|
${defaultBorderRadius}
|
||||||
border-width: 1rem;
|
}
|
||||||
border-style: solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
#tooltip {
|
||||||
color: ${nord.aurora.nord15};
|
background: ${nord.polarNight.nord0};
|
||||||
background-color: ${nord.polarNight.nord0};
|
border-color: ${nord.polarNight.nord0};
|
||||||
${defaultOpacity}
|
${defaultBorderRadius}
|
||||||
${defaultBorderRadius}
|
border-width: 1rem;
|
||||||
${defaultCenterOptions}
|
border-style: solid;
|
||||||
margin-left: 4rem;
|
}
|
||||||
margin-right: 400rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make window module transparent when no windows present */
|
#window {
|
||||||
#window.empty {
|
color: ${nord.aurora.nord15};
|
||||||
background-color: transparent;
|
background-color: ${nord.polarNight.nord0};
|
||||||
}
|
${defaultOpacity}
|
||||||
|
${defaultBorderRadius}
|
||||||
|
${defaultCenterOptions}
|
||||||
|
margin-left: 4rem;
|
||||||
|
margin-right: 400rem;
|
||||||
|
}
|
||||||
|
|
||||||
#custom-weather {
|
/* make window module transparent when no windows present */
|
||||||
color: ${nord.frost.nord10};
|
#window.empty {
|
||||||
background-color: ${nord.polarNight.nord0};
|
background-color: transparent;
|
||||||
${defaultOpacity}
|
}
|
||||||
${borderRight}
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery {
|
#custom-weather {
|
||||||
color: ${nord.aurora.nord15};
|
color: ${nord.frost.nord10};
|
||||||
background-color: ${nord.polarNight.nord0};
|
background-color: ${nord.polarNight.nord0};
|
||||||
${defaultOpacity}
|
${defaultOpacity}
|
||||||
${defaultCenterOptions}
|
${borderRight}
|
||||||
border-radius: 0;
|
}
|
||||||
min-width: 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
#battery {
|
||||||
color: ${nord.frost.nord9};
|
color: ${nord.aurora.nord15};
|
||||||
background-color: ${nord.polarNight.nord0};
|
background-color: ${nord.polarNight.nord0};
|
||||||
${defaultOpacity}
|
${defaultOpacity}
|
||||||
${borderLeft}
|
${defaultCenterOptions}
|
||||||
}
|
border-radius: 0;
|
||||||
|
min-width: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
/* ------------- */
|
#clock {
|
||||||
|
color: ${nord.frost.nord9};
|
||||||
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${borderLeft}
|
||||||
|
}
|
||||||
|
|
||||||
#idle_inhibitor {
|
/* ------------- */
|
||||||
color: ${nord.frost.nord10};
|
|
||||||
background-color: ${nord.polarNight.nord0};
|
|
||||||
${defaultOpacity}
|
|
||||||
${borderRight}
|
|
||||||
padding-right: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#idle_inhibitor:hover {
|
#idle_inhibitor {
|
||||||
background: ${nord.polarNight.nord3};
|
color: ${nord.frost.nord10};
|
||||||
}
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${borderRight}
|
||||||
|
padding-right: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
#network {
|
#idle_inhibitor:hover {
|
||||||
color: ${nord.aurora.nord15};
|
background: ${nord.polarNight.nord3};
|
||||||
background-color: ${nord.polarNight.nord0};
|
}
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
border-radius: 0;
|
|
||||||
padding-right: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network:hover {
|
#network {
|
||||||
background: ${nord.polarNight.nord3};
|
color: ${nord.aurora.nord15};
|
||||||
}
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${defaultCenterOptions}
|
||||||
|
border-radius: 0;
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
#bluetooth {
|
#network:hover {
|
||||||
color: ${nord.frost.nord9};
|
background: ${nord.polarNight.nord3};
|
||||||
background-color: ${nord.polarNight.nord0};
|
}
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bluetooth:hover {
|
#bluetooth {
|
||||||
background: ${nord.polarNight.nord3};
|
color: ${nord.frost.nord9};
|
||||||
}
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${defaultCenterOptions}
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#wireplumber.source {
|
#bluetooth:hover {
|
||||||
color: ${nord.frost.nord8};
|
background: ${nord.polarNight.nord3};
|
||||||
background-color: ${nord.polarNight.nord0};
|
}
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#wireplumber.source.muted {
|
#wireplumber.source {
|
||||||
animation-name: blinker;
|
color: ${nord.frost.nord8};
|
||||||
animation-duration: 2s;
|
background-color: ${nord.polarNight.nord0};
|
||||||
animation-timing-function: linear;
|
${defaultOpacity}
|
||||||
animation-iteration-count: infinite;
|
${defaultCenterOptions}
|
||||||
padding-right: 1rem;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#wireplumber.source:hover {
|
#wireplumber.source.muted {
|
||||||
background: ${nord.polarNight.nord3};
|
animation-name: blinker;
|
||||||
}
|
animation-duration: 2s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
padding-right: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
#wireplumber.sink {
|
#wireplumber.source:hover {
|
||||||
color: ${nord.frost.nord7};
|
background: ${nord.polarNight.nord3};
|
||||||
background-color: ${nord.polarNight.nord0};
|
}
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#wireplumber.sink.muted {
|
#wireplumber.sink {
|
||||||
animation-name: blinker;
|
color: ${nord.frost.nord7};
|
||||||
animation-duration: 5s;
|
background-color: ${nord.polarNight.nord0};
|
||||||
animation-timing-function: linear;
|
${defaultOpacity}
|
||||||
animation-iteration-count: infinite;
|
${defaultCenterOptions}
|
||||||
}
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#wireplumber.sink:hover {
|
#wireplumber.sink.muted {
|
||||||
background: ${nord.polarNight.nord3};
|
animation-name: blinker;
|
||||||
}
|
animation-duration: 5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
}
|
||||||
|
|
||||||
#keyboard-state.numlock {
|
#wireplumber.sink:hover {
|
||||||
color: ${nord.frost.nord8};
|
background: ${nord.polarNight.nord3};
|
||||||
background-color: ${nord.polarNight.nord0};
|
}
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#keyboard-state.capslock {
|
#keyboard-state.numlock {
|
||||||
color: ${nord.frost.nord9};
|
color: ${nord.frost.nord8};
|
||||||
background-color: ${nord.polarNight.nord0};
|
background-color: ${nord.polarNight.nord0};
|
||||||
${defaultOpacity}
|
${defaultOpacity}
|
||||||
${defaultCenterOptions}
|
${defaultCenterOptions}
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#temperature.gpu {
|
#keyboard-state.capslock {
|
||||||
color: ${nord.frost.nord10};
|
color: ${nord.frost.nord9};
|
||||||
background-color: ${nord.polarNight.nord0};
|
background-color: ${nord.polarNight.nord0};
|
||||||
${defaultOpacity}
|
${defaultOpacity}
|
||||||
${defaultCenterOptions}
|
${defaultCenterOptions}
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#temperature.gpu:hover {
|
#temperature.gpu {
|
||||||
background: ${nord.polarNight.nord3};
|
color: ${nord.frost.nord10};
|
||||||
}
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${defaultCenterOptions}
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#temperature {
|
#temperature.gpu:hover {
|
||||||
color: ${nord.frost.nord9};
|
background: ${nord.polarNight.nord3};
|
||||||
background-color: ${nord.polarNight.nord0};
|
}
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
border-radius: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ------------- */
|
#temperature {
|
||||||
|
color: ${nord.frost.nord9};
|
||||||
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${defaultCenterOptions}
|
||||||
|
border-radius: 0
|
||||||
|
}
|
||||||
|
|
||||||
#tray {
|
/* ------------- */
|
||||||
background-color: ${nord.polarNight.nord0};
|
|
||||||
${defaultOpacity}
|
|
||||||
${defaultCenterOptions}
|
|
||||||
${defaultBorderRadius}
|
|
||||||
margin-right: 0.6rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ------------- */
|
#tray {
|
||||||
'' + cfg.extraModulesStyle or '''';
|
background-color: ${nord.polarNight.nord0};
|
||||||
|
${defaultOpacity}
|
||||||
|
${defaultCenterOptions}
|
||||||
|
${defaultBorderRadius}
|
||||||
|
margin-right: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------- */
|
||||||
|
''
|
||||||
|
+ cfg.extraModulesStyle or '''';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ in
|
|||||||
|
|
||||||
modules-right = mkOption {
|
modules-right = mkOption {
|
||||||
type = with types; listOf str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
networkInterface = mkOption {
|
networkInterface = mkOption {
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ config, lib, namespace, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.programs.waybar;
|
cfg = config.mjallen.programs.waybar;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.programs.waybar;
|
cfg = config.mjallen.programs.waybar;
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ let
|
|||||||
nord = import ../../desktop/theme/nord.nix;
|
nord = import ../../desktop/theme/nord.nix;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.wlogout = {
|
programs.wlogout = {
|
||||||
enable = false;
|
enable = false;
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.mjallen.sops;
|
cfg = config.mjallen.sops;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.nas-apps.actual;
|
cfg = config.nas-apps.actual;
|
||||||
@@ -24,7 +29,8 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = { lib, ... }:
|
config =
|
||||||
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
services.actual = {
|
services.actual = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -69,7 +75,7 @@ in
|
|||||||
ExecStart = lib.mkForce "${pkgs.actual-server}/bin/actual-server --config ${dataDir}/config.json";
|
ExecStart = lib.mkForce "${pkgs.actual-server}/bin/actual-server --config ${dataDir}/config.json";
|
||||||
WorkingDirectory = lib.mkForce dataDir;
|
WorkingDirectory = lib.mkForce dataDir;
|
||||||
StateDirectory = lib.mkForce dataDir;
|
StateDirectory = lib.mkForce dataDir;
|
||||||
StateDirectoryMode = lib.mkForce 0700;
|
StateDirectoryMode = lib.mkForce 700;
|
||||||
DynamicUser = lib.mkForce false;
|
DynamicUser = lib.mkForce false;
|
||||||
ProtectSystem = lib.mkForce null;
|
ProtectSystem = lib.mkForce null;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.share.hardware.amd;
|
cfg = config.share.hardware.amd;
|
||||||
pkgsVersion = pkgs;#.unstable;
|
pkgsVersion = pkgs; # .unstable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|||||||
@@ -40,9 +40,11 @@ in
|
|||||||
{
|
{
|
||||||
nixpkgs.config = {
|
nixpkgs.config = {
|
||||||
allowUnfree = lib.mkForce true;
|
allowUnfree = lib.mkForce true;
|
||||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
allowUnfreePredicate =
|
||||||
"unrar"
|
pkg:
|
||||||
];
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"unrar"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable radarr service
|
# Enable radarr service
|
||||||
@@ -207,7 +209,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
nat = {
|
nat = {
|
||||||
forwardPorts = [
|
forwardPorts = [
|
||||||
{
|
{
|
||||||
destination = "${cfg.localAddress}:${toString cfg.radarr.port}";
|
destination = "${cfg.localAddress}:${toString cfg.radarr.port}";
|
||||||
@@ -232,8 +234,22 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
firewall = {
|
firewall = {
|
||||||
allowedTCPPorts = [ cfg.radarr.port cfg.sonarr.port cfg.sabnzbd.port 8080 cfg.deluge.port cfg.jackett.port ];
|
allowedTCPPorts = [
|
||||||
allowedUDPPorts = [ cfg.radarr.port cfg.sonarr.port cfg.sabnzbd.port 8080 cfg.deluge.port cfg.jackett.port ];
|
cfg.radarr.port
|
||||||
|
cfg.sonarr.port
|
||||||
|
cfg.sabnzbd.port
|
||||||
|
8080
|
||||||
|
cfg.deluge.port
|
||||||
|
cfg.jackett.port
|
||||||
|
];
|
||||||
|
allowedUDPPorts = [
|
||||||
|
cfg.radarr.port
|
||||||
|
cfg.sonarr.port
|
||||||
|
cfg.sabnzbd.port
|
||||||
|
8080
|
||||||
|
cfg.deluge.port
|
||||||
|
cfg.jackett.port
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ pkgs, system, lib, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
isArm = ("aarch64-linux" == system);
|
isArm = ("aarch64-linux" == system);
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.bootloader.lanzaboote;
|
cfg = config.${namespace}.bootloader.lanzaboote;
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.nas-apps.crowdsec;
|
cfg = config.nas-apps.crowdsec;
|
||||||
@@ -7,23 +12,25 @@ in
|
|||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
services = {
|
services = {
|
||||||
crowdsec = let
|
crowdsec =
|
||||||
yaml = (pkgs.formats.yaml {}).generate;
|
let
|
||||||
acquisitions_file = yaml "acquisitions.yaml" {
|
yaml = (pkgs.formats.yaml { }).generate;
|
||||||
source = "journalctl";
|
acquisitions_file = yaml "acquisitions.yaml" {
|
||||||
journalctl_filter = ["_SYSTEMD_UNIT=sshd.service"];
|
source = "journalctl";
|
||||||
labels.type = "syslog";
|
journalctl_filter = [ "_SYSTEMD_UNIT=sshd.service" ];
|
||||||
};
|
labels.type = "syslog";
|
||||||
in {
|
};
|
||||||
enable = true;
|
in
|
||||||
enrollKeyFile = "${cfg.dataDir}/enroll.key";
|
{
|
||||||
settings = {
|
enable = true;
|
||||||
crowdsec_service.acquisition_path = acquisitions_file;
|
enrollKeyFile = "${cfg.dataDir}/enroll.key";
|
||||||
api.server = {
|
settings = {
|
||||||
listen_uri = "0.0.0.0:${toString cfg.port}";
|
crowdsec_service.acquisition_path = acquisitions_file;
|
||||||
|
api.server = {
|
||||||
|
listen_uri = "0.0.0.0:${toString cfg.port}";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
crowdsec-firewall-bouncer = {
|
crowdsec-firewall-bouncer = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -35,17 +42,19 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.crowdsec.serviceConfig = {
|
systemd.services.crowdsec.serviceConfig = {
|
||||||
ExecStartPre = let
|
ExecStartPre =
|
||||||
script = pkgs.writeScriptBin "register-bouncer" ''
|
let
|
||||||
#!${pkgs.runtimeShell}
|
script = pkgs.writeScriptBin "register-bouncer" ''
|
||||||
set -eu
|
#!${pkgs.runtimeShell}
|
||||||
set -o pipefail
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
if ! cscli bouncers list | grep -q "nas-bouncer"; then
|
if ! cscli bouncers list | grep -q "nas-bouncer"; then
|
||||||
cscli bouncers add "nas-bouncer" --key "${cfg.apiKey}"
|
cscli bouncers add "nas-bouncer" --key "${cfg.apiKey}"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
in ["${script}/bin/register-bouncer"];
|
in
|
||||||
|
[ "${script}/bin/register-bouncer" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.desktop.cosmic;
|
cfg = config.${namespace}.desktop.cosmic;
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.desktop.gnome;
|
cfg = config.${namespace}.desktop.gnome;
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ config, pkgs, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.desktop.hyprland;
|
cfg = config.${namespace}.desktop.hyprland;
|
||||||
|
|
||||||
@@ -26,7 +32,10 @@ in
|
|||||||
imports = [ ../../../home/desktop/hyprland/options.nix ];
|
imports = [ ../../../home/desktop/hyprland/options.nix ];
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ bing-wallpaper pkgs.jq ];
|
environment.systemPackages = [
|
||||||
|
bing-wallpaper
|
||||||
|
pkgs.jq
|
||||||
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
displayManager = {
|
displayManager = {
|
||||||
@@ -124,15 +133,15 @@ in
|
|||||||
|
|
||||||
# Timer configuration
|
# Timer configuration
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnCalendar = "daily"; # Check every day
|
OnCalendar = "daily"; # Check every day
|
||||||
Persistent = true; # Run immediately if last run was missed
|
Persistent = true; # Run immediately if last run was missed
|
||||||
Unit = "reload-bing-wallpaper.service";
|
Unit = "reload-bing-wallpaper.service";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
DefaultTimeoutStopSec=10s
|
DefaultTimeoutStopSec=10s
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
let
|
let
|
||||||
nord = import ./theme.nix;
|
nord = import ./theme.nix;
|
||||||
themeSize = "compact"; # [ "standard" "compact" ]
|
themeSize = "compact"; # [ "standard" "compact" ]
|
||||||
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||||
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
||||||
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
||||||
iconThemeVariant = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
iconThemeVariant = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||||
iconScheme = "nord"; # [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" ]
|
iconScheme = "nord"; # [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" ]
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, system, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
isArm = builtins.match "aarch64*" system != null;
|
isArm = builtins.match "aarch64*" system != null;
|
||||||
rootDisk = "/dev/nvme0n1";
|
rootDisk = "/dev/nvme0n1";
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ config, lib, system, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
system,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.hardware.disko;
|
cfg = config.${namespace}.hardware.disko;
|
||||||
isArm = builtins.match "aarch64*" system != null;
|
isArm = builtins.match "aarch64*" system != null;
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
{ lib, pkgs, ... }:
|
{ lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages =
|
||||||
font-awesome
|
with pkgs;
|
||||||
noto-fonts
|
[
|
||||||
noto-fonts-color-emoji
|
font-awesome
|
||||||
meslo-lgs-nf
|
noto-fonts
|
||||||
] ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
noto-fonts-color-emoji
|
||||||
|
meslo-lgs-nf
|
||||||
|
]
|
||||||
|
++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
||||||
|
|
||||||
fonts.fontconfig.defaultFonts = {
|
fonts.fontconfig.defaultFonts = {
|
||||||
emoji = [
|
emoji = [
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.share.gaming;
|
cfg = config.share.gaming;
|
||||||
pkgsVersion = pkgs; #.unstable;
|
pkgsVersion = pkgs; # .unstable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
@@ -17,7 +22,7 @@ in
|
|||||||
remotePlay.openFirewall = true;
|
remotePlay.openFirewall = true;
|
||||||
# Open ports in the firewall for Source Dedicated Server
|
# Open ports in the firewall for Source Dedicated Server
|
||||||
dedicatedServer.openFirewall = true;
|
dedicatedServer.openFirewall = true;
|
||||||
extraCompatPackages = with pkgsVersion; [ proton-ge-bin];
|
extraCompatPackages = with pkgsVersion; [ proton-ge-bin ];
|
||||||
gamescopeSession = {
|
gamescopeSession = {
|
||||||
enable = true;
|
enable = true;
|
||||||
args = [
|
args = [
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = { lib, ... }:
|
config =
|
||||||
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
services.gitea = {
|
services.gitea = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -71,7 +72,10 @@ in
|
|||||||
networking = {
|
networking = {
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [ cfg.httpPort cfg.sshPort ];
|
allowedTCPPorts = [
|
||||||
|
cfg.httpPort
|
||||||
|
cfg.sshPort
|
||||||
|
];
|
||||||
};
|
};
|
||||||
# Use systemd-resolved inside the container
|
# Use systemd-resolved inside the container
|
||||||
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
|
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
|
||||||
@@ -122,8 +126,14 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
firewall = {
|
firewall = {
|
||||||
allowedTCPPorts = [ cfg.httpPort cfg.sshPort ];
|
allowedTCPPorts = [
|
||||||
allowedUDPPorts = [ cfg.httpPort cfg.sshPort ];
|
cfg.httpPort
|
||||||
|
cfg.sshPort
|
||||||
|
];
|
||||||
|
allowedUDPPorts = [
|
||||||
|
cfg.httpPort
|
||||||
|
cfg.sshPort
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ lib, system, ... }:
|
{ lib, system, ... }:
|
||||||
let
|
let
|
||||||
isArm = "aarch64-linux" == system;
|
isArm = "aarch64-linux" == system;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|||||||
@@ -45,18 +45,23 @@ in
|
|||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
|
||||||
# Pass inputs so external modules can access them
|
# Pass inputs so external modules can access them
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Make ALL external HM modules available globally
|
# Make ALL external HM modules available globally
|
||||||
sharedModules = with inputs; [
|
sharedModules =
|
||||||
sops-nix.homeManagerModules.sops
|
with inputs;
|
||||||
# Add any other external HM modules here
|
[
|
||||||
] ++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ]);
|
sops-nix.homeManagerModules.sops
|
||||||
|
# Add any other external HM modules here
|
||||||
|
]
|
||||||
|
++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ]);
|
||||||
|
|
||||||
users.${config.${namespace}.user.name} = lib.mkAliasDefinitions options.${namespace}.home.extraOptions;
|
users.${config.${namespace}.user.name} =
|
||||||
|
lib.mkAliasDefinitions
|
||||||
|
options.${namespace}.home.extraOptions;
|
||||||
# users.admin = lib.mkAliasDefinitions options.${namespace}.home.extraOptions;
|
# users.admin = lib.mkAliasDefinitions options.${namespace}.home.extraOptions;
|
||||||
|
|
||||||
verbose = true;
|
verbose = true;
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.home-assistant;
|
cfg = config.${namespace}.services.home-assistant;
|
||||||
mosquittoPort = 1883;
|
mosquittoPort = 1883;
|
||||||
@@ -106,110 +112,111 @@ in
|
|||||||
zigbee2mqtt-networkmap
|
zigbee2mqtt-networkmap
|
||||||
];
|
];
|
||||||
# use postgresql instead of sqlite
|
# use postgresql instead of sqlite
|
||||||
extraPackages = ps: with ps; [
|
extraPackages =
|
||||||
# Core functionality
|
ps: with ps; [
|
||||||
aiohttp
|
# Core functionality
|
||||||
aiodns
|
aiohttp
|
||||||
paho-mqtt
|
aiodns
|
||||||
pillow
|
paho-mqtt
|
||||||
pytz
|
pillow
|
||||||
pyyaml
|
pytz
|
||||||
sqlalchemy
|
pyyaml
|
||||||
|
sqlalchemy
|
||||||
|
|
||||||
# Discovery & networking
|
# Discovery & networking
|
||||||
zeroconf
|
zeroconf
|
||||||
netdisco
|
netdisco
|
||||||
ifaddr
|
ifaddr
|
||||||
ssdp
|
ssdp
|
||||||
|
|
||||||
# Device protocols
|
# Device protocols
|
||||||
pyserial # Serial communications
|
pyserial # Serial communications
|
||||||
bluepy # Bluetooth LE
|
bluepy # Bluetooth LE
|
||||||
|
|
||||||
# Smart home ecosystems
|
# Smart home ecosystems
|
||||||
mutagen # Media file metadata
|
mutagen # Media file metadata
|
||||||
pysonos # Sonos
|
pysonos # Sonos
|
||||||
pywemo # Belkin WeMo
|
pywemo # Belkin WeMo
|
||||||
python-miio # Xiaomi devices
|
python-miio # Xiaomi devices
|
||||||
python-kasa # TP-Link
|
python-kasa # TP-Link
|
||||||
|
|
||||||
# Sensors & monitoring
|
# Sensors & monitoring
|
||||||
meteocalc # Weather calculations
|
meteocalc # Weather calculations
|
||||||
speedtest-cli # Internet speed
|
speedtest-cli # Internet speed
|
||||||
|
|
||||||
# Visualization & UI
|
# Visualization & UI
|
||||||
matplotlib # Graphing
|
matplotlib # Graphing
|
||||||
|
|
||||||
# Security
|
# Security
|
||||||
bcrypt
|
bcrypt
|
||||||
cryptography
|
cryptography
|
||||||
pyjwt
|
pyjwt
|
||||||
|
|
||||||
# Media
|
# Media
|
||||||
ha-ffmpeg # Camera streams
|
ha-ffmpeg # Camera streams
|
||||||
|
|
||||||
# Specialized integrations
|
# Specialized integrations
|
||||||
python-matter-server # Matter protocol
|
python-matter-server # Matter protocol
|
||||||
|
|
||||||
# System integrations
|
# System integrations
|
||||||
psutil # System monitoring
|
psutil # System monitoring
|
||||||
|
|
||||||
psycopg2
|
psycopg2
|
||||||
numpy
|
numpy
|
||||||
hassil
|
hassil
|
||||||
pyturbojpeg
|
pyturbojpeg
|
||||||
paho-mqtt
|
paho-mqtt
|
||||||
pychromecast
|
pychromecast
|
||||||
pyatv
|
pyatv
|
||||||
python-otbr-api
|
python-otbr-api
|
||||||
brother
|
brother
|
||||||
pyipp
|
pyipp
|
||||||
govee-ble
|
govee-ble
|
||||||
adguardhome
|
adguardhome
|
||||||
nextcord
|
nextcord
|
||||||
aiogithubapi
|
aiogithubapi
|
||||||
jellyfin-apiclient-python
|
jellyfin-apiclient-python
|
||||||
pylitterbot
|
pylitterbot
|
||||||
dateparser
|
dateparser
|
||||||
aionut
|
aionut
|
||||||
nextcloudmonitor
|
nextcloudmonitor
|
||||||
ollama
|
ollama
|
||||||
pynecil
|
pynecil
|
||||||
aiopyarr
|
aiopyarr
|
||||||
pysabnzbd
|
pysabnzbd
|
||||||
getmac
|
getmac
|
||||||
zigpy
|
zigpy
|
||||||
bellows # For Zigbee EmberZNet-based adapters
|
bellows # For Zigbee EmberZNet-based adapters
|
||||||
zigpy-xbee # For XBee adapters
|
zigpy-xbee # For XBee adapters
|
||||||
zigpy-deconz # For ConBee/RaspBee adapters
|
zigpy-deconz # For ConBee/RaspBee adapters
|
||||||
pyicloud # iCloud
|
pyicloud # iCloud
|
||||||
pyatv # Apple TV
|
pyatv # Apple TV
|
||||||
opencv-python
|
opencv-python
|
||||||
face-recognition
|
face-recognition
|
||||||
ibeacon-ble
|
ibeacon-ble
|
||||||
gehomesdk
|
gehomesdk
|
||||||
onedrive-personal-sdk
|
onedrive-personal-sdk
|
||||||
python-roborock
|
python-roborock
|
||||||
python-steam
|
python-steam
|
||||||
apple-weatherkit
|
apple-weatherkit
|
||||||
|
|
||||||
samsungctl
|
samsungctl
|
||||||
samsungtvws
|
samsungtvws
|
||||||
|
|
||||||
aiohomekit
|
aiohomekit
|
||||||
|
|
||||||
icmplib
|
icmplib
|
||||||
aioelectricitymaps
|
aioelectricitymaps
|
||||||
wyoming
|
wyoming
|
||||||
pysmartthings
|
pysmartthings
|
||||||
wakeonlan
|
wakeonlan
|
||||||
ephem
|
ephem
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
# Includes dependencies for a basic setup
|
# Includes dependencies for a basic setup
|
||||||
# https://www.home-assistant.io/integrations/default_config/
|
# https://www.home-assistant.io/integrations/default_config/
|
||||||
default_config = {};
|
default_config = { };
|
||||||
|
|
||||||
cloud = false;
|
cloud = false;
|
||||||
|
|
||||||
@@ -262,10 +269,12 @@ in
|
|||||||
postgresql = {
|
postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ensureDatabases = [ "hass" ];
|
ensureDatabases = [ "hass" ];
|
||||||
ensureUsers = [{
|
ensureUsers = [
|
||||||
name = "hass";
|
{
|
||||||
ensureDBOwnership = true;
|
name = "hass";
|
||||||
}];
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable and configure Mosquitto MQTT broker
|
# Enable and configure Mosquitto MQTT broker
|
||||||
@@ -303,7 +312,7 @@ in
|
|||||||
permit_join = true;
|
permit_join = true;
|
||||||
# Web interface
|
# Web interface
|
||||||
frontend = {
|
frontend = {
|
||||||
port = zigbee2mqttPort; # Choose an available port
|
port = zigbee2mqttPort; # Choose an available port
|
||||||
};
|
};
|
||||||
# MQTT configuration
|
# MQTT configuration
|
||||||
mqtt = {
|
mqtt = {
|
||||||
@@ -380,7 +389,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Enable required hardware support for the Zigbee adapter
|
# Enable required hardware support for the Zigbee adapter
|
||||||
hardware.bluetooth.enable = true; # Some adapters use Bluetooth
|
hardware.bluetooth.enable = true; # Some adapters use Bluetooth
|
||||||
|
|
||||||
# Ensure proper permissions for Zigbee USB devices
|
# Ensure proper permissions for Zigbee USB devices
|
||||||
# services.udev.extraRules = ''
|
# services.udev.extraRules = ''
|
||||||
@@ -396,8 +405,8 @@ in
|
|||||||
# '';
|
# '';
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
mosquitto # MQTT command-line tools
|
mosquitto # MQTT command-line tools
|
||||||
usbutils # For lsusb to help identify your adapter
|
usbutils # For lsusb to help identify your adapter
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.immich;
|
cfg = config.${namespace}.services.immich;
|
||||||
@@ -8,7 +13,7 @@ let
|
|||||||
dbPassword = config.sops.secrets."jallen-nas/immich/db-password".path;
|
dbPassword = config.sops.secrets."jallen-nas/immich/db-password".path;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# Enable immich service
|
# Enable immich service
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.jellyfin;
|
cfg = config.${namespace}.services.jellyfin;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.jellyfin = {
|
services.jellyfin = {
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.jellyseerr;
|
cfg = config.${namespace}.services.jellyseerr;
|
||||||
@@ -7,7 +12,7 @@ let
|
|||||||
dataDir = "/var/lib/private/jellyseerr";
|
dataDir = "/var/lib/private/jellyseerr";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
containers.jellyseerr = {
|
containers.jellyseerr = {
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.lubelogger;
|
cfg = config.${namespace}.services.lubelogger;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
virtualisation.oci-containers.containers.lubelogger = {
|
virtualisation.oci-containers.containers.lubelogger = {
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ in
|
|||||||
id = "Joey's Jungle 6G";
|
id = "Joey's Jungle 6G";
|
||||||
type = "wifi";
|
type = "wifi";
|
||||||
};
|
};
|
||||||
ipv4 = if (cfg.ipv4.method == "auto")
|
ipv4 =
|
||||||
then
|
if (cfg.ipv4.method == "auto") then
|
||||||
{
|
{
|
||||||
method = "auto";
|
method = "auto";
|
||||||
}
|
}
|
||||||
@@ -87,8 +87,8 @@ in
|
|||||||
id = "Joey's Jungle 5G";
|
id = "Joey's Jungle 5G";
|
||||||
type = "wifi";
|
type = "wifi";
|
||||||
};
|
};
|
||||||
ipv4 = if (cfg.ipv4.method == "auto")
|
ipv4 =
|
||||||
then
|
if (cfg.ipv4.method == "auto") then
|
||||||
{
|
{
|
||||||
method = "auto";
|
method = "auto";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,17 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.nextcloud;
|
cfg = config.${namespace}.services.nextcloud;
|
||||||
|
|
||||||
adminpass = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
|
adminpass = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
|
||||||
secretsFile = config.sops.secrets."jallen-nas/nextcloud/smtp_settings".path;
|
secretsFile = config.sops.secrets."jallen-nas/nextcloud/smtp_settings".path;
|
||||||
jwtSecretFile = config.sops.secrets."jallen-nas/onlyoffice-key".path;
|
jwtSecretFile = config.sops.secrets."jallen-nas/onlyoffice-key".path;
|
||||||
nextcloudUserId = config.users.users.nix-apps.uid;
|
nextcloudUserId = config.users.users.nix-apps.uid;
|
||||||
nextcloudGroupId = config.users.groups.jallen-nas.gid;
|
nextcloudGroupId = config.users.groups.jallen-nas.gid;
|
||||||
hostAddress = "10.0.1.3";
|
hostAddress = "10.0.1.3";
|
||||||
@@ -15,7 +21,7 @@ let
|
|||||||
onlyofficePortExt = 9943;
|
onlyofficePortExt = 9943;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
containers.nextcloud = {
|
containers.nextcloud = {
|
||||||
@@ -60,12 +66,17 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config =
|
||||||
{ pkgs, lib, namespace, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
networking.extraHosts = ''
|
networking.extraHosts = ''
|
||||||
${hostAddress} host.containers protonmail-bridge
|
${hostAddress} host.containers protonmail-bridge
|
||||||
'';
|
'';
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ in
|
|||||||
hardware = {
|
hardware = {
|
||||||
# Nvidia
|
# Nvidia
|
||||||
nvidia = {
|
nvidia = {
|
||||||
package =
|
package =
|
||||||
if cfg.enableBeta then
|
if cfg.enableBeta then
|
||||||
config.boot.kernelPackages.nvidiaPackages.beta
|
config.boot.kernelPackages.nvidiaPackages.beta
|
||||||
else
|
else
|
||||||
config.boot.kernelPackages.nvidiaPackages.latest;
|
config.boot.kernelPackages.nvidiaPackages.latest;
|
||||||
|
|
||||||
# Modesetting is required.
|
# Modesetting is required.
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.ollama;
|
cfg = config.${namespace}.services.ollama;
|
||||||
|
|
||||||
llamaPackage = pkgs.llama-cpp.overrideAttrs (old: {
|
llamaPackage = pkgs.llama-cpp.overrideAttrs (old: {
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
owner = "ggml-org";
|
owner = "ggml-org";
|
||||||
repo = "llama.cpp";
|
repo = "llama.cpp";
|
||||||
rev = "b4920";
|
rev = "b4920";
|
||||||
sha256 = "sha256-SnQIeY74JpAPRMxWcpklDH5D4CQvAgi0GYx5+ECk2J4=";
|
sha256 = "sha256-SnQIeY74JpAPRMxWcpklDH5D4CQvAgi0GYx5+ECk2J4=";
|
||||||
};
|
};
|
||||||
# Optionally override other attributes if you need to
|
# Optionally override other attributes if you need to
|
||||||
@@ -16,7 +22,7 @@ let
|
|||||||
});
|
});
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.ollama = {
|
services.ollama = {
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.paperless;
|
cfg = config.${namespace}.services.paperless;
|
||||||
@@ -10,7 +15,7 @@ let
|
|||||||
paperlessPkg = pkgs.paperless-ngx;
|
paperlessPkg = pkgs.paperless-ngx;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
containers.paperless = {
|
containers.paperless = {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
# Enable Avahi for .local hostname resolution
|
# Enable Avahi for .local hostname resolution
|
||||||
avahi = {
|
avahi = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
nssmdns4 = lib.mkDefault true; # For modern systems, use nssmdns4 instead of nssmdns
|
nssmdns4 = lib.mkDefault true; # For modern systems, use nssmdns4 instead of nssmdns
|
||||||
openFirewall = lib.mkDefault true;
|
openFirewall = lib.mkDefault true;
|
||||||
publish = {
|
publish = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.traefik;
|
cfg = config.${namespace}.services.traefik;
|
||||||
@@ -45,10 +50,10 @@ let
|
|||||||
metricsPort = 8082;
|
metricsPort = 8082;
|
||||||
|
|
||||||
forwardPorts = [
|
forwardPorts = [
|
||||||
httpPort
|
httpPort
|
||||||
httpsPort
|
httpsPort
|
||||||
traefikPort
|
traefikPort
|
||||||
metricsPort
|
metricsPort
|
||||||
];
|
];
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
@@ -57,7 +62,7 @@ let
|
|||||||
authentikAddress = "http://${serverIp}:9000/outpost.goauthentik.io/auth/traefik";
|
authentikAddress = "http://${serverIp}:9000/outpost.goauthentik.io/auth/traefik";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
sops = {
|
sops = {
|
||||||
@@ -76,7 +81,9 @@ in
|
|||||||
"traefik.env" = {
|
"traefik.env" = {
|
||||||
content = ''
|
content = ''
|
||||||
CLOUDFLARE_DNS_API_TOKEN = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-dns-api-token"}
|
CLOUDFLARE_DNS_API_TOKEN = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-dns-api-token"}
|
||||||
CLOUDFLARE_ZONE_API_TOKEN = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-zone-api-token"}
|
CLOUDFLARE_ZONE_API_TOKEN = ${
|
||||||
|
config.sops.placeholder."jallen-nas/traefik/cloudflare-zone-api-token"
|
||||||
|
}
|
||||||
CLOUDFLARE_API_KEY = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-api-key"}
|
CLOUDFLARE_API_KEY = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-api-key"}
|
||||||
CLOUDFLARE_EMAIL = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-email"}
|
CLOUDFLARE_EMAIL = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-email"}
|
||||||
'';
|
'';
|
||||||
@@ -95,7 +102,7 @@ in
|
|||||||
services.traefik = {
|
services.traefik = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dataDir = dataDir;
|
dataDir = dataDir;
|
||||||
group = "jallen-nas";#group;
|
group = "jallen-nas"; # group;
|
||||||
environmentFiles = [ "${config.services.traefik.dataDir}/traefik.env" ]; # todo: sops
|
environmentFiles = [ "${config.services.traefik.dataDir}/traefik.env" ]; # todo: sops
|
||||||
|
|
||||||
staticConfigOptions = {
|
staticConfigOptions = {
|
||||||
@@ -129,7 +136,12 @@ in
|
|||||||
entryPoint = "metrics";
|
entryPoint = "metrics";
|
||||||
addEntryPointsLabels = true;
|
addEntryPointsLabels = true;
|
||||||
addServicesLabels = true;
|
addServicesLabels = true;
|
||||||
buckets = [0.1 0.3 1.2 5.0]; # Response time buckets
|
buckets = [
|
||||||
|
0.1
|
||||||
|
0.3
|
||||||
|
1.2
|
||||||
|
5.0
|
||||||
|
]; # Response time buckets
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -215,8 +227,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
internal-ipallowlist =
|
internal-ipallowlist = {
|
||||||
{
|
|
||||||
ipAllowList = {
|
ipAllowList = {
|
||||||
sourceRange = [
|
sourceRange = [
|
||||||
"127.0.0.1/32"
|
"127.0.0.1/32"
|
||||||
@@ -305,7 +316,10 @@ in
|
|||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "HostRegexp(`{subdomain:[a-z]+}.mjallen.dev`) && PathPrefix(`/outpost.goauthentik.io/`)";
|
rule = "HostRegexp(`{subdomain:[a-z]+}.mjallen.dev`) && PathPrefix(`/outpost.goauthentik.io/`)";
|
||||||
service = "auth";
|
service = "auth";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
priority = 15;
|
priority = 15;
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
@@ -314,21 +328,30 @@ in
|
|||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`actual.${domain}`)";
|
rule = "Host(`actual.${domain}`)";
|
||||||
service = "actual";
|
service = "actual";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
authentik = {
|
authentik = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`authentik.${domain}`)";
|
rule = "Host(`authentik.${domain}`)";
|
||||||
service = "authentik";
|
service = "authentik";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
cache = {
|
cache = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`cache.${domain}`)";
|
rule = "Host(`cache.${domain}`)";
|
||||||
service = "cache";
|
service = "cache";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
priority = 10;
|
priority = 10;
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
@@ -336,21 +359,31 @@ in
|
|||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`cloud.${domain}`)";
|
rule = "Host(`cloud.${domain}`)";
|
||||||
service = "cloud";
|
service = "cloud";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
gitea = {
|
gitea = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`gitea.${domain}`)";
|
rule = "Host(`gitea.${domain}`)";
|
||||||
service = "gitea";
|
service = "gitea";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
hass = {
|
hass = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`hass.${domain}`)";
|
rule = "Host(`hass.${domain}`)";
|
||||||
service = "hass";
|
service = "hass";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" "authentik" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
"authentik"
|
||||||
|
];
|
||||||
priority = 10;
|
priority = 10;
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
@@ -358,35 +391,51 @@ in
|
|||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`immich.${domain}`)";
|
rule = "Host(`immich.${domain}`)";
|
||||||
service = "immich";
|
service = "immich";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`jellyfin.${domain}`)";
|
rule = "Host(`jellyfin.${domain}`)";
|
||||||
service = "jellyfin";
|
service = "jellyfin";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
jellyseerr = {
|
jellyseerr = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`jellyseerr.${domain}`)";
|
rule = "Host(`jellyseerr.${domain}`)";
|
||||||
service = "jellyseerr";
|
service = "jellyseerr";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
lubelogger = {
|
lubelogger = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`lubelogger.${domain}`)";
|
rule = "Host(`lubelogger.${domain}`)";
|
||||||
service = "lubelogger";
|
service = "lubelogger";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
onlyoffice = {
|
onlyoffice = {
|
||||||
entryPoints = [ "websecure" ];
|
entryPoints = [ "websecure" ];
|
||||||
rule = "Host(`office.${domain}`)";
|
rule = "Host(`office.${domain}`)";
|
||||||
service = "onlyoffice";
|
service = "onlyoffice";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" "onlyoffice-websocket" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
"onlyoffice-websocket"
|
||||||
|
];
|
||||||
tls.certResolver = "letsencrypt";
|
tls.certResolver = "letsencrypt";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
{ config, lib, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.${namespace}.services.wyoming;
|
cfg = config.${namespace}.services.wyoming;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./options.nix ];
|
imports = [ ./options.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.wyoming = {
|
services.wyoming = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
final: prev: {
|
final: prev: {
|
||||||
waybar = prev.waybar.overrideAttrs (old: {
|
waybar = prev.waybar.overrideAttrs (old: {
|
||||||
mesonFlags = (old.mesonFlags or []) ++ [ "-Dexperimental=true" ];
|
mesonFlags = (old.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ buildHomeAssistantComponent, pkgs, namespace, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "adamoutler";
|
owner = "adamoutler";
|
||||||
domain = "anycubic_wifi";
|
domain = "anycubic_wifi";
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ buildHomeAssistantComponent, python3Packages, fetchFromGitHub, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
python3Packages,
|
||||||
|
fetchFromGitHub,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "greghesp";
|
owner = "greghesp";
|
||||||
domain = "bambu_lab";
|
domain = "bambu_lab";
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ buildHomeAssistantComponent, fetchFromGitHub, python3Packages, namespace, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
fetchFromGitHub,
|
||||||
|
python3Packages,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "simbaja";
|
owner = "simbaja";
|
||||||
domain = "ge_home";
|
domain = "ge_home";
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ buildHomeAssistantComponent, fetchFromGitHub, python3Packages, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
fetchFromGitHub,
|
||||||
|
python3Packages,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "gcobb321";
|
owner = "gcobb321";
|
||||||
domain = "icloud3";
|
domain = "icloud3";
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ buildHomeAssistantComponent, fetchFromGitHub, python3Packages, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
fetchFromGitHub,
|
||||||
|
python3Packages,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "moralmunky";
|
owner = "moralmunky";
|
||||||
domain = "mail_and_packages";
|
domain = "mail_and_packages";
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ buildHomeAssistantComponent, fetchFromGitHub, pkgs, namespace, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
fetchFromGitHub,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "Wouter0100";
|
owner = "Wouter0100";
|
||||||
domain = "nanokvm";
|
domain = "nanokvm";
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ buildHomeAssistantComponent, fetchFromGitHub, pkgs, namespace, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
fetchFromGitHub,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "vaparr";
|
owner = "vaparr";
|
||||||
domain = "overseerr";
|
domain = "overseerr";
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ buildHomeAssistantComponent, fetchFromGitHub, pkgs, namespace, ... }:
|
{
|
||||||
|
buildHomeAssistantComponent,
|
||||||
|
fetchFromGitHub,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
buildHomeAssistantComponent rec {
|
buildHomeAssistantComponent rec {
|
||||||
owner = "SecKatie";
|
owner = "SecKatie";
|
||||||
domain = "wyzeapi";
|
domain = "wyzeapi";
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ python3Packages.buildPythonPackage rec {
|
|||||||
|
|
||||||
# do not run tests
|
# do not run tests
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
nativeBuildInputs = with python3Packages; [ poetry-core requests-cache ];
|
nativeBuildInputs = with python3Packages; [
|
||||||
|
poetry-core
|
||||||
|
requests-cache
|
||||||
|
];
|
||||||
dependencies = with python3Packages; [
|
dependencies = with python3Packages; [
|
||||||
requests-cache
|
requests-cache
|
||||||
pydantic
|
pydantic
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ lib, python3Packages, fetchFromGitHub, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
python3Packages,
|
||||||
|
fetchFromGitHub,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
python3Packages.buildPythonPackage rec {
|
python3Packages.buildPythonPackage rec {
|
||||||
pname = "magicattr";
|
pname = "magicattr";
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, inputs, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./nix.nix
|
./nix.nix
|
||||||
|
|||||||
@@ -19,6 +19,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
zsh.enable = true; # default shell on catalina
|
zsh.enable = true; # default shell on catalina
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,6 @@ in
|
|||||||
"name:steam, monitor:${display.input}, default:false, special, class:(.*[Ss]team.*)"
|
"name:steam, monitor:${display.input}, default:false, special, class:(.*[Ss]team.*)"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
windowRule = [
|
windowRule = [
|
||||||
"size 2160 3356, tag:horizonrdp"
|
"size 2160 3356, tag:horizonrdp"
|
||||||
];
|
];
|
||||||
@@ -78,7 +77,7 @@ in
|
|||||||
"lp"
|
"lp"
|
||||||
"video"
|
"video"
|
||||||
"i2c"
|
"i2c"
|
||||||
]; # Enable ‘sudo’ for the user.
|
]; # Enable ‘sudo’ for the user.
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
|
|||||||
@@ -4,61 +4,90 @@
|
|||||||
{ lib, modulesPath, ... }:
|
{ lib, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "uas" "sdhci_pci" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"uas"
|
||||||
|
"sdhci_pci"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ ];
|
boot.kernelModules = [ ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "none";
|
device = "none";
|
||||||
fsType = "tmpfs";
|
fsType = "tmpfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/root" =
|
fileSystems."/root" = {
|
||||||
{ device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "compress=zstd" "noatime" "subvol=root" ];
|
options = [
|
||||||
};
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
"subvol=root"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/etc" =
|
fileSystems."/etc" = {
|
||||||
{ device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "compress=zstd" "noatime" "subvol=etc" ];
|
options = [
|
||||||
};
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
"subvol=etc"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/tmp" =
|
fileSystems."/tmp" = {
|
||||||
{ device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "compress=zstd" "noatime" "subvol=tmp" ];
|
options = [
|
||||||
};
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
"subvol=tmp"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/nix" =
|
fileSystems."/nix" = {
|
||||||
{ device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "compress=zstd" "noatime" "subvol=nix" ];
|
options = [
|
||||||
};
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
"subvol=nix"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/var/log" =
|
fileSystems."/var/log" = {
|
||||||
{ device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "compress=zstd" "noatime" "subvol=log" ];
|
options = [
|
||||||
};
|
"compress=zstd"
|
||||||
|
"noatime"
|
||||||
|
"subvol=log"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{ device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "compress=zstd" "subvol=home" ];
|
options = [
|
||||||
};
|
"compress=zstd"
|
||||||
|
"subvol=home"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/23FA-AD3E";
|
device = "/dev/disk/by-uuid/23FA-AD3E";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
};
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# swapDevices = [
|
# swapDevices = [
|
||||||
# {
|
# {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
General = {
|
General = {
|
||||||
EnableNetworkConfiguration = true;
|
EnableNetworkConfiguration = true;
|
||||||
};
|
};
|
||||||
Rank = {
|
Rank = {
|
||||||
BandModifier2_4GHz = 1.0;
|
BandModifier2_4GHz = 1.0;
|
||||||
|
|||||||
@@ -93,9 +93,9 @@
|
|||||||
"`" = "A-f6";
|
"`" = "A-f6";
|
||||||
|
|
||||||
# App shortcuts
|
# App shortcuts
|
||||||
c = "C-insert"; # Copy
|
c = "C-insert"; # Copy
|
||||||
v = "S-insert"; # Paste
|
v = "S-insert"; # Paste
|
||||||
x = "S-delete"; # Cut
|
x = "S-delete"; # Cut
|
||||||
|
|
||||||
"1" = "A-1";
|
"1" = "A-1";
|
||||||
"2" = "A-2";
|
"2" = "A-2";
|
||||||
|
|||||||
@@ -21,18 +21,25 @@
|
|||||||
# # cp -r ${uefi_pi4}/share/uefi_rpi4/* /boot/firmware/
|
# # cp -r ${uefi_pi4}/share/uefi_rpi4/* /boot/firmware/
|
||||||
# # '';
|
# # '';
|
||||||
# }
|
# }
|
||||||
{ config, pkgs, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
kernelBundle = pkgs.linuxAndFirmware.latest;
|
kernelBundle = pkgs.linuxAndFirmware.latest;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
system.nixos.tags = let
|
system.nixos.tags =
|
||||||
cfg = config.boot.loader.raspberry-pi;
|
let
|
||||||
in [
|
cfg = config.boot.loader.raspberry-pi;
|
||||||
"raspberry-pi-${cfg.variant}"
|
in
|
||||||
cfg.bootloader
|
[
|
||||||
config.boot.kernelPackages.kernel.version
|
"raspberry-pi-${cfg.variant}"
|
||||||
];
|
cfg.bootloader
|
||||||
|
config.boot.kernelPackages.kernel.version
|
||||||
|
];
|
||||||
|
|
||||||
boot = lib.mkForce {
|
boot = lib.mkForce {
|
||||||
loader.raspberry-pi = {
|
loader.raspberry-pi = {
|
||||||
@@ -43,7 +50,8 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
hardware.raspberry-pi.config = {
|
hardware.raspberry-pi.config = {
|
||||||
all = { # [all] conditional filter, https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters
|
all = {
|
||||||
|
# [all] conditional filter, https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters
|
||||||
|
|
||||||
base-dt-params = {
|
base-dt-params = {
|
||||||
i2c_arm = {
|
i2c_arm = {
|
||||||
|
|||||||
@@ -2,7 +2,13 @@
|
|||||||
# your system. Help is available in the configuration.nix(5) man page, on
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
{ config, lib, pkgs, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
user = "matt";
|
user = "matt";
|
||||||
# password = config.sops.secrets."pi4/matt-password".path;
|
# password = config.sops.secrets."pi4/matt-password".path;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ in
|
|||||||
settings.connectivity.uri = lib.mkDefault "http://nmcheck.gnome.org/check_network_status.txt";
|
settings.connectivity.uri = lib.mkDefault "http://nmcheck.gnome.org/check_network_status.txt";
|
||||||
ensureProfiles = {
|
ensureProfiles = {
|
||||||
environmentFiles = [
|
environmentFiles = [
|
||||||
config.sops.secrets.wifi.path
|
config.sops.secrets.wifi.path
|
||||||
];
|
];
|
||||||
|
|
||||||
profiles = {
|
profiles = {
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ in
|
|||||||
{
|
{
|
||||||
sops = {
|
sops = {
|
||||||
defaultSopsFile = lib.mkForce ../../../secrets/pi4-secrets.yaml;
|
defaultSopsFile = lib.mkForce ../../../secrets/pi4-secrets.yaml;
|
||||||
# age = {
|
# age = {
|
||||||
# generateKey = true;
|
# generateKey = true;
|
||||||
# sshKeyPaths = [ "/etc/ssd/ssh_host_ed25519_key" ];
|
# sshKeyPaths = [ "/etc/ssd/ssh_host_ed25519_key" ];
|
||||||
# };
|
# };
|
||||||
age.keyFile = "/home/matt/.config/sops/age/keys.txt";
|
age.keyFile = "/home/matt/.config/sops/age/keys.txt";
|
||||||
validateSopsFiles = false;
|
validateSopsFiles = false;
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
hardware.raspberry-pi.config = {
|
hardware.raspberry-pi.config = {
|
||||||
all = { # [all] conditional filter, https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters
|
all = {
|
||||||
|
# [all] conditional filter, https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
# https://www.raspberrypi.com/documentation/computers/config_txt.html#enable_uart
|
# https://www.raspberrypi.com/documentation/computers/config_txt.html#enable_uart
|
||||||
|
|||||||
@@ -2,7 +2,13 @@
|
|||||||
# your system. Help is available in the configuration.nix(5) man page, on
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
{ config, lib, pkgs, namespace, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
user = "matt";
|
user = "matt";
|
||||||
password = config.sops.secrets."pi5/matt-password".path;
|
password = config.sops.secrets."pi5/matt-password".path;
|
||||||
@@ -53,13 +59,15 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
system.nixos.tags = let
|
system.nixos.tags =
|
||||||
cfg = config.boot.loader.raspberry-pi;
|
let
|
||||||
in [
|
cfg = config.boot.loader.raspberry-pi;
|
||||||
"raspberry-pi-${cfg.variant}"
|
in
|
||||||
cfg.bootloader
|
[
|
||||||
config.boot.kernelPackages.kernel.version
|
"raspberry-pi-${cfg.variant}"
|
||||||
];
|
cfg.bootloader
|
||||||
|
config.boot.kernelPackages.kernel.version
|
||||||
|
];
|
||||||
|
|
||||||
systemd.services.btattach = {
|
systemd.services.btattach = {
|
||||||
before = [ "bluetooth.service" ];
|
before = [ "bluetooth.service" ];
|
||||||
@@ -90,7 +98,7 @@ in
|
|||||||
mutableUsers = false;
|
mutableUsers = false;
|
||||||
users."${user}" = {
|
users."${user}" = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
# hashedPasswordFile = password;
|
# hashedPasswordFile = password;
|
||||||
password = lib.mkForce "BogieDudie1";
|
password = lib.mkForce "BogieDudie1";
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
let
|
let
|
||||||
kernel = pkgs.linuxPackages_cachyos;
|
kernel = pkgs.linuxPackages_cachyos;
|
||||||
pkgsVersion = pkgs; #.unstable;
|
pkgsVersion = pkgs; # .unstable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Configure bootloader with lanzaboot and secureboot
|
# Configure bootloader with lanzaboot and secureboot
|
||||||
@@ -12,7 +12,7 @@ in
|
|||||||
"i2c-dev"
|
"i2c-dev"
|
||||||
"ddcci_backlight"
|
"ddcci_backlight"
|
||||||
];
|
];
|
||||||
extraModulePackages = [config.boot.kernelPackages.ddcci-driver];
|
extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ];
|
||||||
loader = {
|
loader = {
|
||||||
efi = {
|
efi = {
|
||||||
canTouchEfiVariables = true;
|
canTouchEfiVariables = true;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
pkgsVersion = pkgs; #.unstable;
|
pkgsVersion = pkgs; # .unstable;
|
||||||
environmentVariables = {
|
environmentVariables = {
|
||||||
STEAM_FORCE_DESKTOPUI_SCALING = "1.0";
|
STEAM_FORCE_DESKTOPUI_SCALING = "1.0";
|
||||||
GDK_SCALE = "1";
|
GDK_SCALE = "1";
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
{ # Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||||
# as well as the libraries available from your flake's inputs.
|
{
|
||||||
# lib,
|
# as well as the libraries available from your flake's inputs.
|
||||||
# # An instance of `pkgs` with your overlays and packages applied is also available.
|
# lib,
|
||||||
# pkgs,
|
# # An instance of `pkgs` with your overlays and packages applied is also available.
|
||||||
# # You also have access to your flake's inputs.
|
# pkgs,
|
||||||
# inputs,
|
# # You also have access to your flake's inputs.
|
||||||
|
# inputs,
|
||||||
|
|
||||||
# Additional metadata is provided by Snowfall Lib.
|
# Additional metadata is provided by Snowfall Lib.
|
||||||
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||||
# system, # The system architecture for this host (eg. `x86_64-linux`).
|
# system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||||
# target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
# target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||||
# format, # A normalized name for the system target (eg. `iso`).
|
# format, # A normalized name for the system target (eg. `iso`).
|
||||||
# virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
# virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||||
# systems, # An attribute map of your defined hosts.
|
# systems, # An attribute map of your defined hosts.
|
||||||
|
|
||||||
# All other arguments come from the system system.
|
# All other arguments come from the system system.
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
passwordFile = config.sops.secrets."desktop/matt_password".path;
|
passwordFile = config.sops.secrets."desktop/matt_password".path;
|
||||||
@@ -31,7 +32,6 @@ in
|
|||||||
./nix.nix
|
./nix.nix
|
||||||
./sops.nix
|
./sops.nix
|
||||||
|
|
||||||
|
|
||||||
./specialisations/hyprland
|
./specialisations/hyprland
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ let
|
|||||||
];
|
];
|
||||||
defaultLocalOptions = [
|
defaultLocalOptions = [
|
||||||
"compress=zstd"
|
"compress=zstd"
|
||||||
# "autodefrag"
|
# "autodefrag"
|
||||||
"nofail"
|
"nofail"
|
||||||
# "x-systemd.automount"
|
# "x-systemd.automount"
|
||||||
# "auto"
|
# "auto"
|
||||||
"rw"
|
"rw"
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -26,7 +26,12 @@ in
|
|||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
maxJobs = 10;
|
maxJobs = 10;
|
||||||
sshUser = "admin";
|
sshUser = "admin";
|
||||||
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
supportedFeatures = [
|
||||||
|
"nixos-test"
|
||||||
|
"benchmark"
|
||||||
|
"big-parallel"
|
||||||
|
"kvm"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
"`" = "A-f6";
|
"`" = "A-f6";
|
||||||
|
|
||||||
# App shortcuts
|
# App shortcuts
|
||||||
c = "C-insert"; # Copy
|
c = "C-insert"; # Copy
|
||||||
v = "S-insert"; # Paste
|
v = "S-insert"; # Paste
|
||||||
x = "S-delete"; # Cut
|
x = "S-delete"; # Cut
|
||||||
|
|
||||||
"1" = "A-1";
|
"1" = "A-1";
|
||||||
"2" = "A-2";
|
"2" = "A-2";
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ in
|
|||||||
tooltip = false;
|
tooltip = false;
|
||||||
exec = "waybar-hass --get_light light.living_room_lights";
|
exec = "waybar-hass --get_light light.living_room_lights";
|
||||||
interval = "once";
|
interval = "once";
|
||||||
format = "{text}";#"";
|
format = "{text}"; # "";
|
||||||
on-click = "waybar-hass --toggle_light light.living_room_lights";
|
on-click = "waybar-hass --toggle_light light.living_room_lights";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, namespace, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
namespace,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
passwordFile = config.sops.secrets."desktop/matt_password".path;
|
passwordFile = config.sops.secrets."desktop/matt_password".path;
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ let
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
'';
|
'';
|
||||||
pkgsVersion = pkgs; #.unstable;
|
pkgsVersion = pkgs; # .unstable;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
systemd = {
|
systemd = {
|
||||||
|
|||||||
@@ -23,7 +23,10 @@
|
|||||||
reverseProxy = {
|
reverseProxy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
host = "actual.mjallen.dev";
|
host = "actual.mjallen.dev";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -78,7 +81,10 @@
|
|||||||
reverseProxy = {
|
reverseProxy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
host = "gitea.mjallen.dev";
|
host = "gitea.mjallen.dev";
|
||||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
middlewares = [
|
||||||
|
"crowdsec"
|
||||||
|
"whitelist-geoblock"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,43 +4,48 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nas-apps = mkOption {
|
options.nas-apps = mkOption {
|
||||||
type = types.attrsOf (types.submodule ({ config, name, ... }: {
|
type = types.attrsOf (
|
||||||
options = {
|
types.submodule (
|
||||||
enable = mkOption {
|
{ config, name, ... }:
|
||||||
type = types.bool;
|
{
|
||||||
default = false;
|
options = {
|
||||||
};
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 80;
|
default = 80;
|
||||||
};
|
};
|
||||||
|
|
||||||
localAddress = mkOption {
|
localAddress = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "127.0.0.1";
|
default = "127.0.0.1";
|
||||||
};
|
};
|
||||||
|
|
||||||
dataDir = mkOption {
|
dataDir = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "";
|
default = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
reverseProxy = {
|
reverseProxy = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
|
};
|
||||||
|
host = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
middlewares = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
host = mkOption {
|
}
|
||||||
type = types.str;
|
)
|
||||||
default = "";
|
);
|
||||||
};
|
|
||||||
middlewares = mkOption {
|
|
||||||
type = with types; listOf str;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}));
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,7 +207,9 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
"vscode-extension-github-copilot"
|
pkg:
|
||||||
];
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"vscode-extension-github-copilot"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ in
|
|||||||
"diskstats"
|
"diskstats"
|
||||||
"meminfo"
|
"meminfo"
|
||||||
"cpu"
|
"cpu"
|
||||||
"systemd" # Ensures systemd collector is enabled
|
"systemd" # Ensures systemd collector is enabled
|
||||||
"processes"
|
"processes"
|
||||||
];
|
];
|
||||||
extraFlags = [
|
extraFlags = [
|
||||||
@@ -40,15 +40,19 @@ in
|
|||||||
scrapeConfigs = [
|
scrapeConfigs = [
|
||||||
{
|
{
|
||||||
job_name = "node";
|
job_name = "node";
|
||||||
static_configs = [{
|
static_configs = [
|
||||||
targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
|
{
|
||||||
}];
|
targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
job_name = "traefik";
|
job_name = "traefik";
|
||||||
static_configs = [{
|
static_configs = [
|
||||||
targets = [ "localhost:8082" ];
|
{
|
||||||
}];
|
targets = [ "localhost:8082" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -66,12 +70,14 @@ in
|
|||||||
|
|
||||||
provision = {
|
provision = {
|
||||||
enable = true;
|
enable = true;
|
||||||
datasources.settings.datasources = [{
|
datasources.settings.datasources = [
|
||||||
name = "Prometheus";
|
{
|
||||||
type = "prometheus";
|
name = "Prometheus";
|
||||||
access = "proxy";
|
type = "prometheus";
|
||||||
url = "http://localhost:${toString config.services.prometheus.port}";
|
access = "proxy";
|
||||||
}];
|
url = "http://localhost:${toString config.services.prometheus.port}";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ in
|
|||||||
enable = false;
|
enable = false;
|
||||||
package = pkgs.nix-serve-ng;
|
package = pkgs.nix-serve-ng;
|
||||||
secretKeyFile = "/etc/nix/cache-priv-key.pem";
|
secretKeyFile = "/etc/nix/cache-priv-key.pem";
|
||||||
port = 5000; # Choose your preferred port
|
port = 5000; # Choose your preferred port
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -42,8 +42,8 @@ in
|
|||||||
attic-client
|
attic-client
|
||||||
];
|
];
|
||||||
script = ''
|
script = ''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
attic watch-store nas-cache
|
attic watch-store nas-cache
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -339,7 +339,12 @@ in
|
|||||||
system = "aarch64-linux";
|
system = "aarch64-linux";
|
||||||
maxJobs = 4;
|
maxJobs = 4;
|
||||||
sshUser = "matt";
|
sshUser = "matt";
|
||||||
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
supportedFeatures = [
|
||||||
|
"nixos-test"
|
||||||
|
"benchmark"
|
||||||
|
"big-parallel"
|
||||||
|
"kvm"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
|
|
||||||
# enable cuda support
|
# enable cuda support
|
||||||
cudaSupport = true;
|
cudaSupport = true;
|
||||||
allowUnfreePredicate = p:
|
allowUnfreePredicate =
|
||||||
|
p:
|
||||||
builtins.all (
|
builtins.all (
|
||||||
license:
|
license:
|
||||||
license.free
|
license.free
|
||||||
|
|||||||
@@ -229,8 +229,8 @@ in
|
|||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
Nice = 19; # Lowest CPU priority
|
Nice = 19; # Lowest CPU priority
|
||||||
IOSchedulingClass = "idle"; # Lowest I/O priority
|
IOSchedulingClass = "idle"; # Lowest I/O priority
|
||||||
# Prevent multiple instances from running simultaneously
|
# Prevent multiple instances from running simultaneously
|
||||||
ExecStartPre = "${pkgs.coreutils}/bin/rm -f /var/run/btrfs-balance.stamp";
|
ExecStartPre = "${pkgs.coreutils}/bin/rm -f /var/run/btrfs-balance.stamp";
|
||||||
ExecStopPost = "${pkgs.coreutils}/bin/touch /var/run/btrfs-balance.stamp";
|
ExecStopPost = "${pkgs.coreutils}/bin/touch /var/run/btrfs-balance.stamp";
|
||||||
@@ -358,8 +358,8 @@ in
|
|||||||
|
|
||||||
# Timer configuration
|
# Timer configuration
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnCalendar = "daily"; # Check every day
|
OnCalendar = "daily"; # Check every day
|
||||||
Persistent = true; # Run immediately if last run was missed
|
Persistent = true; # Run immediately if last run was missed
|
||||||
Unit = "system-update-check.service";
|
Unit = "system-update-check.service";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user