diff --git a/flake.lock b/flake.lock index 1f8bf26..78c42ba 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1723293904, - "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", + "lastModified": 1736955230, + "narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=", "owner": "ryantm", "repo": "agenix", - "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", + "rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c", "type": "github" }, "original": { @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1736102453, - "narHash": "sha256-5qb4kb7Xbt8jJFL/oDqOor9Z2+E+A+ql3PiyDvsfWZ0=", + "lastModified": 1737636397, + "narHash": "sha256-F5MbBj3QVorycVSFE9qjuOTLtIQBqt2VWbXa0uwzm98=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "4846091641f3be0ad7542086d52769bb7932bde6", + "rev": "7fe006981fae53e931f513026fc754e322f13145", "type": "github" }, "original": { @@ -80,20 +80,14 @@ }, "catppuccin": { "inputs": { - "catppuccin-v1_1": "catppuccin-v1_1", - "catppuccin-v1_2": "catppuccin-v1_2", - "home-manager": "home-manager_2", - "home-manager-stable": "home-manager-stable", - "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable", - "nuscht-search": "nuscht-search" + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1736069220, - "narHash": "sha256-76MaB3COao55nlhWmSmq9PKgu2iGIs54C1cAE0E5J6Y=", + "lastModified": 1737579274, + "narHash": "sha256-8kBIYfn8TI9jbffhDNS12SdbQHb9ITXflwcgIJBeGqw=", "owner": "catppuccin", "repo": "nix", - "rev": "8eada392fd6571a747e1c5fc358dd61c14c8704e", + "rev": "06f0ea19334bcc8112e6d671fd53e61f9e3ad63a", "type": "github" }, "original": { @@ -102,47 +96,20 @@ "type": "github" } }, - "catppuccin-v1_1": { - "locked": { - "lastModified": 1734055249, - "narHash": "sha256-pCWJgwo77KD7EJpwynwKrWPZ//dwypHq2TfdzZWqK68=", - "rev": "7221d6ca17ac36ed20588e1c3a80177ac5843fa7", - "revCount": 326, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/catppuccin/nix/1.1.1/0193bdc0-b045-7eed-bbec-95611a8ecdf5/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/catppuccin/nix/1.1.%2A.tar.gz" - } - }, - "catppuccin-v1_2": { - "locked": { - "lastModified": 1734728407, - "narHash": "sha256-Let3uJo4YDyfqbqaw66dpZxhJB2TrDyZWSFd5rpPLJA=", - "rev": "23ee86dbf4ed347878115a78971d43025362fab1", - "revCount": 341, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/catppuccin/nix/1.2.0/0193e5e0-33b7-7149-a362-bfe56b20f64e/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/catppuccin/nix/1.2.%2A.tar.gz" - } - }, "chaotic": { "inputs": { + "fenix": "fenix", "flake-schemas": "flake-schemas", - "home-manager": "home-manager_3", + "home-manager": "home-manager_2", "jovian": "jovian", "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1736696124, - "narHash": "sha256-8UwGZ+hCmk5MC7M9b3/qcnYpgW0LRqEYd+u8w5s5vww=", + "lastModified": 1737811239, + "narHash": "sha256-X0C4HEcw3AdSgEH6YDHwC6w8xBxK0pVKyUYMoXU2f1w=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "8dca96dcfa4a176f58303c5ca8c3f717c27a2910", + "rev": "be39fe2f8f4e922fc5f2402377531191f96f6b02", "type": "github" }, "original": { @@ -174,6 +141,30 @@ "type": "github" } }, + "deploy-rs": { + "inputs": { + "flake-compat": [], + "nixpkgs": [ + "nixpkgs" + ], + "utils": [ + "flake-utils" + ] + }, + "locked": { + "lastModified": 1727447169, + "narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, "devshell": { "inputs": { "nixpkgs": [ @@ -203,11 +194,11 @@ ] }, "locked": { - "lastModified": 1736591904, - "narHash": "sha256-LFO8pSrPKrH8OPq2HaAuBG5skk8/MNJ/9YmK3KsnSks=", + "lastModified": 1737038063, + "narHash": "sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk=", "owner": "nix-community", "repo": "disko", - "rev": "33827d2bd16bfe2e21b62956526c72d313595dfd", + "rev": "bf0abfde48f469c256f2b0f481c6281ff04a5db2", "type": "github" }, "original": { @@ -219,27 +210,49 @@ }, "easy-hosts": { "locked": { - "lastModified": 1736680851, - "narHash": "sha256-KUkO4H0W+1u5piwAzIzCuVhamQ0L3io8vR61NrODtHs=", - "owner": "isabelroses", + "lastModified": 1737821617, + "narHash": "sha256-gbFIcZqphSaW7ctIZgKzir233ak2JBe3dnzxONisstM=", + "owner": "tgirlcloud", "repo": "easy-hosts", - "rev": "450d2ae463bb8fb55194f33073ebdd83b8b7ddaa", + "rev": "ec4fc980fc8d8d7954f0cc824e58297c3bf7b992", "type": "github" }, "original": { - "owner": "isabelroses", + "owner": "tgirlcloud", "repo": "easy-hosts", "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1737268357, + "narHash": "sha256-J3At8JDKpQGDeDUcz1eh0h5yFwNH7fPfm+N95TxiOq4=", + "owner": "nix-community", + "repo": "fenix", + "rev": "f9662e6ea6020671e1e17102bd20d6692bb38aba", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" }, "original": { "type": "tarball", @@ -263,6 +276,22 @@ } }, "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1733328505, @@ -321,6 +350,28 @@ } }, "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "hydra", + "nix-eval-jobs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730504689, + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { "inputs": { "nixpkgs-lib": [ "nur", @@ -411,7 +462,7 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1731533236, @@ -445,6 +496,21 @@ "type": "github" } }, + "flakey-profile": { + "locked": { + "lastModified": 1712898590, + "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=", + "owner": "lf-", + "repo": "flakey-profile", + "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d", + "type": "github" + }, + "original": { + "owner": "lf-", + "repo": "flakey-profile", + "type": "github" + } + }, "freetype2": { "flake": false, "locked": { @@ -463,13 +529,35 @@ } }, "git-hooks": { + "inputs": { + "flake-compat": [], + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "git-hooks_2": { "inputs": { "flake-compat": [ "haivim", "nixvim", "flake-compat" ], - "gitignore": "gitignore", + "gitignore": "gitignore_2", "nixpkgs": [ "haivim", "nixvim", @@ -477,11 +565,11 @@ ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -491,6 +579,27 @@ } }, "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { "inputs": { "nixpkgs": [ "haivim", @@ -513,7 +622,7 @@ "type": "github" } }, - "gitignore_2": { + "gitignore_3": { "inputs": { "nixpkgs": [ "hyprland", @@ -537,18 +646,18 @@ }, "haivim": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ], "nixvim": "nixvim" }, "locked": { - "lastModified": 1736641069, - "narHash": "sha256-exBcOT48WPLda1Rw8D6eeGkgs/1UxCl2HXtloGJLLoM=", + "lastModified": 1737764118, + "narHash": "sha256-+elvcDCY9iRqahLLV8Z7LQsk8gAHCXPAudfQtFclgvI=", "owner": "blahai", "repo": "haivim", - "rev": "7908a7bc4519e676d0af521080719317fe6b7d32", + "rev": "3cd7a2f023b24b74ce89e415aed143d795e884ca", "type": "github" }, "original": { @@ -595,41 +704,19 @@ "type": "github" } }, - "home-manager-stable": { - "inputs": { - "nixpkgs": [ - "catppuccin", - "nixpkgs-stable" - ] - }, - "locked": { - "lastModified": 1734366194, - "narHash": "sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "80b0fdf483c5d1cb75aaad909bd390d48673857f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-24.11", - "repo": "home-manager", - "type": "github" - } - }, "home-manager_2": { "inputs": { "nixpkgs": [ - "catppuccin", + "chaotic", "nixpkgs" ] }, "locked": { - "lastModified": 1734622215, - "narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=", + "lastModified": 1737221749, + "narHash": "sha256-igllW0yG+UbetvhT11jnt9RppSHXYgMykYhZJeqfHs0=", "owner": "nix-community", "repo": "home-manager", - "rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be", + "rev": "97d7946b5e107dd03cc82f21165251d4e0159655", "type": "github" }, "original": { @@ -641,16 +728,17 @@ "home-manager_3": { "inputs": { "nixpkgs": [ - "chaotic", + "haivim", + "nixvim", "nixpkgs" ] }, "locked": { - "lastModified": 1736508663, - "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "lastModified": 1737704314, + "narHash": "sha256-zta8jvOQ2wRCZmiwFEnS5iCulWAh8e+fLUlQxrgOBjM=", "owner": "nix-community", "repo": "home-manager", - "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "rev": "a0428685572b134f6594e7d7f5db5e1febbab2d7", "type": "github" }, "original": { @@ -662,17 +750,15 @@ "home-manager_4": { "inputs": { "nixpkgs": [ - "haivim", - "nixvim", "nixpkgs" ] }, "locked": { - "lastModified": 1736508663, - "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "lastModified": 1737762889, + "narHash": "sha256-5HGG09bh/Yx0JA8wtBMAzt0HMCL1bYZ93x4IqzVExio=", "owner": "nix-community", "repo": "home-manager", - "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "rev": "daf04c5950b676f47a794300657f1d3d14c1a120", "type": "github" }, "original": { @@ -681,24 +767,24 @@ "type": "github" } }, - "home-manager_5": { + "hydra": { "inputs": { + "lix": "lix", + "nix-eval-jobs": "nix-eval-jobs", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1736508663, - "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", - "type": "github" + "lastModified": 1737272903, + "narHash": "sha256-mksBfF56gJ8UFuKlsswn8yIb7Xp5GQSHg0lFIa8uMzg=", + "rev": "5cdcd17cbfa5e433c2bb5c25adf0e9684ee38a11", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/hydra/archive/5cdcd17cbfa5e433c2bb5c25adf0e9684ee38a11.tar.gz?rev=5cdcd17cbfa5e433c2bb5c25adf0e9684ee38a11" }, "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" + "type": "tarball", + "url": "https://git.lix.systems/lix-project/hydra/archive/main.tar.gz" } }, "hyprcursor": { @@ -717,11 +803,11 @@ ] }, "locked": { - "lastModified": 1734906540, - "narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=", + "lastModified": 1737634937, + "narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "69270ba8f057d55b0e6c2dca0e165d652856e613", + "rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e", "type": "github" }, "original": { @@ -746,11 +832,11 @@ ] }, "locked": { - "lastModified": 1736115290, - "narHash": "sha256-Jcn6yAzfUMcxy3tN/iZRbi/QgrYm7XLyVRl9g/nbUl4=", + "lastModified": 1737634889, + "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "52202272d89da32a9f866c0d10305a5e3d954c50", + "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", "type": "github" }, "original": { @@ -766,20 +852,20 @@ "hyprgraphics": "hyprgraphics", "hyprland-protocols": "hyprland-protocols", "hyprland-qtutils": "hyprland-qtutils", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", + "hyprlang": "hyprlang_2", + "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_4", - "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_7", + "pre-commit-hooks": "pre-commit-hooks_2", + "systems": "systems_6", "xdph": "xdph" }, "locked": { - "lastModified": 1736613484, - "narHash": "sha256-vWqI0RuLigqNV20sI15rj/LeBCMSJiFJ59br00D6POk=", + "lastModified": 1737842278, + "narHash": "sha256-5N0ExKra/jw3HI/0EEIzmeJKHN9RIBV7ceR/sxQR11s=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "2778aff08fba59a34b404751039d7acb6bfb3bdf", + "rev": "8b1d6e3009c540457068e23e6c2bc201d20ce4d1", "type": "github" }, "original": { @@ -800,11 +886,11 @@ ] }, "locked": { - "lastModified": 1735774328, - "narHash": "sha256-vIRwLS9w+N99EU1aJ+XNOU6mJTxrUBa31i1r82l0V7s=", + "lastModified": 1737556638, + "narHash": "sha256-laKgI3mr2qz6tas/q3tuGPxMdsGhBi/w+HO+hO2f1AY=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "e3b6af97ddcfaafbda8e2828c719a5af84f662cb", + "rev": "4c75dd5c015c8a0e5a34c6d02a018a650f57feb5", "type": "github" }, "original": { @@ -813,8 +899,37 @@ "type": "github" } }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": "hyprlang", + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, "hyprland-qtutils": { "inputs": { + "hyprland-qt-support": "hyprland-qt-support", "hyprutils": [ "hyprland", "hyprutils" @@ -829,11 +944,11 @@ ] }, "locked": { - "lastModified": 1736114838, - "narHash": "sha256-FxbuGQExtN37ToWYnGmO6weOYN6WPHN/RAqbr7gNPek=", + "lastModified": 1737811848, + "narHash": "sha256-WZ7LeiKHk5Y94MU5gHIWn0r8asWxYOvie4LqfCjVIZU=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "6997fe382dcf396704227d2b98ffdd5066da6959", + "rev": "9c0831ff98856c0f312fcb8b57553fbe3dd34d5b", "type": "github" }, "original": { @@ -843,6 +958,36 @@ } }, "hyprlang": { + "inputs": { + "hyprutils": "hyprutils", + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "systems" + ] + }, + "locked": { + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprlang_2": { "inputs": { "hyprutils": [ "hyprland", @@ -858,11 +1003,11 @@ ] }, "locked": { - "lastModified": 1735393019, - "narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=", + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "55608efdaa387af7bfdc0eddb404c409958efa43", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", "type": "github" }, "original": { @@ -872,6 +1017,37 @@ } }, "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "hyprlang", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "hyprlang", + "systems" + ] + }, + "locked": { + "lastModified": 1737632363, + "narHash": "sha256-X9I8POSlHxBVjD0fiX1O2j7U9Zi1+4rIkrsyHP0uHXY=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "006620eb29d54ea9086538891404c78563d1bae1", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprutils_2": { "inputs": { "nixpkgs": [ "hyprland", @@ -883,11 +1059,11 @@ ] }, "locked": { - "lastModified": 1736164519, - "narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=", + "lastModified": 1737725508, + "narHash": "sha256-jGmcPc6y/prg/4A8KGYqJ27nSPaProCMiFadaxNAKvA=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3c895da64b0eb19870142196fa48c07090b441c4", + "rev": "fb0c2d1de3d1ef7396d19c18ac09e12bd956929e", "type": "github" }, "original": { @@ -922,34 +1098,6 @@ } }, "ixx": { - "inputs": { - "flake-utils": [ - "catppuccin", - "nuscht-search", - "flake-utils" - ], - "nixpkgs": [ - "catppuccin", - "nuscht-search", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1729958008, - "narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=", - "owner": "NuschtOS", - "repo": "ixx", - "rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "ref": "v0.0.6", - "repo": "ixx", - "type": "github" - } - }, - "ixx_2": { "inputs": { "flake-utils": [ "haivim", @@ -988,11 +1136,11 @@ ] }, "locked": { - "lastModified": 1736580596, - "narHash": "sha256-t+BygGMcg1yyyTBXCAJWx4ZnH1StDzbd8CfzQonAJp8=", + "lastModified": 1737126697, + "narHash": "sha256-k1YhjONkiKBHzbjNy4ZsjysBac5UJSolCVq9cTKLeKM=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "1ddf0b3bfe076fa50b84244e42a55b9234f96083", + "rev": "27a0ddac1a14e10ba98530f59db728951495f2ce", "type": "github" }, "original": { @@ -1018,6 +1166,66 @@ "type": "github" } }, + "lix": { + "inputs": { + "flake-compat": "flake-compat_2", + "nix2container": "nix2container", + "nixpkgs": [ + "hydra", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1737238254, + "narHash": "sha256-GoOwW81pV5T0YhD3yuLZG0+/Qr/Ld4qC71eM0mD3pJA=", + "ref": "refs/heads/main", + "rev": "4cacb5412fedc9f37bc7a502540374f774d923cf", + "revCount": 16633, + "type": "git", + "url": "https://git.lix.systems/lix-project/lix" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/lix" + } + }, + "lix-module": { + "inputs": { + "flake-utils": "flake-utils_4", + "flakey-profile": "flakey-profile", + "lix": "lix_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737237494, + "narHash": "sha256-YMLrcBpf0TR5r/eaqm8lxzFPap2TxCor0ZGcK3a7+b8=", + "rev": "b90bf629bbd835e61f1317b99e12f8c831017006", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/b90bf629bbd835e61f1317b99e12f8c831017006.tar.gz?rev=b90bf629bbd835e61f1317b99e12f8c831017006" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0.tar.gz" + } + }, + "lix_2": { + "flake": false, + "locked": { + "lastModified": 1737234286, + "narHash": "sha256-CCKIAE84dzkrnlxJCKFyffAxP3yfsOAbdvydUGqq24g=", + "rev": "2837da71ec1588c1187d2e554719b15904a46c8b", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2837da71ec1588c1187d2e554719b15904a46c8b.tar.gz?rev=2837da71ec1588c1187d2e554719b15904a46c8b" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/lix/archive/2.92.0.tar.gz" + } + }, "nix-darwin": { "inputs": { "nixpkgs": [ @@ -1027,11 +1235,11 @@ ] }, "locked": { - "lastModified": 1736370755, - "narHash": "sha256-iWcjToBpx4PUd74uqvIGAfqqVfyrvRLRauC/SxEKIF0=", + "lastModified": 1737504076, + "narHash": "sha256-/B4XJnzYU/6K1ZZOBIgsa3K4pqDJrnC2579c44c+4rI=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "57733bd1dc81900e13438e5b4439239f1b29db0e", + "rev": "65cc1fa8e36ceff067daf6cfb142331f02f524d3", "type": "github" }, "original": { @@ -1040,6 +1248,34 @@ "type": "github" } }, + "nix-eval-jobs": { + "inputs": { + "flake-parts": "flake-parts_3", + "lix": [ + "hydra", + "lix" + ], + "nix-github-actions": "nix-github-actions_2", + "nixpkgs": [ + "hydra", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1737237917, + "narHash": "sha256-xd3/Wr4aPc2MY61qyQ6qQ8AGoG3H/DDcJWziP4EhhXY=", + "ref": "refs/heads/main", + "rev": "6482bee40b89ab2c28d2e988848aa9ae0429d78c", + "revCount": 621, + "type": "git", + "url": "https://git.lix.systems/lix-project/nix-eval-jobs" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/nix-eval-jobs" + } + }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -1063,87 +1299,45 @@ "type": "github" } }, + "nix-github-actions_2": { + "inputs": { + "nixpkgs": [ + "hydra", + "nix-eval-jobs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1731952509, + "narHash": "sha256-p4gB3Rhw8R6Ak4eMl8pqjCPOLCZRqaehZxdZ/mbFClM=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "7b5f051df789b6b20d259924d349a9ba3319b226", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix2container": { + "flake": false, + "locked": { + "lastModified": 1724996935, + "narHash": "sha256-njRK9vvZ1JJsP8oV2OgkBrpJhgQezI03S7gzskCcHos=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "fa6bb0a1159f55d071ba99331355955ae30b3401", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, "nixpkgs": { - "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-smol": { - "locked": { - "lastModified": 1736657626, - "narHash": "sha256-FWlPMUzp0lkQBdhKlPqtQdqmp+/C+1MBiEytaYfrCTY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "2f9e2f85cb14a46410a1399aa9ea7ecf433e422e", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1734600368, - "narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1736523798, - "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "130595eba61081acde9001f43de3248d8888ac4a", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { "locked": { "lastModified": 1736012469, "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", @@ -1159,13 +1353,93 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs-regression": { "locked": { - "lastModified": 1736523798, - "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-smol": { + "locked": { + "lastModified": 1737795611, + "narHash": "sha256-0kGPO515JdDt6gPcR25QTGyNJnT1UFtH1tdkR2QdLAY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "130595eba61081acde9001f43de3248d8888ac4a", + "rev": "ed45d51fb4c860e70760a042dd9ff99bd016497e", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1737632463, + "narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1737622296, + "narHash": "sha256-GWHH9ljsR0LR29IEruJnKVVk6veeQpo7kfolyDyCVGQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "055c50feaa548eadca66407630961b77f3ebb750", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1737632463, + "narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1737746512, + "narHash": "sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "825479c345a7f806485b7f00dbe3abb50641b083", "type": "github" }, "original": { @@ -1177,11 +1451,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1736523798, - "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", + "lastModified": 1737746512, + "narHash": "sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "130595eba61081acde9001f43de3248d8888ac4a", + "rev": "825479c345a7f806485b7f00dbe3abb50641b083", "type": "github" }, "original": { @@ -1212,19 +1486,19 @@ "devshell": "devshell", "flake-compat": "flake-compat", "flake-parts": "flake-parts_2", - "git-hooks": "git-hooks", - "home-manager": "home-manager_4", + "git-hooks": "git-hooks_2", + "home-manager": "home-manager_3", "nix-darwin": "nix-darwin", "nixpkgs": "nixpkgs_3", "nuschtosSearch": "nuschtosSearch", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1736598781, - "narHash": "sha256-Y0o9ahm6Kk0DumTo80/vKspkHOkbtFgKCNiICyRjhMs=", + "lastModified": 1737747541, + "narHash": "sha256-dA54OnUCUtVZfnSuD1dAEcosZzx/tch9KvtDz/Y3FIo=", "owner": "nix-community", "repo": "nixvim", - "rev": "2fc2132a78753fc3d7ec732044eff7ad69530055", + "rev": "5fda6e093da13f37c63a5577888a668c38f30dc7", "type": "github" }, "original": { @@ -1235,16 +1509,16 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_3", + "flake-parts": "flake-parts_4", "nixpkgs": "nixpkgs_6", - "treefmt-nix": "treefmt-nix_2" + "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1736693592, - "narHash": "sha256-Tw2+wsDdF9HqmTdDY5rExE8hIwcxf8AkDQxnnq4NdlI=", + "lastModified": 1737841565, + "narHash": "sha256-W2dAa+2c7UOKLDop9240ShxosBiWRRaYgGfswN/jz9o=", "owner": "nix-community", "repo": "NUR", - "rev": "04f34aa60ce5a78bb5c18263ff2cecbc85314b73", + "rev": "83b5a10fa785f0924fae431ffdea2b12de23e789", "type": "github" }, "original": { @@ -1253,33 +1527,10 @@ "type": "github" } }, - "nuscht-search": { - "inputs": { - "flake-utils": "flake-utils", - "ixx": "ixx", - "nixpkgs": [ - "catppuccin", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733773348, - "narHash": "sha256-Y47y+LesOCkJaLvj+dI/Oa6FAKj/T9sKVKDXLNsViPw=", - "owner": "NuschtOS", - "repo": "search", - "rev": "3051be7f403bff1d1d380e4612f0c70675b44fc9", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "repo": "search", - "type": "github" - } - }, "nuschtosSearch": { "inputs": { - "flake-utils": "flake-utils_4", - "ixx": "ixx_2", + "flake-utils": "flake-utils_3", + "ixx": "ixx", "nixpkgs": [ "haivim", "nixvim", @@ -1287,11 +1538,11 @@ ] }, "locked": { - "lastModified": 1735854821, - "narHash": "sha256-Iv59gMDZajNfezTO0Fw6LHE7uKAShxbvMidmZREit7c=", + "lastModified": 1737372689, + "narHash": "sha256-nH3zK2ki0fd5o5qvbGHxukE4qnOLJa1uCzoDObG5vrE=", "owner": "NuschtOS", "repo": "search", - "rev": "836908e3bddd837ae0f13e215dd48767aee355f0", + "rev": "570cc17bbc25650eb7d69e4fcda8cfd2f1656922", "type": "github" }, "original": { @@ -1301,20 +1552,36 @@ } }, "pre-commit-hooks": { + "flake": false, + "locked": { + "lastModified": 1733318908, + "narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "6f4e2a2112050951a314d2733a994fbab94864c6", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_2": { "inputs": { - "flake-compat": "flake-compat_2", - "gitignore": "gitignore_2", + "flake-compat": "flake-compat_3", + "gitignore": "gitignore_3", "nixpkgs": [ "hyprland", "nixpkgs" ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -1329,22 +1596,44 @@ "ags": "ags", "catppuccin": "catppuccin", "chaotic": "chaotic", + "deploy-rs": "deploy-rs", "disko": "disko", "easy-hosts": "easy-hosts", "flake-parts": "flake-parts", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", + "git-hooks": "git-hooks", "haivim": "haivim", - "home-manager": "home-manager_5", + "home-manager": "home-manager_4", + "hydra": "hydra", "hyprland": "hyprland", + "lix-module": "lix-module", "nixpkgs": "nixpkgs_5", "nixpkgs-smol": "nixpkgs-smol", "nur": "nur", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", "systems": "systems_8", + "treefmt-nix": "treefmt-nix_4", "wezterm": "wezterm" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1737215993, + "narHash": "sha256-W8xioeq+h9dzGvtXPlQAn2nXtgNDN6C8uA1/9F2JP5I=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "248bd511aee2c1c1cb2d5314649521d6d93b854a", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { "nixpkgs": [ @@ -1373,11 +1662,11 @@ ] }, "locked": { - "lastModified": 1736515725, - "narHash": "sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs=", + "lastModified": 1737411508, + "narHash": "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f214c1b76c347a4e9c8fb68c73d4293a6820d125", + "rev": "015d461c16678fc02a2f405eb453abb509d4e1d4", "type": "github" }, "original": { @@ -1388,17 +1677,17 @@ }, "spicetify-nix": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1736655351, - "narHash": "sha256-+kAbUaJxCwKAxFvn3WL8dbzxoPaV+WKP4RG0R4JI4rY=", + "lastModified": 1737778506, + "narHash": "sha256-kdqwOnk0jFb3E01HFqUFAW+NQuBp39uwrpWSXmFAKGs=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "749a821c86fb61be668d7583761f432f21772306", + "rev": "aeaa9b2fad9d658e8982a140327e345feffe8850", "type": "github" }, "original": { @@ -1483,21 +1772,6 @@ } }, "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -1512,6 +1786,21 @@ "type": "github" } }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_8": { "locked": { "lastModified": 1681028828, @@ -1551,11 +1840,11 @@ ] }, "locked": { - "lastModified": 1736154270, - "narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=", + "lastModified": 1737483750, + "narHash": "sha256-5An1wq5U8sNycOBBg3nsDDgpwBmR9liOpDGlhliA6Xo=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b", + "rev": "f2cc121df15418d028a59c9737d38e3a90fbaf8f", "type": "github" }, "original": { @@ -1565,6 +1854,28 @@ } }, "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "hydra", + "nix-eval-jobs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732292307, + "narHash": "sha256-5WSng844vXt8uytT5djmqBCkopyle6ciFgteuA9bJpw=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "705df92694af7093dfbb27109ce16d828a79155f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { "inputs": { "nixpkgs": [ "nur", @@ -1585,6 +1896,26 @@ "type": "github" } }, + "treefmt-nix_4": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737483750, + "narHash": "sha256-5An1wq5U8sNycOBBg3nsDDgpwBmR9liOpDGlhliA6Xo=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "f2cc121df15418d028a59c9737d38e3a90fbaf8f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "wezterm": { "inputs": { "flake-utils": "flake-utils_5", @@ -1597,11 +1928,11 @@ }, "locked": { "dir": "nix", - "lastModified": 1735931735, - "narHash": "sha256-4wzEN5IPYmqLP8TAdFatoRhCZ7W9y65AWoYN0Qgvbg8=", + "lastModified": 1737758457, + "narHash": "sha256-Z50/JcMQI2R9ttEd20gXEhuAXvAI0yp3bM7j6/Xoi+A=", "owner": "wez", "repo": "wezterm", - "rev": "8e9cf912e66f704f300fac6107206a75036de1e7", + "rev": "4bf0007cefff7f1ad139d89b54f074d5ad7d2184", "type": "github" }, "original": { @@ -1639,11 +1970,11 @@ ] }, "locked": { - "lastModified": 1734907020, - "narHash": "sha256-p6HxwpRKVl1KIiY5xrJdjcEeK3pbmc///UOyV6QER+w=", + "lastModified": 1737634991, + "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "d7f18dda5e511749fa1511185db3536208fb1a63", + "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 1aef82d..b1623e7 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,19 @@ wezterm.url = "github:wez/wezterm?dir=nix"; catppuccin.url = "github:catppuccin/nix"; hyprland.url = "github:hyprwm/Hyprland"; + lix-module = { + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0.tar.gz"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hydra = { + url = "https://git.lix.systems/lix-project/hydra/archive/main.tar.gz"; + inputs.nixpkgs.follows = "nixpkgs"; + }; haivim = { url = "github:blahai/haivim"; - inputs = {nixpkgs.follows = "nixpkgs";}; + inputs.nixpkgs.follows = "nixpkgs"; }; ags = { @@ -46,6 +55,11 @@ url = "github:nix-systems/default"; }; + treefmt-nix = { + url = "github:numtide/treefmt-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; @@ -56,7 +70,24 @@ }; easy-hosts = { - url = "github:isabelroses/easy-hosts"; + url = "github:tgirlcloud/easy-hosts"; + }; + + deploy-rs = { + url = "github:serokell/deploy-rs"; + inputs = { + nixpkgs.follows = "nixpkgs"; + utils.follows = "flake-utils"; + flake-compat.follows = ""; + }; + }; + + git-hooks = { + url = "github:cachix/git-hooks.nix"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-compat.follows = ""; + }; }; home-manager = { diff --git a/home/default.nix b/home/default.nix index 0967ef4..d41ae6d 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1 +1,45 @@ -{} +{ + lib, + self, + self', + config, + inputs, + inputs', + ... +}: let + inherit (lib.modules) mkDefault; + inherit (lib.attrsets) genAttrs; + inherit (config.olympus.programs) defaults; +in { + home-manager = { + verbose = true; + useUserPackages = true; + useGlobalPkgs = true; + backupFileExtension = "bak"; + + extraSpecialArgs = { + inherit + inputs + self + inputs' + self' + defaults + ; + }; + + users = genAttrs config.olympus.system.users (name: ./${name}); + + # we should define grauntied common modules here + sharedModules = [ + { + home.stateVersion = config.system.stateVersion; + + # reload system units when changing configs + systemd.user.startServices = mkDefault "sd-switch"; # or "legacy" if "sd-switch" breaks again + + # let HM manage itself when in standalone mode + programs.home-manager.enable = true; + } + ]; + }; +} diff --git a/home/elissa/default.nix b/home/elissa/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/elissa/default.nix @@ -0,0 +1 @@ +{} diff --git a/home/pingu/default.nix b/home/pingu/default.nix new file mode 100644 index 0000000..02380b8 --- /dev/null +++ b/home/pingu/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./packages + ./system + ]; +} diff --git a/home/pingu/packages/cli/default.nix b/home/pingu/packages/cli/default.nix new file mode 100644 index 0000000..5cf8372 --- /dev/null +++ b/home/pingu/packages/cli/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./shell + ]; +} diff --git a/home/pingu/packages/cli/shell/default.nix b/home/pingu/packages/cli/shell/default.nix new file mode 100644 index 0000000..56cb916 --- /dev/null +++ b/home/pingu/packages/cli/shell/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./fish.nix + ]; +} diff --git a/home/pingu/packages/cli/shell/fish.nix b/home/pingu/packages/cli/shell/fish.nix new file mode 100644 index 0000000..7cb0120 --- /dev/null +++ b/home/pingu/packages/cli/shell/fish.nix @@ -0,0 +1,96 @@ +{ + osConfig, + lib, + pkgs, + ... +}: let + inherit (lib.modules) mkIf; +in { + home.packages = with pkgs; [ + neofetch + ]; + programs = mkIf osConfig.olympus.programs.fish.enable { + fish = { + enable = true; + + interactiveShellInit = '' + function fish_greeting + if test -z $DEVSHELL_NIX; + echo The time is (set_color purple; date +%T; set_color purple) + if test -z $SSH_CLIENT; + fastfetch + else + neofetch + end + end + end + ''; + + shellAliases = { + "ls" = "eza -l -a --group-directories-first --icons"; + "grep" = "rg -p"; + "rg" = "rg -p"; + + "cp" = "cp -rv"; + + ":q" = "exit"; + ":qa" = "pkill fish"; + ".." = "z .."; + ".2" = "z ../.."; + ".3" = "z ../../.."; + ".4" = "z ../../../.."; + ".5" = "z ../../../../.."; + ".r" = "z /"; + ".h" = "z ~"; + ".c" = "z ~/.config/"; + ".a" = "z ~/.config/ags/"; + ".n" = "z ~/.config/nixos/"; + ".d" = "z ~/Documents/"; + ".C" = "z ~/Documents/code/"; + ".D" = "z ~/Downloads/"; + ".p" = "z ~/Pictures/"; + + # git + "gc" = "git clone"; + "gp" = "git push"; + "ga" = "git add"; + "gan" = "git add -N ."; + "gcm" = "git commit -m"; + + "fetch" = "clear ; fastfetch --logo ~/Downloads/gay.png --logo-width 32"; + "hvim" = "z ~/.config/hypr/ ; nvim ; z"; + "fvim" = "nvim ~/.config/fish/config.fish"; + "se" = "sudoedit"; + "vim" = "nvim"; + "nvide" = "env -u WAYLAND_DISPLAY neovide --multigrid"; + "transcat" = "queercat -b -f 1 -v 0.45 -h 0.45"; + "clock" = "tty-clock -s -C 5 -D -c -b"; + }; + + functions = { + os-age = '' + stat / | awk '/Birth: /{print $2 " " substr($3,1,5)}' + ''; + + build-iso = '' + cd ~/.config/nixos + nix build .#nixosConfigurations.epimetheus.config.system.build.isoImage + ''; + + # Credit for these 3 + # https://www.reddit.com/r/linux/comments/1fq0za8/comment/lp1ybdn + disks = '' + lsblk -o NAME,MOUNTPOINT,FSTYPE,FSUSE%,SIZE + ''; + + gr = '' + set GROOT (git rev-parse --show-toplevel 2>/dev/null); and cd $GROOT; or return $argv + ''; + + mkcd = '' + mkdir -p -- $argv[1] && cd $argv; or return $status + ''; + }; + }; + }; +} diff --git a/home/pingu/packages/default.nix b/home/pingu/packages/default.nix new file mode 100644 index 0000000..5b758fc --- /dev/null +++ b/home/pingu/packages/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./cli + ./gui + ./misc + ]; +} diff --git a/home/pingu/packages/gui/default.nix b/home/pingu/packages/gui/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/pingu/packages/gui/default.nix @@ -0,0 +1 @@ +{} diff --git a/home/pingu/packages/misc/default.nix b/home/pingu/packages/misc/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/pingu/packages/misc/default.nix @@ -0,0 +1 @@ +{} diff --git a/home/pingu/system/default.nix b/home/pingu/system/default.nix new file mode 100644 index 0000000..7994182 --- /dev/null +++ b/home/pingu/system/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./env.nix + ]; +} diff --git a/home/pingu/system/env.nix b/home/pingu/system/env.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/pingu/system/env.nix @@ -0,0 +1 @@ +{} diff --git a/home/user/default.nix b/home/user/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/user/default.nix @@ -0,0 +1 @@ +{} diff --git a/modules/base/default.nix b/modules/base/default.nix index 344c6b1..1813e3d 100644 --- a/modules/base/default.nix +++ b/modules/base/default.nix @@ -1,5 +1,8 @@ { imports = [ ./nix + ./options + ./users + ./programs.nix ]; } diff --git a/modules/base/nix/default.nix b/modules/base/nix/default.nix index d8d9dc0..8ca52fd 100644 --- a/modules/base/nix/default.nix +++ b/modules/base/nix/default.nix @@ -1,5 +1,6 @@ { imports = [ ./system.nix + ./nix.nix ]; } diff --git a/modules/base/nix/nix.nix b/modules/base/nix/nix.nix new file mode 100644 index 0000000..8d68efe --- /dev/null +++ b/modules/base/nix/nix.nix @@ -0,0 +1,134 @@ +{ + lib, + pkgs, + inputs, + ... +}: let + inherit (lib.attrsets) filterAttrs mapAttrs; + inherit (lib.types) isType; + + flakeInputs = filterAttrs (name: value: (isType "flake" value) && (name != "self")) inputs; + + sudoers = "@wheel"; +in { + nix = { + # pin the registry to avoid downloading and evaluating a new nixpkgs version everytime + registry = mapAttrs (_: flake: {inherit flake;}) flakeInputs; + + # set up garbage collection to run , and removing packages after 3 days + gc = { + automatic = true; + options = "--delete-older-than 3d"; + }; + + # https://docs.lix.systems/manual/lix/nightly/command-ref/conf-file.html + settings = { + # Free up to 20GiB whenever there is less than 5GB left. + # this setting is in bytes, so we multiply with 1024 by 3 + min-free = 5 * 1024 * 1024 * 1024; + max-free = 20 * 1024 * 1024 * 1024; + + # automatically optimise symlinks + # Disable auto-optimise-store because of this issue: + # https://github.com/NixOS/nix/issues/7273 + auto-optimise-store = pkgs.stdenv.hostPlatform.isLinux; + + # users or groups which are allowed to do anything with the Nix daemon + allowed-users = [sudoers]; + # users or groups which are allowed to manage the nix store + trusted-users = [sudoers]; + + # we don't want to track the registry, but we do want to allow the usage + # of the `flake:` references, so we need to enable use-registries + use-registries = true; + flake-registry = pkgs.writers.writeJSON "flakes-empty.json" { + flakes = []; + version = 2; + }; + + # let the system decide the number of max jobs + max-jobs = "auto"; + + # build inside sandboxed environments + # we only enable this on linux because it servirly breaks on darwin + sandbox = pkgs.stdenv.hostPlatform.isLinux; + + # supported system features + system-features = [ + "nixos-test" + "kvm" + "recursive-nix" + "big-parallel" + ]; + + # continue building derivations even if one fails + # this is important for keeping a nice cache of derivations, usually because I walk away + # from my PC when building and it would be annoying to deal with nothing saved + keep-going = true; + + # show more log lines for failed builds, as this happens alot and is useful + log-lines = 30; + + # https://docs.lix.systems/manual/lix/nightly/contributing/experimental-features.html + extra-experimental-features = [ + # enables flakes, needed for this config + "flakes" + + # enables the nix3 commands, a requirement for flakes + "nix-command" + + # allow nix to call itself + "recursive-nix" + + # allow nix to build and use content addressable derivations, these are nice beaccase + # they prevent rebuilds when changes to the derivation do not result in changes to the derivation's output + "ca-derivations" + + # Allows Nix to automatically pick UIDs for builds, rather than creating nixbld* user accounts + # which is BEYOND annoying, which makes this a really nice feature to have + "auto-allocate-uids" + + # allows Nix to execute builds inside cgroups + # remember you must also enable use-cgroups in the nix.conf or settings + "cgroups" + + # allow passing installables to nix repl, making its interface consistent with the other experimental commands + "repl-flake" + + # allow usage of the pipe operator in nix expressions + "pipe-operator" + + # enable the use of the fetchClosure built-in function in the Nix language. + "fetch-closure" + + # dependencies in derivations on the outputs of derivations that are themselves derivations outputs. + "dynamic-derivations" + ]; + + # don't warn me if the current working tree is dirty + # i don't need the warning because i'm working on it right now + warn-dirty = false; + + # maximum number of parallel TCP connections used to fetch imports and binary caches, 0 means no limit + http-connections = 50; + + # whether to accept nix configuration from a flake without prompting + # littrally a CVE waiting to happen + accept-flake-config = false; + + # build from source if the build fails from a binary source + # fallback = true; + + # this defaults to true, however it slows down evaluation so maybe we should disable it + # some day, but we do need it for catppuccin/nix so maybe not too soon + allow-import-from-derivation = true; + + # for direnv GC roots + keep-derivations = true; + keep-outputs = true; + + # use xdg base directories for all the nix things + use-xdg-base-directories = true; + }; + }; +} diff --git a/modules/base/options/default.nix b/modules/base/options/default.nix new file mode 100644 index 0000000..9680e46 --- /dev/null +++ b/modules/base/options/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./device.nix + ./programs + ]; +} diff --git a/modules/base/options/device.nix b/modules/base/options/device.nix new file mode 100644 index 0000000..e694ab9 --- /dev/null +++ b/modules/base/options/device.nix @@ -0,0 +1,15 @@ +{lib, ...}: let + inherit (lib.types) enum; + inherit (lib.options) mkOption; +in { + options.olympus.device.type = mkOption { + type = enum [ + "laptop" + "desktop" + "server" + "hybrid" + "vm" + ]; + default = ""; + }; +} diff --git a/modules/base/options/programs/default.nix b/modules/base/options/programs/default.nix new file mode 100644 index 0000000..c103831 --- /dev/null +++ b/modules/base/options/programs/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./shells.nix + ./defaults.nix + ]; +} diff --git a/modules/base/options/programs/defaults.nix b/modules/base/options/programs/defaults.nix new file mode 100644 index 0000000..d3a76ff --- /dev/null +++ b/modules/base/options/programs/defaults.nix @@ -0,0 +1,93 @@ +{lib, ...}: let + inherit (lib.options) mkOption; + inherit (lib.types) enum nullOr; +in { + options.olympus.programs.defaults = { + shell = mkOption { + type = enum [ + "bash" + "zsh" + "fish" + ]; + default = "bash"; + }; + + terminal = mkOption { + type = enum [ + "alacritty" + "kitty" + "wezterm" + "foot" + ]; + default = "wezterm"; + }; + + fileManager = mkOption { + type = enum [ + "cosmic-files" + "thunar" + "dolphin" + "nemo" + ]; + default = "cosmic-files"; + }; + + browser = mkOption { + type = enum [ + "firefox" + "floorp" + "chromium" + "thorium" + ]; + default = "floorp"; + }; + + editor = mkOption { + type = enum [ + "nvim" + ]; + default = "nvim"; + }; + + launcher = mkOption { + type = nullOr (enum [ + "rofi" + "wofi" + "cosmic-launcher" + ]); + default = "wofi"; + }; + + bar = mkOption { + type = nullOr (enum [ + "waybar" + "ags" + ]); + default = "ags"; + }; + + screenLocker = mkOption { + type = nullOr (enum [ + "hyprlock" + "swaylock" + "gtklock" + "cosmic-greeter" + ]); + default = "hyprlock"; + description = '' + The lockscreen module to be loaded by home-manager. + ''; + }; + + noiseSuppressor = mkOption { + type = nullOr (enum [ + "rnnoise" + "noisetorch" + ]); + default = "rnnoise"; + description = '' + The noise suppressor to be used for desktop systems with sound enabled. + ''; + }; + }; +} diff --git a/modules/base/options/programs/shells.nix b/modules/base/options/programs/shells.nix new file mode 100644 index 0000000..a6d6745 --- /dev/null +++ b/modules/base/options/programs/shells.nix @@ -0,0 +1,26 @@ +{ + lib, + pkgs, + ... +}: let + inherit (lib.options) mkEnableOption mkPackageOption; + inherit (lib.attrsets) recursiveUpdate; + + mkProgram = pkgs: name: extraConfig: + recursiveUpdate { + enable = mkEnableOption "Enable ${name}"; + package = mkPackageOption pkgs name {}; + } + extraConfig; +in { + options.olympus.programs = { + bash = mkProgram pkgs "bash" { + enable.default = true; + package.default = pkgs.bashInteractive; + }; + + zsh = mkProgram pkgs "zsh" {}; + + fish = mkProgram pkgs "fish" {}; + }; +} diff --git a/modules/base/programs.nix b/modules/base/programs.nix new file mode 100644 index 0000000..eb97ce4 --- /dev/null +++ b/modules/base/programs.nix @@ -0,0 +1,18 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (lib.meta) getExe; + + bashPrompt = '' + eval "$(${getExe pkgs.starship} init bash)" + ''; +in { + # home-manager is so strange and needs these declared multiple times + programs = { + fish.enable = config.olympus.programs.fish.enable; + zsh.enable = config.olympus.programs.zsh.enable; + }; +} diff --git a/modules/base/users/default.nix b/modules/base/users/default.nix new file mode 100644 index 0000000..f77402a --- /dev/null +++ b/modules/base/users/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./pingu.nix + ./options.nix + ./root.nix + ./mkuser.nix + ]; +} diff --git a/modules/base/users/mkuser.nix b/modules/base/users/mkuser.nix new file mode 100644 index 0000000..dbc17c3 --- /dev/null +++ b/modules/base/users/mkuser.nix @@ -0,0 +1,45 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkDefault; + inherit (lib.attrsets) genAttrs; + inherit (builtins) filter hasAttr; + ifTheyExist = config: groups: filter (group: hasAttr group config.users.groups) groups; +in { + users.users = genAttrs config.olympus.system.users ( + name: { + home = "/home/" + name; + shell = config.olympus.programs.${config.olympus.programs.defaults.shell}.package; + + uid = mkDefault 1000; + isNormalUser = true; + initialPassword = mkDefault "changeme"; + + # only add groups that exist + extraGroups = + [ + "wheel" + "nix" + ] + ++ ifTheyExist config [ + "network" + "networkmanager" + "systemd-journal" + "audio" + "pipewire" + "video" + "input" + "plugdev" + "tss" + "power" + "mysql" + "docker" + "git" + "libvirtd" + "cloudflared" + ]; + } + ); +} diff --git a/modules/base/users/options.nix b/modules/base/users/options.nix new file mode 100644 index 0000000..227d663 --- /dev/null +++ b/modules/base/users/options.nix @@ -0,0 +1,25 @@ +{ + lib, + config, + ... +}: let + inherit (lib.options) mkOption; + inherit (lib.types) enum listOf str; +in { + options.olympus.system = { + mainUser = mkOption { + type = enum config.olympus.system.users; + description = "The username of the main user for your system"; + default = builtins.elemAt config.olympus.system.users 0; + }; + + users = mkOption { + type = listOf str; + default = ["pingu"]; + description = '' + A list of users that you wish to declare as your non-system users. The first username + in the list will be treated as your main user unless {option}`olympus.system.mainUser` is set. + ''; + }; + }; +} diff --git a/modules/base/users/pingu.nix b/modules/base/users/pingu.nix new file mode 100644 index 0000000..aae6581 --- /dev/null +++ b/modules/base/users/pingu.nix @@ -0,0 +1,14 @@ +{ + lib, + config, + ... +}: let + inherit (builtins) elem; + inherit (lib.modules) mkIf; +in { + config = mkIf (elem "pingu" config.olympus.system.users) { + users.users.pingu.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPbmiNqoyeKXk/VopFm2cFfEnV4cKCFBhbhyYB69Fuu" + ]; + }; +} diff --git a/modules/base/users/root.nix b/modules/base/users/root.nix new file mode 100644 index 0000000..1a6a378 --- /dev/null +++ b/modules/base/users/root.nix @@ -0,0 +1,13 @@ +{ + lib, + pkgs, + ... +}: { + users.users.root = lib.modules.mkIf pkgs.stdenv.hostPlatform.isLinux { + initialPassword = "changeme"; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPbmiNqoyeKXk/VopFm2cFfEnV4cKCFBhbhyYB69Fuu" + ]; + }; +} diff --git a/modules/flake/args.nix b/modules/flake/args.nix index 77a13fc..90f794e 100644 --- a/modules/flake/args.nix +++ b/modules/flake/args.nix @@ -11,7 +11,9 @@ allowUnfree = true; allowUnsupportedSystem = true; }; - # overlays = [ inputs.nix-topology.overlays.default ]; + overlays = [ + # inputs.nix-topology.overlays.default + ]; }; }; } diff --git a/modules/flake/default.nix b/modules/flake/default.nix index 593fc8f..5295a4d 100644 --- a/modules/flake/default.nix +++ b/modules/flake/default.nix @@ -1,7 +1,9 @@ { imports = [ ../../systems + ./programs ./args.nix + ./overlays.nix ]; } diff --git a/modules/flake/overlays.nix b/modules/flake/overlays.nix new file mode 100644 index 0000000..4dd2b9b --- /dev/null +++ b/modules/flake/overlays.nix @@ -0,0 +1,5 @@ +# this file creates an overlay based on the packgaes that out flake provides +{self, ...}: { + # get a list of packages for the host system, and if none exist use an empty set + flake.overlays.default = _: prev: self.packages.${prev.stdenv.hostPlatform.system} or {}; +} diff --git a/modules/flake/programs/default.nix b/modules/flake/programs/default.nix new file mode 100644 index 0000000..d7d5d95 --- /dev/null +++ b/modules/flake/programs/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./shell.nix + ./formatter.nix + # ./deploy.nix + ]; +} diff --git a/modules/flake/programs/formatter.nix b/modules/flake/programs/formatter.nix new file mode 100644 index 0000000..6c892af --- /dev/null +++ b/modules/flake/programs/formatter.nix @@ -0,0 +1,41 @@ +{inputs, ...}: { + imports = [inputs.treefmt-nix.flakeModule]; + + perSystem = { + pkgs, + config, + ... + }: { + formatter = config.treefmt.build.wrapper; + + treefmt = { + projectRootFile = "flake.nix"; + + programs = { + shellcheck.enable = true; + taplo.enable = true; + # TODO: configure this to not be ugly + # yamlfmt.enable = true; + + nixfmt = { + enable = true; + package = pkgs.alejandra; + }; + + prettier = { + enable = true; + package = pkgs.prettierd; + excludes = ["*.age"]; + settings = { + editorconfig = true; + }; + }; + + shfmt = { + enable = true; + indent_size = 2; + }; + }; + }; + }; +} diff --git a/modules/flake/programs/shell.nix b/modules/flake/programs/shell.nix new file mode 100644 index 0000000..c64fa27 --- /dev/null +++ b/modules/flake/programs/shell.nix @@ -0,0 +1,60 @@ +{ + perSystem = { + lib, + pkgs, + self', + config, + inputs', + ... + }: { + devShells = { + default = pkgs.mkShellNoCC { + name = "dotfiles"; + meta.description = "Development shell for this configuration"; + + # shellHook = config.pre-commit.installationScript; + + DIRENV_LOG_FORMAT = ""; + + FLAKE = "."; + NH_FLAKE = "."; + + packages = + [ + pkgs.git # flakes require git + pkgs.just # quick and easy task runner + pkgs.cocogitto # git helpers + self'.formatter # nix formatter + pkgs.nix-output-monitor # get clean diff between generations + inputs'.agenix.packages.agenix # secrets + ] + ++ lib.lists.optionals pkgs.stdenv.hostPlatform.isLinux [ + inputs'.deploy-rs.packages.deploy-rs # remote deployment + ]; + + inputsFrom = [config.treefmt.build.devShell]; + }; + + nixpkgs = pkgs.mkShellNoCC { + packages = builtins.attrValues { + inherit + (pkgs) + # package creation helpers + nurl + nix-init + # nixpkgs dev stuff + hydra-check + nixpkgs-lint + nixpkgs-review + nixpkgs-hammering + # nix helpers + nix-melt + nix-tree + nix-inspect + nix-search-cli + ; + }; + }; + }; + }; +} diff --git a/modules/iso/boot.nix b/modules/iso/boot.nix new file mode 100644 index 0000000..5e9d9ea --- /dev/null +++ b/modules/iso/boot.nix @@ -0,0 +1,25 @@ +{lib, ...}: let + inherit (lib.modules) mkForce mkAfter; +in { + boot = { + kernelParams = mkAfter [ + "noquiet" + "toram" + ]; + + # have no need for systemd-boot + loader.systemd-boot.enable = mkForce false; + # we don't need to have any raid tools in our system + swraid.enable = mkForce false; + + # https://github.com/NixOS/nixpkgs/issues/58959 + supportedFilesystems = mkForce [ + "btrfs" + "ext4" + "zfs" + "vfat" + "f2fs" + "xfs" + ]; + }; +} diff --git a/modules/iso/default.nix b/modules/iso/default.nix new file mode 100644 index 0000000..ee379de --- /dev/null +++ b/modules/iso/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./boot.nix + ./image.nix + ]; +} diff --git a/modules/iso/image.nix b/modules/iso/image.nix new file mode 100644 index 0000000..432247d --- /dev/null +++ b/modules/iso/image.nix @@ -0,0 +1,61 @@ +{ + lib, + self, + pkgs, + config, + ... +}: let + inherit (lib.modules) mkImageMediaOverride; + inherit (lib.sources) cleanSource; + + # Get the hostname from our networking name provided in the mkNixosIso builder + # If none is set then default to "nixos" + hostname = config.networking.hostName or "nixos"; + + # We get the rev of the git tree here and if we don't have one that + # must mean we have made local changes so we call the git tree "dirty" + rev = self.shortRev or "dirty"; + + # Give all the isos a consistent name + # $hostname-$release-$rev-$arch + name = "${hostname}-${config.system.nixos.release}-${rev}-${pkgs.stdenv.hostPlatform.uname.processor}"; +in { + image = { + # From the name defined before we end up with: name.iso + baseName = mkImageMediaOverride name; + + extension = "iso"; + }; + + isoImage = { + # volumeID is used is used by stage 1 of the boot process, so it must be distintctive + volumeID = mkImageMediaOverride name; + + # maximum compression, in exchange for build speed + squashfsCompression = "zstd -Xcompression-level 19"; + + # ISO image should be an EFI-bootable volume + makeEfiBootable = true; + + # ISO image should be bootable from USB + makeUsbBootable = true; + + # remove "-installer" boot menu label + appendToMenuLabel = ""; + + contents = [ + { + # This should help for debugging if we ever get an unbootable system and have to + # prefrom some repairs on the system itself + source = pkgs.memtest86plus + "/memtest.bin"; + target = "/boot/memtest.bin"; + } + { + # we also provide our flake such that a user can easily rebuild without needing + # to clone the repo, which needlessly slows the install process + source = cleanSource self; + target = "/flake"; + } + ]; + }; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index fb0898c..d8a7b7f 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -4,5 +4,8 @@ ./environment ./hardware ./networking + ./services + + ./remote-modules.nix ]; } diff --git a/modules/nixos/remote-modules.nix b/modules/nixos/remote-modules.nix new file mode 100644 index 0000000..3f9dd59 --- /dev/null +++ b/modules/nixos/remote-modules.nix @@ -0,0 +1,6 @@ +{inputs, ...}: { + imports = [ + inputs.home-manager.nixosModules.home-manager + inputs.lix-module.nixosModules.default + ]; +} diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix new file mode 100644 index 0000000..3534588 --- /dev/null +++ b/modules/nixos/services/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + #./hosted + ./system + ]; +} diff --git a/modules/nixos/services/hosted/caddy.nix b/modules/nixos/services/hosted/caddy.nix new file mode 100644 index 0000000..4bcd9e6 --- /dev/null +++ b/modules/nixos/services/hosted/caddy.nix @@ -0,0 +1,19 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.services) mkServiceOption; + + cfg = config.olympus.services.caddy; +in { + options.olympus.services.caddy = mkServiceOption "caddy" {domain = "blahai.gay";}; + + config = mkIf cfg.enable { + services.caddy = { + enable = true; + }; + }; +} diff --git a/modules/nixos/services/hosted/default.nix b/modules/nixos/services/hosted/default.nix new file mode 100644 index 0000000..f255565 --- /dev/null +++ b/modules/nixos/services/hosted/default.nix @@ -0,0 +1,10 @@ +{ + imports = [ + ./caddy.nix + ./forgejo.nix + ./redis.nix + ./searx.nix + ./uptime-kuma.nix + ./vaultwarden.nix + ]; +} diff --git a/modules/nixos/services/hosted/forgejo.nix b/modules/nixos/services/hosted/forgejo.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/nixos/services/hosted/forgejo.nix @@ -0,0 +1 @@ +{} diff --git a/modules/nixos/services/hosted/redis.nix b/modules/nixos/services/hosted/redis.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/nixos/services/hosted/redis.nix @@ -0,0 +1 @@ +{} diff --git a/modules/nixos/services/hosted/searx.nix b/modules/nixos/services/hosted/searx.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/nixos/services/hosted/searx.nix @@ -0,0 +1 @@ +{} diff --git a/modules/nixos/services/hosted/uptime-kuma.nix b/modules/nixos/services/hosted/uptime-kuma.nix new file mode 100644 index 0000000..50642b0 --- /dev/null +++ b/modules/nixos/services/hosted/uptime-kuma.nix @@ -0,0 +1,31 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.services) mkServiceOption; + + rdomain = config.networking.domain; + cfg = config.olympus.services.uptime-kuma; +in { + options.olympus.services.uptime-kuma = mkServiceOption "uptime-kuma" { + port = 3001; + domain = "kuma.${rdomain}"; + }; + + config = mkIf cfg.enable { + services.uptime-kuma = { + enable = true; + + # https://github.com/louislam/uptime-kuma/wiki/Environment-Variables + settings.PORT = toString cfg.port; + }; + + services.caddy.virtualHosts.${cfg.domain} = { + extraConfig = '' + reverse_proxy localhost:${cfg.port} + ''; + }; + }; +} diff --git a/modules/nixos/services/hosted/vaultwarden.nix b/modules/nixos/services/hosted/vaultwarden.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/nixos/services/hosted/vaultwarden.nix @@ -0,0 +1 @@ +{} diff --git a/modules/nixos/services/system/default.nix b/modules/nixos/services/system/default.nix new file mode 100644 index 0000000..e06deb2 --- /dev/null +++ b/modules/nixos/services/system/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + #./firmware.nix + #./logs.nix + #./monitoring.nix + #./oomd.nix + #./serial.nix + ]; +} diff --git a/modules/profiles/headless/default.nix b/modules/profiles/headless/default.nix index 0967ef4..578bb71 100644 --- a/modules/profiles/headless/default.nix +++ b/modules/profiles/headless/default.nix @@ -1 +1,10 @@ -{} +{ + imports = [ + ./documentation.nix + ./environment.nix + ./fonts.nix + ./services.nix + ./systemd.nix + ./xdg.nix + ]; +} diff --git a/modules/profiles/headless/documentation.nix b/modules/profiles/headless/documentation.nix new file mode 100644 index 0000000..4c6409e --- /dev/null +++ b/modules/profiles/headless/documentation.nix @@ -0,0 +1,18 @@ +{lib, ...}: let + inherit (lib.modules) mkForce; + inherit (lib.attrsets) mapAttrs; +in { + documentation = mapAttrs (_: mkForce) { + enable = false; + dev.enable = false; + doc.enable = false; + info.enable = false; + nixos.enable = false; + man = { + enable = false; + generateCaches = false; + man-db.enable = false; + mandoc.enable = false; + }; + }; +} diff --git a/modules/profiles/headless/environment.nix b/modules/profiles/headless/environment.nix new file mode 100644 index 0000000..7a774dd --- /dev/null +++ b/modules/profiles/headless/environment.nix @@ -0,0 +1,4 @@ +{ + # print the URL instead on servers + environment.variables.BROWSER = "echo"; +} diff --git a/modules/profiles/headless/fonts.nix b/modules/profiles/headless/fonts.nix new file mode 100644 index 0000000..cd2699b --- /dev/null +++ b/modules/profiles/headless/fonts.nix @@ -0,0 +1,12 @@ +{lib, ...}: let + inherit (lib.modules) mkForce; + inherit (lib.attrsets) mapAttrs; +in { + # we don't need fonts on a server + # since there are no fonts to be configured outside the console + fonts = mapAttrs (_: mkForce) { + packages = []; + fontDir.enable = false; + fontconfig.enable = false; + }; +} diff --git a/modules/profiles/headless/services.nix b/modules/profiles/headless/services.nix new file mode 100644 index 0000000..3ec1baa --- /dev/null +++ b/modules/profiles/headless/services.nix @@ -0,0 +1,5 @@ +{lib, ...}: { + # a headless system should not mount any removable media + # without explicit user action + services.udisks2.enable = lib.modules.mkForce false; +} diff --git a/modules/profiles/headless/systemd.nix b/modules/profiles/headless/systemd.nix new file mode 100644 index 0000000..4b1281e --- /dev/null +++ b/modules/profiles/headless/systemd.nix @@ -0,0 +1,29 @@ +{ + # https://github.com/numtide/srvos/blob/main/nixos/server/default.nix + systemd = { + # given that our systems are headless, emergency mode is useless. + # we prefer the system to attempt to continue booting so + # that we can hopefully still access it remotely. + enableEmergencyMode = false; + + # For more detail, see: + # https://0pointer.de/blog/projects/watchdog.html + watchdog = { + # systemd will send a signal to the hardware watchdog at half + # the interval defined here, so every 10s. + # If the hardware watchdog does not get a signal for 20s, + # it will forcefully reboot the system. + runtimeTime = "20s"; + # Forcefully reboot if the final stage of the reboot + # hangs without progress for more than 30s. + # For more info, see: + # https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdShutdownWatchdog + rebootTime = "30s"; + }; + + sleep.extraConfig = '' + AllowSuspend=no + AllowHibernation=no + ''; + }; +} diff --git a/modules/profiles/headless/xdg.nix b/modules/profiles/headless/xdg.nix new file mode 100644 index 0000000..c10425a --- /dev/null +++ b/modules/profiles/headless/xdg.nix @@ -0,0 +1,12 @@ +{lib, ...}: let + inherit (lib.attrsets) mapAttrs; + inherit (lib.modules) mkForce; +in { + xdg = mapAttrs (_: mkForce) { + sounds.enable = false; + mime.enable = false; + menus.enable = false; + icons.enable = false; + autostart.enable = false; + }; +} diff --git a/modules/profiles/server/default.nix b/modules/profiles/server/default.nix index 0967ef4..24a5950 100644 --- a/modules/profiles/server/default.nix +++ b/modules/profiles/server/default.nix @@ -1 +1,7 @@ -{} +{lib, ...}: let + inherit (lib.modules) mkForce; +in { + time.timeZone = mkForce "UTC"; + + olympus.device.type = "server"; +} diff --git a/systems/aphrodite/default.nix b/systems/aphrodite/default.nix new file mode 100644 index 0000000..1c1afbc --- /dev/null +++ b/systems/aphrodite/default.nix @@ -0,0 +1,21 @@ +{ + imports = [ + ./hardware.nix + ]; + + olympus = { + device = { + cpu = "amd"; + gpu = "amd"; + }; + system = { + boot = { + loader = "systemd-boot"; + loadRecommendedModules = true; + enableKernelTweaks = true; + initrd.enableTweaks = true; + plymouth.enable = false; + }; + }; + }; +} diff --git a/systems/aphrodite/hardware.nix b/systems/aphrodite/hardware.nix new file mode 100644 index 0000000..8244442 --- /dev/null +++ b/systems/aphrodite/hardware.nix @@ -0,0 +1,17 @@ +{ + fileSystems = { + "/" = { + device = "/dev/disk/by-label/root"; + fsType = "ext4"; + options = ["auto"]; + }; + + "/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + }; + + swapDevices = [{device = "/dev/disk/by-label/swap";}]; +} diff --git a/systems/epimetheus/default.nix b/systems/epimetheus/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/systems/epimetheus/default.nix @@ -0,0 +1 @@ +{} diff --git a/systems/helios/default.nix b/systems/helios/default.nix new file mode 100644 index 0000000..1c1afbc --- /dev/null +++ b/systems/helios/default.nix @@ -0,0 +1,21 @@ +{ + imports = [ + ./hardware.nix + ]; + + olympus = { + device = { + cpu = "amd"; + gpu = "amd"; + }; + system = { + boot = { + loader = "systemd-boot"; + loadRecommendedModules = true; + enableKernelTweaks = true; + initrd.enableTweaks = true; + plymouth.enable = false; + }; + }; + }; +} diff --git a/systems/helios/hardware.nix b/systems/helios/hardware.nix new file mode 100644 index 0000000..8244442 --- /dev/null +++ b/systems/helios/hardware.nix @@ -0,0 +1,17 @@ +{ + fileSystems = { + "/" = { + device = "/dev/disk/by-label/root"; + fsType = "ext4"; + options = ["auto"]; + }; + + "/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + }; + + swapDevices = [{device = "/dev/disk/by-label/swap";}]; +} diff --git a/systems/nyx/default.nix b/systems/nyx/default.nix index 1c1afbc..5b5366d 100644 --- a/systems/nyx/default.nix +++ b/systems/nyx/default.nix @@ -17,5 +17,8 @@ plymouth.enable = false; }; }; + programs = { + fish.enable = true; + }; }; } diff --git a/systems/theia/overrides.nix b/systems/theia/overrides.nix index ff127a5..5a9ee99 100644 --- a/systems/theia/overrides.nix +++ b/systems/theia/overrides.nix @@ -1,7 +1,6 @@ { lib, pkgs, - config, modulesPath, ... }: let @@ -16,7 +15,7 @@ in { }; systemd.services.qemu-guest-agent.path = [pkgs.shadow]; - system.stateVersion = mkForce "25.04"; + system.stateVersion = mkForce "25.05"; boot = { kernelParams = ["net.ifnames=0"];