66 Commits

Author SHA1 Message Date
f51c362086 upd 2026-04-17 19:23:32 -05:00
mjallen18
a158d401ae filtering 2026-04-16 20:12:18 -05:00
mjallen18
95842b22f0 agh 2026-04-16 19:24:59 -05:00
mjallen18
3977227889 idk 2026-04-16 19:22:57 -05:00
mjallen18
cb8ef87229 nuc 2026-04-16 13:03:55 -05:00
mjallen18
44b3459d49 lol 2026-04-16 13:01:27 -05:00
mjallen18
c59ac2ccb6 kern 2026-04-16 12:40:03 -05:00
mjallen18
1767debfd8 upd 2026-04-16 12:38:07 -05:00
mjallen18
95f08a258e hue 2026-04-16 09:58:32 -05:00
mjallen18
c5ba5d4164 bluetooth 2026-04-15 11:39:41 -05:00
mjallen18
004eb3c29c esphome 2026-04-14 17:45:29 -05:00
mjallen18
616d357a59 cyd 2026-04-14 17:42:19 -05:00
mjallen18
d4481923a8 cyd 2026-04-14 17:38:59 -05:00
mjallen18
246f65190e cyd 2026-04-14 17:37:38 -05:00
mjallen18
b6df62a875 cyd 2026-04-14 17:31:10 -05:00
mjallen18
8d81a1d6e1 cyd 2026-04-14 17:29:22 -05:00
mjallen18
7368968fd5 cyd 2026-04-14 17:25:44 -05:00
mjallen18
9a719479bc cyd 2026-04-14 17:15:13 -05:00
mjallen18
38922cd526 cyd 2026-04-14 17:01:48 -05:00
mjallen18
26e7fffbd1 cyd 2026-04-14 16:56:12 -05:00
mjallen18
9792f86548 cyd 2026-04-14 16:54:32 -05:00
mjallen18
dd9fa58c5c cyd 2026-04-14 16:46:58 -05:00
mjallen18
db620cd22a cyd 2026-04-14 16:36:35 -05:00
mjallen18
dab3a37b0a cyd 2026-04-14 16:18:33 -05:00
mjallen18
74b1825d4d cyd 2026-04-14 16:12:54 -05:00
mjallen18
c3abeb846d ip 2026-04-13 14:22:27 -05:00
mjallen18
d676b6dc1e nuc 2026-04-13 14:11:45 -05:00
mjallen18
86fffbd512 upd 2026-04-13 13:25:52 -05:00
mjallen18
1b5f695f40 todo remove 2026-04-13 09:41:40 -05:00
mjallen18
9491c0356d grafana 2026-04-13 09:41:27 -05:00
152efb84da esp 2026-04-10 09:49:19 -05:00
26d5a8c686 esp 2026-04-10 09:48:58 -05:00
mjallen18
ee55a543fa caddy int 2026-04-09 15:01:01 -05:00
mjallen18
7cc6732a7e caddy int 2026-04-09 14:57:27 -05:00
mjallen18
b73ad049e7 darwin 2026-04-09 11:20:29 -05:00
mjallen18
5d23b3db93 .face 2026-04-09 11:03:35 -05:00
mjallen18
aa609630a1 darwin 2026-04-09 10:35:50 -05:00
mjallen18
1e1eb9886c darwin 2026-04-09 10:32:06 -05:00
9c326f5768 neb 2026-04-08 17:36:21 -05:00
e8cae7fff1 vesktop 2026-04-08 17:32:32 -05:00
88b9d5309f vesktop 2026-04-08 17:23:36 -05:00
d44d03d0b1 vesktop 2026-04-08 17:14:32 -05:00
4ac7463a1f ... 2026-04-08 16:11:17 -05:00
mjallen18
b354dc202a nas 2026-04-08 16:08:00 -05:00
mjallen18
079493b55e nas 2026-04-08 16:08:00 -05:00
mjallen18
d06a43bf06 build2 2026-04-08 15:40:48 -05:00
mjallen18
6b8395ffdb nebula 2026-04-08 15:16:25 -05:00
mjallen18
7adbafb848 attic 2026-04-08 15:13:03 -05:00
mjallen18
3af0d99f98 attic 2026-04-08 15:08:00 -05:00
025ab854f0 vesktop 2026-04-08 14:57:15 -05:00
mjallen18
5ce8433aa8 lol 2026-04-08 14:56:39 -05:00
mjallen18
2e8c2ddd3a lol 2026-04-08 13:24:09 -05:00
mjallen18
4cb746afc5 hmm 2026-04-07 22:02:54 -05:00
mjallen18
3234029ae5 hmm 2026-04-07 22:02:54 -05:00
mjallen18
928de1837b lol 2026-04-07 21:23:51 -05:00
mjallen18
70002a19e2 hmm 2026-04-07 18:39:42 -05:00
a418d03b19 clev 2026-04-06 15:48:34 -05:00
mjallen18
8aff587014 upd llama 2026-04-06 15:47:34 -05:00
909917f385 version_upgrade=incompatible 2026-04-06 13:35:07 -05:00
mjallen18
c8587da722 bcachefs 1.37.4 2026-04-06 12:10:04 -05:00
mjallen18
2ebe78981a upd 2026-04-06 09:43:12 -05:00
mjallen18
c98d48b43b upd 2026-04-06 09:08:32 -05:00
mjallen18
ff469102ea manual_inherit 2026-04-05 19:10:23 -05:00
mjallen18
a363622659 useless_parens 2026-04-05 15:10:13 -05:00
mjallen18
07b1fc3618 empty_pattern 2026-04-05 14:49:16 -05:00
mjallen18
159ad4cb83 useless_has_attr 2026-04-05 14:29:24 -05:00
405 changed files with 4885 additions and 1104 deletions

0
AGENTS.md Normal file → Executable file
View File

0
WORKAROUNDS.md Normal file → Executable file
View File

15
checks/pre-commit-hooks/default.nix Normal file → Executable file
View File

@@ -28,12 +28,13 @@ pre-commit-hooks-nix.lib.${pkgs.stdenv.hostPlatform.system}.run {
enable = true; enable = true;
package = pkgs.nixfmt; package = pkgs.nixfmt;
}; };
statix = { # statix disabled - too many false positives (manual_inherit warnings)
enable = true; # statix = {
args = [ # enable = true;
"--config" # args = [
(lib.snowfall.fs.get-file "statix.toml") # "--config"
]; # (lib.snowfall.fs.get-file "statix.toml")
}; # ];
# };
}; };
} }

0
docs/README.md Normal file → Executable file
View File

0
docs/architecture.md Normal file → Executable file
View File

0
docs/flake-improvements.md Normal file → Executable file
View File

0
docs/getting-started.md Normal file → Executable file
View File

0
docs/home-assistant/README.md Normal file → Executable file
View File

0
docs/home-assistant/automations.md Normal file → Executable file
View File

0
docs/home-assistant/fountain-automation.md Normal file → Executable file
View File

0
docs/modules/README.md Normal file → Executable file
View File

0
docs/modules/homeassistant.md Normal file → Executable file
View File

0
docs/services.md Normal file → Executable file
View File

0
docs/systems/README.md Normal file → Executable file
View File

0
docs/systems/allyx.md Normal file → Executable file
View File

0
docs/systems/jallen-nas.md Normal file → Executable file
View File

0
docs/systems/macbook-pro-nixos.md Normal file → Executable file
View File

0
docs/systems/macbook-pro.md Normal file → Executable file
View File

0
docs/systems/matt-nixos.md Normal file → Executable file
View File

0
docs/systems/nuc-nixos.md Normal file → Executable file
View File

0
docs/systems/pi5.md Normal file → Executable file
View File

0
docs/troubleshooting.md Normal file → Executable file
View File

0
docs/version.schema.json Normal file → Executable file
View File

249
flake.lock generated Normal file → Executable file
View File

@@ -25,7 +25,7 @@
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"napalm": "napalm", "napalm": "napalm",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs-stable"
], ],
"pyproject-build-systems": "pyproject-build-systems", "pyproject-build-systems": "pyproject-build-systems",
"pyproject-nix": "pyproject-nix", "pyproject-nix": "pyproject-nix",
@@ -33,11 +33,11 @@
"uv2nix": "uv2nix" "uv2nix": "uv2nix"
}, },
"locked": { "locked": {
"lastModified": 1774079362, "lastModified": 1776085803,
"narHash": "sha256-HkoEWTxU5gNigcnhIa3GXukHqC5xGmgVaLICGUKlpdo=", "narHash": "sha256-JvvWVbXJYSY8qOReMbAOD4lxcN2cjKV6lg/jLz8CEuY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "authentik-nix", "repo": "authentik-nix",
"rev": "1f279763d8b4a9138c01f1021f53e09bc2c54eb9", "rev": "4370b561c8bafb59773ce3a518506bcf1161dbdb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -49,16 +49,16 @@
"authentik-src": { "authentik-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1772567399, "lastModified": 1775573258,
"narHash": "sha256-0Vpf1hj9C8r+rhrCgwoNazpQ+mwgjdjDhuoKCxYQFWw=", "narHash": "sha256-Xq7JGI/8ppIydIuWd9KRJKUrh7UpeniwvZ4NAtXbYJ4=",
"owner": "goauthentik", "owner": "goauthentik",
"repo": "authentik", "repo": "authentik",
"rev": "0dccbd4193c45c581e9fb7cd89df0c1487510f1f", "rev": "5249546862986202b901c2afd860992ec48c6ef6",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "goauthentik", "owner": "goauthentik",
"ref": "version/2026.2.1", "ref": "version/2026.2.2",
"repo": "authentik", "repo": "authentik",
"type": "github" "type": "github"
} }
@@ -151,11 +151,11 @@
"cachyos-kernel": { "cachyos-kernel": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1774985922, "lastModified": 1776183001,
"narHash": "sha256-1qGc17yGMknQSwoXHMewNOuJNiuTBjS2Av1DP3+N01o=", "narHash": "sha256-lvLKB5dTqjO1S/YonS9ZyWemEjO6QXtN4D76rYEYy4s=",
"owner": "CachyOS", "owner": "CachyOS",
"repo": "linux-cachyos", "repo": "linux-cachyos",
"rev": "3bf1ef40e58891e0111cb4f33ee8a857bf012e2b", "rev": "4224303b6d7a50dd1cc3ffa78864050cc9536eec",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -167,11 +167,11 @@
"cachyos-kernel-patches": { "cachyos-kernel-patches": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1774500343, "lastModified": 1776355454,
"narHash": "sha256-8sCdFTHJF0ZES8/Qa6DVbMAzZ1PLGYcZcQJBokoa7Bg=", "narHash": "sha256-b9Hc0sTxjEzDbphzS9yQqxVha/7bsPIs2cQQQvaG45E=",
"owner": "CachyOS", "owner": "CachyOS",
"repo": "kernel-patches", "repo": "kernel-patches",
"rev": "948e9c61779b0fafdf0c3b1ee6281502ff178fcc", "rev": "b5e029226df5cc30c103651072d49a7af2878202",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -260,11 +260,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1764873433, "lastModified": 1775176642,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", "narHash": "sha256-2veEED0Fg7Fsh81tvVDNYR6SzjqQxa7hbi18Jv4LWpM=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", "rev": "179704030c5286c729b5b0522037d1d51341022c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -409,11 +409,11 @@
"nixpkgs-lib": "nixpkgs-lib_3" "nixpkgs-lib": "nixpkgs-lib_3"
}, },
"locked": { "locked": {
"lastModified": 1772408722, "lastModified": 1775087534,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -430,11 +430,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767609335, "lastModified": 1775087534,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca", "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -563,20 +563,18 @@
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"host": "gitlab.gnome.org",
"lastModified": 1767737596, "lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49", "rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab" "type": "github"
}, },
"original": { "original": {
"host": "gitlab.gnome.org",
"owner": "GNOME", "owner": "GNOME",
"ref": "gnome-49",
"repo": "gnome-shell", "repo": "gnome-shell",
"type": "gitlab" "rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "github"
} }
}, },
"home-manager": { "home-manager": {
@@ -586,11 +584,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775143651, "lastModified": 1776454077,
"narHash": "sha256-S0RqAyDPMTcv9vASMaE8eY1QexFysAOdnxUxFHIPOyE=", "narHash": "sha256-7zSUFWsU0+jlD7WB3YAxQ84Z/iJurA5hKPm8EfEyGJk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d166a078541982a76f14d3e06e9665fa5c9ed85e", "rev": "565e5349208fe7d0831ef959103c9bafbeac0681",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -606,11 +604,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775143651, "lastModified": 1776454077,
"narHash": "sha256-S0RqAyDPMTcv9vASMaE8eY1QexFysAOdnxUxFHIPOyE=", "narHash": "sha256-7zSUFWsU0+jlD7WB3YAxQ84Z/iJurA5hKPm8EfEyGJk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d166a078541982a76f14d3e06e9665fa5c9ed85e", "rev": "565e5349208fe7d0831ef959103c9bafbeac0681",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -660,11 +658,11 @@
"homebrew-cask": { "homebrew-cask": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1775139155, "lastModified": 1776469040,
"narHash": "sha256-kTTD/nIvEW8ZCxWFLspOuUWcwralK/F/1nnKD4juniE=", "narHash": "sha256-IX5UflSmiXkJnRUCNjzBl4/HMw0NMLQqsfdwA4l0kyU=",
"owner": "homebrew", "owner": "homebrew",
"repo": "homebrew-cask", "repo": "homebrew-cask",
"rev": "5726be4c3a78da73049e9ffd6b17e68dad0e0b54", "rev": "906ff3d493d3e9f50ceb5041fcc14bcfe3d63ff1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -676,11 +674,11 @@
"homebrew-core": { "homebrew-core": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1775137021, "lastModified": 1776461416,
"narHash": "sha256-Y+YUMu8ybboikUPsdXQlbJY6BrB30aayw0LkdE670u4=", "narHash": "sha256-AqxPJs6cy7ZwsS2ovNuLxUJM+2kgnEi4ECXitf6nb18=",
"owner": "homebrew", "owner": "homebrew",
"repo": "homebrew-core", "repo": "homebrew-core",
"rev": "2880ca05f723a11c6165f227275be6ccd829f9f4", "rev": "2aab2c98676928d65d72ce7fc2abd5c7f3634319",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -716,11 +714,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775071677, "lastModified": 1776428236,
"narHash": "sha256-EkVrhsEVG8FVodTPduAFC+qnb9YnKboF0It29zGJx8U=", "narHash": "sha256-+0SyQglnT2xUiyY07155G+O7aUWISELwqtTnfURufRU=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "049bfbe4cc042e6003414d0875f0a70873fc4d6b", "rev": "eac78fc379ca47f7e21be8539c405e5fb489a857",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -759,11 +757,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775311879, "lastModified": 1776442631,
"narHash": "sha256-Y9FvhL+q8rvI+si0ctyhV9o4y+OWrVMHnXnz1iJqvqk=", "narHash": "sha256-8AXOo0Yhbi3jpQFe4Ql+0HZDz/p708GdrbZVepNjITo=",
"owner": "ggml-org", "owner": "ggml-org",
"repo": "llama.cpp", "repo": "llama.cpp",
"rev": "9c699074c97191754c8a966298f84c79f90fce38", "rev": "45cac7ca703fb9085eae62b9121fca01d20177f6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -827,11 +825,11 @@
"nixpkgs": "nixpkgs_4" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1775068343, "lastModified": 1776386586,
"narHash": "sha256-w/i/5Gf9Wm8rA6PAriiUzlyx0c5WIXLjSQZYCdoKgQ4=", "narHash": "sha256-eVAUaL/6n8mnmBiPpEVW1NDNVSKLWhYVfycG+P0SvWU=",
"owner": "xddxdd", "owner": "xddxdd",
"repo": "nix-cachyos-kernel", "repo": "nix-cachyos-kernel",
"rev": "9b4cf01c0e0581c6b1bb8163942a833a75793bad", "rev": "c65c3faf90ae07bae101c15ef502f0bcb06c5d74",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -888,11 +886,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1774762074, "lastModified": 1775970782,
"narHash": "sha256-89Mh4Eb/5stVJX6kGagVMijcU2FmfeD8Qv7UXc5d92o=", "narHash": "sha256-7jt9Vpm48Yy5yAWigYpde+HxtYEpEuyzIQJF4VYehhk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "bc13aeaed568be76eab84df88ff39261bb52ff70", "rev": "bedba5989b04614fc598af9633033b95a937933f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -945,11 +943,11 @@
"nixpkgs": "nixpkgs_7" "nixpkgs": "nixpkgs_7"
}, },
"locked": { "locked": {
"lastModified": 1775098553, "lastModified": 1776396489,
"narHash": "sha256-OFWIVY1vzAbPE73ksKAMsFh11AXZ3MjIymRQ90Butnc=", "narHash": "sha256-lF3GX4VvQzff/5gpu5WytHKd2GQXJDrWChmK+JNNRO4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "361b17a5b2f4536a119c794a367a29b07691f941", "rev": "64839596bff67e8280a2fcd829a858d88530aa6f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -964,11 +962,11 @@
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_8"
}, },
"locked": { "locked": {
"lastModified": 1774264319, "lastModified": 1776370524,
"narHash": "sha256-aAsO35YtqIdvBhCIKZ0a+OcC8wB0H1+mAoPKBY0jxeQ=", "narHash": "sha256-0Gt5qnjNkIZJdOBfu2u47zgyhYL3WmgUrguUhGSxUdk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixos-apple-silicon", "repo": "nixos-apple-silicon",
"rev": "9fe29a63b23005acfcd1324a9e78b6241226cdb1", "rev": "f9f0650b45e31b3f6c3e2a0405fa198a286e2741",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -979,11 +977,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1774933469, "lastModified": 1775490113,
"narHash": "sha256-OrnCQeUO2bqaWUl0lkDWyGWjKsOhtCyd7JSfTedQNUE=", "narHash": "sha256-2ZBhDNZZwYkRmefK5XLOusCJHnoeKkoN95hoSGgMxWM=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "f4c4c2c0c923d7811ac2a63ccc154767e4195337", "rev": "c775c2772ba56e906cbeb4e0b2db19079ef11ff7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1038,11 +1036,11 @@
}, },
"nixpkgs-lib_3": { "nixpkgs-lib_3": {
"locked": { "locked": {
"lastModified": 1772328832, "lastModified": 1774748309,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", "narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", "rev": "333c4e0545a6da976206c74db8773a1645b5870a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1051,22 +1049,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-otbr": {
"locked": {
"lastModified": 1766776257,
"narHash": "sha256-MG9DnzBn6TdAztaMPVhW9sjYj2bi9Jcux0F0fJ6LeO4=",
"owner": "mrene",
"repo": "nixpkgs",
"rev": "0c4c97066d555b7d27a0a56ee400130ec51f02ee",
"type": "github"
},
"original": {
"owner": "mrene",
"ref": "openthread-border-router",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1751048012, "lastModified": 1751048012,
@@ -1085,11 +1067,11 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1775002709, "lastModified": 1776221942,
"narHash": "sha256-d3Yx83vSrN+2z/loBh4mJpyRqr9aAJqlke4TkpFmRJA=", "narHash": "sha256-FbQAeVNi7G4v3QCSThrSAAvzQTmrmyDLiHNPvTF2qFM=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "bcd464ccd2a1a7cd09aa2f8d4ffba83b761b1d0e", "rev": "1766437c5509f444c1b15331e82b8b6a9b967000",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1101,27 +1083,27 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1775036866, "lastModified": 1776447299,
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", "narHash": "sha256-fhkbQptSg6w3CG4TCxalK6UZkj4+Afsi+6p0PuofJ48=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", "rev": "2c1b4e855f7cded41541747173c697b53c63de9b",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-unstable-small",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_10": { "nixpkgs_10": {
"locked": { "locked": {
"lastModified": 1774610258, "lastModified": 1775888245,
"narHash": "sha256-HaThtroVD9wRdx7KQk0B75JmFcXlMUoEdDFNOMOlsOs=", "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "832efc09b4caf6b4569fbf9dc01bec3082a00611", "rev": "13043924aaa7375ce482ebe2494338e058282925",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1165,11 +1147,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1775107090, "lastModified": 1776311487,
"narHash": "sha256-nKP3ddjrHndCKT0FxbpgWdtGQigK+5T7iMlLuSM5chM=", "narHash": "sha256-9U8bL9X/0R9cZD3Uc/mN37AWvv5dB4WQqqjLRAxQfas=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "58b0066db5536309f7f31731870b993c9389635a", "rev": "cc1e0e027707ad53dddae39d3b3e992262c7d8c7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1245,16 +1227,16 @@
}, },
"nixpkgs_9": { "nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1775036866, "lastModified": 1776447299,
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", "narHash": "sha256-fhkbQptSg6w3CG4TCxalK6UZkj4+Afsi+6p0PuofJ48=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", "rev": "2c1b4e855f7cded41541747173c697b53c63de9b",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-unstable-small",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -1271,11 +1253,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767810917, "lastModified": 1775228139,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=", "narHash": "sha256-ebbeHmg+V7w8050bwQOuhmQHoLOEOfqKzM1KgCTexK4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4", "rev": "601971b9c89e0304561977f2c28fa25e73aa7132",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1294,11 +1276,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1774915545, "lastModified": 1775856943,
"narHash": "sha256-COT4l/+ZddGBvrDVfPf7MEOJxV8EDKame6/aRnNIKcY=", "narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "plasma-manager", "repo": "plasma-manager",
"rev": "f3177b3c69fb3f03201098d7fe8ab6422cce7fc1", "rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1339,11 +1321,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775036584, "lastModified": 1775585728,
"narHash": "sha256-zW0lyy7ZNNT/x8JhzFHBsP2IPx7ATZIPai4FJj12BgU=", "narHash": "sha256-8Psjt+TWvE4thRKktJsXfR6PA/fWWsZ04DVaY6PUhr4=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "4e0eb042b67d863b1b34b3f64d52ceb9cd926735", "rev": "580633fa3fe5fc0379905986543fd7495481913d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1426,7 +1408,6 @@
"nixos-apple-silicon": "nixos-apple-silicon", "nixos-apple-silicon": "nixos-apple-silicon",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_9", "nixpkgs": "nixpkgs_9",
"nixpkgs-otbr": "nixpkgs-otbr",
"nixpkgs-stable": "nixpkgs-stable_2", "nixpkgs-stable": "nixpkgs-stable_2",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"plasma-manager": "plasma-manager", "plasma-manager": "plasma-manager",
@@ -1507,11 +1488,11 @@
"nixpkgs": "nixpkgs_10" "nixpkgs": "nixpkgs_10"
}, },
"locked": { "locked": {
"lastModified": 1774910634, "lastModified": 1776119890,
"narHash": "sha256-B+rZDPyktGEjOMt8PcHKYmgmKoF+GaNAFJhguktXAo0=", "narHash": "sha256-Zm6bxLNnEOYuS/SzrAGsYuXSwk3cbkRQZY0fJnk8a5M=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "19bf3d8678fbbfbc173beaa0b5b37d37938db301", "rev": "d4971dd58c6627bfee52a1ad4237637c0a2fb0cd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1557,18 +1538,17 @@
], ],
"nur": "nur", "nur": "nur",
"systems": "systems_3", "systems": "systems_3",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux", "tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1774897726, "lastModified": 1776170745,
"narHash": "sha256-k/H2/oyex6GEC6uYXYetrboFQeTmX1Ouwv/zaW7b/Z0=", "narHash": "sha256-Tl1aZVP5EIlT+k0+iAKH018GLHJpLz3hhJ0LNQOWxCc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "stylix", "repo": "stylix",
"rev": "9b4a5eb409ceac2dd6ad495c7988e189a418cd30", "rev": "e3861617645a43c9bbefde1aa6ac54dd0a44bfa9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1622,23 +1602,6 @@
"type": "github" "type": "github"
} }
}, },
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": { "tinted-kitty": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -1658,11 +1621,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1767710407, "lastModified": 1772661346,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=", "narHash": "sha256-4eu3LqB9tPqe0Vaqxd4wkZiBbthLbpb7llcoE/p5HT0=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2", "rev": "13b5b0c299982bb361039601e2d72587d6846294",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1674,11 +1637,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1767489635, "lastModified": 1772934010,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", "narHash": "sha256-x+6+4UvaG+RBRQ6UaX+o6DjEg28u4eqhVRM9kpgJGjQ=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", "rev": "c3529673a5ab6e1b6830f618c45d9ce1bcdd829d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1690,11 +1653,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1767488740, "lastModified": 1772909925,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", "narHash": "sha256-jx/5+pgYR0noHa3hk2esin18VMbnPSvWPL5bBjfTIAU=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", "rev": "b4d3a1b3bcbd090937ef609a0a3b37237af974df",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1732,11 +1695,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775125835, "lastModified": 1775636079,
"narHash": "sha256-2qYcPgzFhnQWchHo0SlqLHrXpux5i6ay6UHA+v2iH4U=", "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "75925962939880974e3ab417879daffcba36c4a3", "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"type": "github" "type": "github"
}, },
"original": { "original": {

8
flake.nix Normal file → Executable file
View File

@@ -1,12 +1,8 @@
{ {
inputs = rec { inputs = rec {
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable-small";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
# Fork required: openthread-border-router is not yet in nixpkgs-unstable.
# Used by modules/nixos/homeassistant/services/thread/default.nix
nixpkgs-otbr.url = "github:mrene/nixpkgs/openthread-border-router";
home-manager-unstable = { home-manager-unstable = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable"; inputs.nixpkgs.follows = "nixpkgs-unstable";
@@ -47,7 +43,7 @@
authentik-nix = { authentik-nix = {
url = "github:nix-community/authentik-nix"; url = "github:nix-community/authentik-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs-stable";
}; };
disko = { disko = {

View File

@@ -88,6 +88,7 @@ in
nwg-panel = disabled; nwg-panel = disabled;
opencode = enabled; opencode = enabled;
thunderbird = enabled; thunderbird = enabled;
vesktop = enabled;
waybar = { waybar = {
enable = false; enable = false;
@@ -135,7 +136,7 @@ in
sops = { sops = {
secrets = { secrets = {
"protonmail-password" = { "protonmail-password" = {
sopsFile = (lib.snowfall.fs.get-file "secrets/mac-secrets.yaml"); sopsFile = lib.snowfall.fs.get-file "secrets/mac-secrets.yaml";
}; };
}; };
}; };
@@ -152,6 +153,7 @@ in
iw iw
iwd iwd
orca-slicer orca-slicer
rpi-imager
vscodium vscodium
]); ]);

View File

@@ -30,6 +30,7 @@ in
jq jq
] ]
++ (with pkgs.${namespace}; [ ++ (with pkgs.${namespace}; [
hueforge
moondeck-buddy moondeck-buddy
]); ]);
}; };
@@ -37,7 +38,7 @@ in
${namespace} = { ${namespace} = {
sops.enable = true; sops.enable = true;
programs.opencode = enabled; programs.opencode = enabled;
# desktop.plasma = enabled; desktop.plasma = enabled;
}; };
sops.secrets = { sops.secrets = {
@@ -83,11 +84,14 @@ in
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
defaultEditor = true; defaultEditor = true;
withRuby = false;
withPython3 = true;
plugins = [ plugins = [
pkgs.vimPlugins.nvim-tree-lua pkgs.vimPlugins.nvim-tree-lua
{ {
plugin = pkgs.vimPlugins.vim-startify; plugin = pkgs.vimPlugins.vim-startify;
config = "let g:startify_change_to_vcs_root = 0"; config = "let g:startify_change_to_vcs_root = 0";
type = "lua";
} }
]; ];
}; };

View File

@@ -13,6 +13,9 @@ in
${namespace} = { ${namespace} = {
desktop.gnome = enabled; desktop.gnome = enabled;
sops.enable = true; sops.enable = true;
programs = {
vesktop = enabled;
};
}; };
sops.secrets = { sops.secrets = {
@@ -51,7 +54,7 @@ in
ryujinx.enable = true; # Switch (ryubing fork) ryujinx.enable = true; # Switch (ryubing fork)
yuzu.enable = true; # Switch (eden fork) yuzu.enable = true; # Switch (eden fork)
dolphin-emu.enable = true; # GameCube / Wii dolphin-emu.enable = true; # GameCube / Wii
cemu.enable = true; # Wii U cemu.enable = false; # Wii U
melonDS.enable = true; # DS melonDS.enable = true; # DS
citra.enable = true; # 3DS (azahar fork) citra.enable = true; # 3DS (azahar fork)
mgba.enable = true; # Game Boy / GBC mgba.enable = true; # Game Boy / GBC

View File

@@ -31,6 +31,7 @@ in
desktop.plasma = enabled; desktop.plasma = enabled;
programs = { programs = {
vesktop = enabled;
opencode = enabled; opencode = enabled;
thunderbird = enabled; thunderbird = enabled;
hyprland = { hyprland = {
@@ -187,7 +188,7 @@ in
virt-manager virt-manager
vorta vorta
waydroid-helper waydroid-helper
# winboat winboat
] ]
++ (with pkgs.${namespace}; [ ++ (with pkgs.${namespace}; [
discord-krisp discord-krisp

0
lib/README.md Normal file → Executable file
View File

3
lib/default.nix Normal file → Executable file
View File

@@ -3,8 +3,9 @@
mjallen-lib = { mjallen-lib = {
module = import ./module { inherit inputs; }; module = import ./module { inherit inputs; };
file = import ./file { inherit inputs; }; file = import ./file { inherit inputs; };
inherit (inputs.nixpkgs) lib;
versioning = import ./versioning { versioning = import ./versioning {
lib = inputs.nixpkgs.lib; inherit (inputs.nixpkgs) lib;
inherit inputs; inherit inputs;
}; };
}; };

2
lib/file/default.nix Normal file → Executable file
View File

@@ -1,7 +1,7 @@
{ inputs, ... }@args: { inputs, ... }@args:
let let
# Get self from args or default to ../.. (the flake root) # Get self from args or default to ../.. (the flake root)
self = if args ? self then args.self else ../..; self = args.self or ../..;
inherit (inputs.nixpkgs.lib) inherit (inputs.nixpkgs.lib)
genAttrs genAttrs

10
lib/module/default.nix Normal file → Executable file
View File

@@ -91,8 +91,7 @@ rec {
]; ];
}; };
redis.servers.${name} = lib.mkIf cfg.redis.enable { redis.servers.${name} = lib.mkIf cfg.redis.enable {
enable = true; inherit (cfg.redis) enable port;
port = cfg.redis.port;
}; };
}; };
}; };
@@ -149,8 +148,9 @@ rec {
reverseProxy = mkReverseProxyOpt name; reverseProxy = mkReverseProxyOpt name;
hostedService = { hostedService = {
enable = mkOpt types.bool (cfg.reverseProxy.enable enable =
) "Expose this service in Glance dashboard (auto-enabled when reverseProxy is on)"; mkOpt types.bool cfg.reverseProxy.enable
"Expose this service in Glance dashboard (auto-enabled when reverseProxy is on)";
title = mkOpt types.str name "Display title in Glance"; title = mkOpt types.str name "Display title in Glance";
icon = mkOpt types.str "si:glance" "Icon identifier for Glance (e.g. si:actualbudget)"; icon = mkOpt types.str "si:glance" "Icon identifier for Glance (e.g. si:actualbudget)";
group = mkOpt types.str "Services" "Glance group/category for this service"; group = mkOpt types.str "Services" "Glance group/category for this service";
@@ -254,7 +254,7 @@ rec {
owner ? "nix-apps", owner ? "nix-apps",
group ? "jallen-nas", group ? "jallen-nas",
mode ? "660", mode ? "660",
sopsFile ? (lib.snowfall.fs.get-file "secrets/nas-secrets.yaml"), sopsFile ? lib.snowfall.fs.get-file "secrets/nas-secrets.yaml",
}: }:
{ {
sops.secrets = mapAttrs (_key: extra: { inherit sopsFile; } // extra) secrets; sops.secrets = mapAttrs (_key: extra: { inherit sopsFile; } // extra) secrets;

2
lib/network/default.nix Normal file → Executable file
View File

@@ -18,7 +18,6 @@
# #
# All attributes intentionally use plain strings / ints so they can be # All attributes intentionally use plain strings / ints so they can be
# interpolated with `toString` or used directly in any context. # interpolated with `toString` or used directly in any context.
{ ... }:
{ {
network = { network = {
# ----------------------------------------------------------------------- # -----------------------------------------------------------------------
@@ -100,6 +99,7 @@
# ---- pi5 services -------------------------------------------------- # ---- pi5 services --------------------------------------------------
pi5 = { pi5 = {
adguard = 3000; adguard = 3000;
attic = 9012;
nebula = 4242; nebula = 4242;
dns = 53; dns = 53;
}; };

5
lib/nix-settings/default.nix Normal file → Executable file
View File

@@ -8,13 +8,9 @@
# lib.${namespace}.nixSettings.commonSettings # lib.${namespace}.nixSettings.commonSettings
# lib.${namespace}.nixSettings.commonGc # lib.${namespace}.nixSettings.commonGc
{ lib, ... }: { lib, ... }:
let
net = lib.mjallen.network;
in
{ {
nixSettings = { nixSettings = {
commonSubstituters = [ commonSubstituters = [
"http://${net.hosts.nas.lan}:${toString net.ports.nas.attic}/nas-cache"
"https://nixos-apple-silicon.cachix.org" "https://nixos-apple-silicon.cachix.org"
"https://nixos-raspberrypi.cachix.org" "https://nixos-raspberrypi.cachix.org"
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
@@ -22,7 +18,6 @@ in
]; ];
commonTrustedPublicKeys = [ commonTrustedPublicKeys = [
"nas-cache:eK0eRVAt9QNwbkLIyOo9N5Z5+zi6ukI4mSlL196C7Yg="
"nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20=" "nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20="
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="

50
lib/versioning/default.nix Normal file → Executable file
View File

@@ -9,12 +9,9 @@ let
hasAttr hasAttr
getAttr getAttr
attrNames attrNames
toString
replaceStrings replaceStrings
; ;
inherit (lib) mapAttrs recursiveUpdate;
mapAttrs = lib.mapAttrs;
recursiveUpdate = lib.recursiveUpdate;
# Deep-merge attrsets (right-biased). # Deep-merge attrsets (right-biased).
deepMerge = a: b: recursiveUpdate a b; deepMerge = a: b: recursiveUpdate a b;
@@ -31,8 +28,8 @@ let
applyVariantOnce = applyVariantOnce =
selected: variant: selected: variant:
let let
vVars = if variant ? variables then variant.variables else { }; vVars = variant.variables or { };
vSrcs = if variant ? sources then variant.sources else { }; vSrcs = variant.sources or { };
in in
{ {
variables = selected.variables // vVars; variables = selected.variables // vVars;
@@ -47,8 +44,8 @@ let
else else
let let
p = variant.platforms.${system}; p = variant.platforms.${system};
pVars = if p ? variables then p.variables else { }; pVars = p.variables or { };
pSrcs = if p ? sources then p.sources else { }; pSrcs = p.sources or { };
in in
{ {
variables = selected.variables // pVars; variables = selected.variables // pVars;
@@ -93,49 +90,44 @@ let
mkSrcFromRendered' = mkSrcFromRendered' =
pkgs': comp: pkgs': comp:
let let
fetcher = if comp ? fetcher then comp.fetcher else "none"; fetcher = comp.fetcher or "none";
in in
if fetcher == "github" then if fetcher == "github" then
pkgs'.fetchFromGitHub ( pkgs'.fetchFromGitHub (
{ {
owner = comp.owner; inherit (comp) owner repo hash;
repo = comp.repo;
# Allow tag as rev (ignore null/empty tag) # Allow tag as rev (ignore null/empty tag)
rev = if comp ? tag && comp.tag != null && comp.tag != "" then comp.tag else comp.rev; rev = if comp ? tag && comp.tag != null && comp.tag != "" then comp.tag else comp.rev;
fetchSubmodules = if comp ? submodules then comp.submodules else false; fetchSubmodules = comp.submodules or false;
hash = comp.hash;
} }
// lib.optionalAttrs (comp ? name) { name = comp.name; } // lib.optionalAttrs (comp ? name) { inherit (comp) name; }
) )
else if fetcher == "git" then else if fetcher == "git" then
pkgs'.fetchgit { pkgs'.fetchgit {
url = comp.url; inherit (comp) url rev hash;
rev = comp.rev; fetchSubmodules = comp.submodules or false;
fetchSubmodules = if comp ? submodules then comp.submodules else false;
hash = comp.hash;
} }
else if fetcher == "url" then else if fetcher == "url" then
let let
url = if comp ? url then comp.url else comp.urlTemplate; url = comp.url or comp.urlTemplate;
in in
if useFetchZip comp then if useFetchZip comp then
pkgs'.fetchzip ( pkgs'.fetchzip (
{ {
inherit (comp) hash;
inherit url; inherit url;
hash = comp.hash;
} }
// lib.optionalAttrs (comp ? extra && comp.extra ? stripRoot) { stripRoot = comp.extra.stripRoot; } // lib.optionalAttrs (comp ? extra && comp.extra ? stripRoot) { inherit (comp.extra) stripRoot; }
) )
else else
pkgs'.fetchurl { pkgs'.fetchurl {
inherit (comp) hash;
inherit url; inherit url;
hash = comp.hash;
} }
else if fetcher == "pypi" then else if fetcher == "pypi" then
pkgs'.python3Packages.fetchPypi { pkgs'.python3Packages.fetchPypi {
inherit (comp) version hash;
pname = comp.name; pname = comp.name;
version = comp.version;
hash = comp.hash;
} }
else else
# fetcher == "none": pass-through (e.g., linux version/hash consumed by custom logic) # fetcher == "none": pass-through (e.g., linux version/hash consumed by custom logic)
@@ -155,14 +147,10 @@ rec {
selectVariant = selectVariant =
spec: variantName: system: spec: variantName: system:
let let
chosen = chosen = if variantName != null then variantName else (spec.defaultVariant or null);
if variantName != null then
variantName
else
(if spec ? defaultVariant then spec.defaultVariant else null);
baseSelected = { baseSelected = {
variables = if spec ? variables then spec.variables else { }; variables = spec.variables or { };
sources = if spec ? sources then spec.sources else { }; sources = spec.sources or { };
}; };
in in
resolveVariant spec baseSelected chosen system; resolveVariant spec baseSelected chosen system;

8
modules/darwin/home/default.nix Normal file → Executable file
View File

@@ -38,12 +38,12 @@
}; };
# Make ALL external HM modules available globally # Make ALL external HM modules available globally
# Note: sops-nix, nix-index-database, and stylix are already injected
# globally via systems.modules.home in flake.nix; only darwin-specific
# modules that aren't in the global list should go here.
sharedModules = with inputs; [ sharedModules = with inputs; [
sops-nix.homeManagerModules.sops
nix-plist-manager.homeManagerModules.default nix-plist-manager.homeManagerModules.default
nix-index-database.homeModules.nix-index # Add any other darwin-specific external HM modules here
stylix.homeModules.stylix
# Add any other external HM modules here
]; ];
users."mattjallen" = lib.mkAliasDefinitions options.${namespace}.home.extraOptions; users."mattjallen" = lib.mkAliasDefinitions options.${namespace}.home.extraOptions;

2
modules/darwin/nix/default.nix Normal file → Executable file
View File

@@ -4,7 +4,7 @@
... ...
}: }:
let let
nixSettings = lib.${namespace}.nixSettings; inherit (lib.${namespace}) nixSettings;
in in
{ {
nix = { nix = {

0
modules/darwin/programs/ssh/default.nix Normal file → Executable file
View File

0
modules/home/accounts/default.nix Normal file → Executable file
View File

0
modules/home/desktop/gnome/default.nix Normal file → Executable file
View File

0
modules/home/desktop/gnome/options.nix Normal file → Executable file
View File

64
modules/home/desktop/plasma/default.nix Normal file → Executable file
View File

@@ -25,24 +25,28 @@ in
programs.plasma = { programs.plasma = {
enable = true; enable = true;
workspace = { configFile.kded5rc = {
colorScheme = "BreezeDark"; "Module-gtkconfig"."autoload" = false;
cursor = {
theme = "breeze_cursors";
size = 24;
};
iconTheme = "breeze-dark";
theme = "breeze-dark";
lookAndFeel = "org.kde.breezedark.desktop";
# Explicitly set Breeze to prevent QT_STYLE_OVERRIDE=kvantum (set by
# Stylix's qt6ct target) from being picked up by KWin/plasmashell, which
# would cause a fatal "module kvantum is not installed" QML error and
# leave the desktop blank.
widgetStyle = "Breeze";
}; };
# input.mice and input.touchpads require device-specific vendorId/productId # workspace = {
# identifiers — configure those per-host in the home config instead. # colorScheme = "BreezeDark";
# cursor = {
# theme = "breeze_cursors";
# size = 24;
# };
# iconTheme = "breeze-dark";
# theme = "breeze-dark";
# lookAndFeel = "org.kde.breezedark.desktop";
# # Explicitly set Breeze to prevent QT_STYLE_OVERRIDE=kvantum (set by
# # Stylix's qt6ct target) from being picked up by KWin/plasmashell, which
# # would cause a fatal "module kvantum is not installed" QML error and
# # leave the desktop blank.
# widgetStyle = "Breeze";
# };
# # input.mice and input.touchpads require device-specific vendorId/productId
# # identifiers — configure those per-host in the home config instead.
kscreenlocker = { kscreenlocker = {
autoLock = true; autoLock = true;
@@ -67,20 +71,20 @@ in
}; };
}; };
panels = [ # panels = [
{ # {
location = "bottom"; # location = "bottom";
floating = true; # floating = true;
height = 44; # height = 44;
widgets = [ # widgets = [
"org.kde.plasma.kickoff" # "org.kde.plasma.kickoff"
"org.kde.plasma.icontasks" # "org.kde.plasma.icontasks"
"org.kde.plasma.marginsseparator" # "org.kde.plasma.marginsseparator"
"org.kde.plasma.systemtray" # "org.kde.plasma.systemtray"
"org.kde.plasma.digitalclock" # "org.kde.plasma.digitalclock"
]; # ];
} # }
]; # ];
shortcuts = { shortcuts = {
kwin = { kwin = {

0
modules/home/desktop/plasma/options.nix Normal file → Executable file
View File

0
modules/home/gpg/default.nix Normal file → Executable file
View File

2
modules/home/home/default.nix Normal file → Executable file
View File

@@ -57,7 +57,7 @@ in
wget wget
] ]
++ ( ++ (
if (hasDestopEnvironment) then if hasDestopEnvironment then
[ [
boxbuddy boxbuddy
cider-2 cider-2

0
modules/home/programs/calibre/default.nix Normal file → Executable file
View File

0
modules/home/programs/code/default.nix Normal file → Executable file
View File

0
modules/home/programs/common/default-apps.nix Normal file → Executable file
View File

1
modules/home/programs/git/default.nix Normal file → Executable file
View File

@@ -1,4 +1,3 @@
{ ... }:
let let
gitAliases = { gitAliases = {
co = "checkout"; co = "checkout";

0
modules/home/programs/hyprland/avizo.nix Normal file → Executable file
View File

3
modules/home/programs/hyprland/default.nix Normal file → Executable file
View File

@@ -313,6 +313,7 @@ in
secondMonitor = if builtins.length names > 1 then builtins.elemAt names 1 else firstMonitor; secondMonitor = if builtins.length names > 1 then builtins.elemAt names 1 else firstMonitor;
in in
{ {
inherit (cfg) workspace;
"$mod" = cfg.modKey; "$mod" = cfg.modKey;
# Mouse # Mouse
@@ -513,8 +514,6 @@ in
preserve_split = "yes"; preserve_split = "yes";
}; };
workspace = cfg.workspace;
windowrule = [ windowrule = [
"match:title file_progress, float 1" "match:title file_progress, float 1"
"match:title .*[Cc]onfirm.*, float 1" "match:title .*[Cc]onfirm.*, float 1"

0
modules/home/programs/hyprland/options.nix Normal file → Executable file
View File

1
modules/home/programs/librewolf/default.nix Normal file → Executable file
View File

@@ -1,4 +1,3 @@
{ ... }:
{ {
programs.librewolf = { programs.librewolf = {
enable = false; enable = false;

0
modules/home/programs/nwg-dock/default.nix Normal file → Executable file
View File

0
modules/home/programs/nwg-drawer/default.nix Normal file → Executable file
View File

0
modules/home/programs/nwg-panel/default.nix Normal file → Executable file
View File

0
modules/home/programs/nwg-panel/options.nix Normal file → Executable file
View File

0
modules/home/programs/onlyoffice/default.nix Normal file → Executable file
View File

8
modules/home/programs/opencode/default.nix Normal file → Executable file
View File

@@ -37,8 +37,8 @@ in
baseURL = "http://${net.hosts.nas.lan}:${toString net.ports.nas.llamaCpp}/v1"; baseURL = "http://${net.hosts.nas.lan}:${toString net.ports.nas.llamaCpp}/v1";
}; };
models = { models = {
Qwen3-Coder-Next-Q4_0 = { "gemma-4-26B-A4B-it-UD-Q8_K_XL" = {
name = "Qwen3 Coder (local)"; name = "Gemma 4 26B-A4B (local)";
modalities = { modalities = {
input = [ input = [
"image" "image"
@@ -47,8 +47,8 @@ in
output = [ "text" ]; output = [ "text" ];
}; };
limit = { limit = {
context = 131072; context = 32768;
output = 32768; output = 8192;
}; };
}; };
}; };

1
modules/home/programs/password-store/default.nix Normal file → Executable file
View File

@@ -1,4 +1,3 @@
{ ... }:
{ {
# The default value of `programs.password-store.settings` has changed from `{ PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store"; }` to `{ }`. # The default value of `programs.password-store.settings` has changed from `{ PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store"; }` to `{ }`.
# You are currently using the legacy default (`{ PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store"; }`) because `home.stateVersion` is less than "25.11". # You are currently using the legacy default (`{ PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store"; }`) because `home.stateVersion` is less than "25.11".

0
modules/home/programs/thunderbird/default.nix Normal file → Executable file
View File

0
modules/home/programs/update-checker/default.nix Normal file → Executable file
View File

View File

@@ -0,0 +1,51 @@
{
config,
lib,
namespace,
...
}:
let
cfg = config.${namespace}.programs.vesktop;
in
{
options.${namespace}.programs.vesktop = {
enable = lib.mkEnableOption "vesktop";
};
config = lib.mkIf cfg.enable {
programs.vesktop = {
enable = true;
settings = {
appBadge = false;
arRPC = true;
checkUpdates = false;
customTitleBar = false;
disableMinSize = true;
minimizeToTray = true;
tray = true;
splashBackground = "#000000";
splashColor = "#ffffff";
splashTheming = true;
staticTitle = true;
hardwareAcceleration = true;
discordBranch = "stable";
};
vencord = {
settings = {
autoUpdate = false;
autoUpdateNotification = false;
notifyAboutUpdates = false;
useQuickCss = true;
disableMinSize = true;
plugins = {
MessageLogger = {
enabled = false;
ignoreSelf = true;
};
FakeNitro.enabled = false;
};
};
};
};
};
}

View File

@@ -294,10 +294,10 @@ in
systemd.enable = true; systemd.enable = true;
settings = { settings = {
mainBar = ( mainBar =
(mkMerge [ (mkMerge [
{ {
layer = cfg.layer; inherit (cfg) layer;
position = "top"; position = "top";
mod = "dock"; mod = "dock";
exclusive = true; exclusive = true;
@@ -342,7 +342,7 @@ in
}; };
network = { network = {
interface = cfg.network.interface; inherit (cfg.network) interface;
on-click = "nm-connection-editor"; on-click = "nm-connection-editor";
format = "{icon}"; format = "{icon}";
tooltip-format = "{ifname} via {gwaddr} 󰊗"; tooltip-format = "{ifname} via {gwaddr} 󰊗";
@@ -589,8 +589,7 @@ in
}; };
}) })
]) ])
// cfg.extra.settings // cfg.extra.settings;
);
} }
// cfg.extraModules; # keep legacy top-level extra modules for compatibility // cfg.extraModules; # keep legacy top-level extra modules for compatibility

0
modules/home/programs/waybar/options.nix Normal file → Executable file
View File

0
modules/home/programs/waybar/scripts/audio-control.nix Normal file → Executable file
View File

0
modules/home/programs/waybar/scripts/media.nix Normal file → Executable file
View File

0
modules/home/programs/waybar/scripts/notifications.nix Normal file → Executable file
View File

0
modules/home/programs/waybar/scripts/weather.nix Normal file → Executable file
View File

0
modules/home/programs/wlogout/default.nix Normal file → Executable file
View File

1
modules/home/programs/zsh/default.nix Normal file → Executable file
View File

@@ -1,4 +1,3 @@
{ ... }:
let let
defaultShellAliases = { defaultShellAliases = {
l = "ls -alh"; l = "ls -alh";

3
modules/home/services/pass/default.nix Normal file → Executable file
View File

@@ -1,6 +1,3 @@
{
...
}:
{ {
#services.gnome-keyring.enable = false; #services.gnome-keyring.enable = false;
#home.packages = [ pkgs.gcr ]; #home.packages = [ pkgs.gcr ];

0
modules/home/services/protonmail-bridge/default.nix Normal file → Executable file
View File

0
modules/home/shell-aliases/default.nix Normal file → Executable file
View File

0
modules/home/sops/default.nix Normal file → Executable file
View File

0
modules/home/sops/options.nix Normal file → Executable file
View File

0
modules/home/stylix/default.nix Normal file → Executable file
View File

6
modules/home/user/default.nix Normal file → Executable file
View File

@@ -35,17 +35,17 @@ in
description = "The full name of the user."; description = "The full name of the user.";
}; };
home = mkOption { home = mkOption {
type = (types.nullOr types.str); type = types.nullOr types.str;
default = home-directory; default = home-directory;
description = "The user's home directory."; description = "The user's home directory.";
}; };
icon = mkOption { icon = mkOption {
type = (types.nullOr types.package); type = types.nullOr types.package;
default = null; default = null;
description = "The profile picture to use for the user. Set to a package whose output is the icon file (e.g. a derivation producing a PNG)."; description = "The profile picture to use for the user. Set to a package whose output is the icon file (e.g. a derivation producing a PNG).";
}; };
name = mkOption { name = mkOption {
type = (types.nullOr types.str); type = types.nullOr types.str;
default = "matt"; default = "matt";
description = "The user account."; description = "The user account.";
}; };

2
modules/nixos/boot/common/default.nix Normal file → Executable file
View File

@@ -62,7 +62,7 @@ in
bcachefs.package = lib.mkOverride 90 pkgs.${namespace}.bcachefs; bcachefs.package = lib.mkOverride 90 pkgs.${namespace}.bcachefs;
consoleLogLevel = lib.mkDefault 0; consoleLogLevel = lib.mkDefault 0;
bootspec.enable = (!isArm); bootspec.enable = !isArm;
initrd = { initrd = {
verbose = lib.mkDefault false; verbose = lib.mkDefault false;

2
modules/nixos/boot/lanzaboote/default.nix Normal file → Executable file
View File

@@ -32,7 +32,7 @@ in
}; };
}; };
lanzaboote = { lanzaboote = {
enable = cfg.enable; enable = true;
pkiBundle = "/etc/secureboot"; pkiBundle = "/etc/secureboot";
settings = { settings = {
console-mode = "max"; console-mode = "max";

0
modules/nixos/boot/plymouth/default.nix Normal file → Executable file
View File

0
modules/nixos/boot/systemd-boot/default.nix Normal file → Executable file
View File

0
modules/nixos/desktop/gnome/default.nix Normal file → Executable file
View File

0
modules/nixos/desktop/hyprland/options.nix Normal file → Executable file
View File

2
modules/nixos/desktop/hyprland/wallpapers/default.nix Normal file → Executable file
View File

@@ -15,11 +15,11 @@ in
# and provide the hyprctl hot-reload command so hyprpaper picks up the new image. # and provide the hyprctl hot-reload command so hyprpaper picks up the new image.
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
${namespace}.wallpaper = { ${namespace}.wallpaper = {
inherit (cfg) defaultWallpaper;
enable = true; enable = true;
source = cfg.wallpaperSource; source = cfg.wallpaperSource;
path = cfg.wallpaper; path = cfg.wallpaper;
dir = cfg.wallpaperDir; dir = cfg.wallpaperDir;
defaultWallpaper = cfg.defaultWallpaper;
reloadCommand = "${lib.getExe' pkgs.hyprland "hyprctl"} hyprpaper wallpaper ,${cfg.wallpaper},"; reloadCommand = "${lib.getExe' pkgs.hyprland "hyprctl"} hyprpaper wallpaper ,${cfg.wallpaper},";
}; };
}; };

4
modules/nixos/desktop/plasma/default.nix Normal file → Executable file
View File

@@ -35,6 +35,10 @@ in
enable = true; enable = true;
wayland.enable = cfg.wayland.enable; wayland.enable = cfg.wayland.enable;
}; };
# Required for Bluetooth D-Bus policy (allows WirePlumber/PipeWire
# to communicate with bluetoothd on the system bus).
blueman.enable = true;
}; };
xdg.portal.extraPortals = [ ]; xdg.portal.extraPortals = [ ];

0
modules/nixos/development/default.nix Normal file → Executable file
View File

0
modules/nixos/disko/default.nix Normal file → Executable file
View File

0
modules/nixos/disko/options.nix Normal file → Executable file
View File

0
modules/nixos/fonts/default.nix Normal file → Executable file
View File

View File

@@ -46,7 +46,7 @@ in
}; };
programs.corectrl = { programs.corectrl = {
enable = cfg.corectrl.enable; inherit (cfg.corectrl) enable;
package = pkgs.corectrl; package = pkgs.corectrl;
}; };

0
modules/nixos/hardware/battery/default.nix Normal file → Executable file
View File

0
modules/nixos/hardware/btrfs/default.nix Normal file → Executable file
View File

0
modules/nixos/hardware/common/default.nix Normal file → Executable file
View File

0
modules/nixos/hardware/npu/default.nix Normal file → Executable file
View File

View File

@@ -53,7 +53,7 @@ in
# Enable the Nvidia settings menu, # Enable the Nvidia settings menu,
# accessible via `nvidia-settings`. # accessible via `nvidia-settings`.
nvidiaSettings = cfg.nvidiaSettings; inherit (cfg) nvidiaSettings;
}; };
}; };

0
modules/nixos/hardware/openrgb/default.nix Normal file → Executable file
View File

View File

5
modules/nixos/hardware/raspberry-pi/audio.nix Normal file → Executable file
View File

@@ -16,7 +16,7 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
hardware.deviceTree = { hardware.deviceTree = {
overlays = ( overlays =
with pkgs.${namespace}; with pkgs.${namespace};
( (
if (variant == "5") then if (variant == "5") then
@@ -33,8 +33,7 @@ in
dtsFile = "${raspberrypi-overlays}/dtbs/raspberrypi-overlays/pisound-overlay.dts"; dtsFile = "${raspberrypi-overlays}/dtbs/raspberrypi-overlays/pisound-overlay.dts";
} }
] ]
) );
);
}; };
}; };
} }

Some files were not shown because too many files have changed in this diff Show More