From fdfd4e04346ad65b207eb9e91481542403b01e30 Mon Sep 17 00:00:00 2001 From: blahai Date: Sun, 12 Jan 2025 18:35:44 +0200 Subject: [PATCH] All this just to get nyx to even build --- flake.lock | 1675 +++++++++++++++++++ flake.nix | 67 + home/default.nix | 1 + modules/base/default.nix | 5 + modules/base/nix/default.nix | 5 + modules/base/nix/system.nix | 11 + modules/flake/args.nix | 17 + modules/flake/default.nix | 7 + modules/nixos/boot/default.nix | 7 + modules/nixos/boot/generic.nix | 160 ++ modules/nixos/boot/loader/default.nix | 19 + modules/nixos/boot/loader/grub.nix | 1 + modules/nixos/boot/loader/systemd-boot.nix | 21 + modules/nixos/boot/plymouth.nix | 24 + modules/nixos/default.nix | 7 + modules/nixos/environment/default.nix | 6 + modules/nixos/environment/documentation.nix | 18 + modules/nixos/environment/zram.nix | 24 + modules/nixos/networking/default.nix | 19 + modules/profiles/desktop/default.nix | 1 + modules/profiles/graphical/default.nix | 1 + systems/default.nix | 81 + systems/nyx/default.nix | 17 + systems/nyx/hardware.nix | 78 + 24 files changed, 2272 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home/default.nix create mode 100644 modules/base/default.nix create mode 100644 modules/base/nix/default.nix create mode 100644 modules/base/nix/system.nix create mode 100644 modules/flake/args.nix create mode 100644 modules/flake/default.nix create mode 100644 modules/nixos/boot/default.nix create mode 100644 modules/nixos/boot/generic.nix create mode 100644 modules/nixos/boot/loader/default.nix create mode 100644 modules/nixos/boot/loader/grub.nix create mode 100644 modules/nixos/boot/loader/systemd-boot.nix create mode 100644 modules/nixos/boot/plymouth.nix create mode 100644 modules/nixos/default.nix create mode 100644 modules/nixos/environment/default.nix create mode 100644 modules/nixos/environment/documentation.nix create mode 100644 modules/nixos/environment/zram.nix create mode 100644 modules/nixos/networking/default.nix create mode 100644 modules/profiles/desktop/default.nix create mode 100644 modules/profiles/graphical/default.nix create mode 100644 systems/default.nix create mode 100644 systems/nyx/default.nix create mode 100644 systems/nyx/hardware.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..1f8bf26 --- /dev/null +++ b/flake.lock @@ -0,0 +1,1675 @@ +{ + "nodes": { + "agenix": { + "inputs": { + "darwin": "darwin", + "home-manager": "home-manager", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1723293904, + "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", + "owner": "ryantm", + "repo": "agenix", + "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", + "type": "github" + }, + "original": { + "owner": "ryantm", + "repo": "agenix", + "type": "github" + } + }, + "ags": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1735346349, + "narHash": "sha256-n/VeEnc6fra2SPgm2ppzwQ52ggYDhpzmBnIBrVD/f+0=", + "owner": "Aylur", + "repo": "ags", + "rev": "237601999d65a4663bcbab934f4f6ce1f579d728", + "type": "github" + }, + "original": { + "owner": "Aylur", + "ref": "v1", + "repo": "ags", + "type": "github" + } + }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1736102453, + "narHash": "sha256-5qb4kb7Xbt8jJFL/oDqOor9Z2+E+A+ql3PiyDvsfWZ0=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "4846091641f3be0ad7542086d52769bb7932bde6", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "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" + }, + "locked": { + "lastModified": 1736069220, + "narHash": "sha256-76MaB3COao55nlhWmSmq9PKgu2iGIs54C1cAE0E5J6Y=", + "owner": "catppuccin", + "repo": "nix", + "rev": "8eada392fd6571a747e1c5fc358dd61c14c8704e", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "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": { + "flake-schemas": "flake-schemas", + "home-manager": "home-manager_3", + "jovian": "jovian", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1736696124, + "narHash": "sha256-8UwGZ+hCmk5MC7M9b3/qcnYpgW0LRqEYd+u8w5s5vww=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "8dca96dcfa4a176f58303c5ca8c3f717c27a2910", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "ref": "nyxpkgs-unstable", + "repo": "nyx", + "type": "github" + } + }, + "darwin": { + "inputs": { + "nixpkgs": [ + "agenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1700795494, + "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d", + "type": "github" + }, + "original": { + "owner": "lnl7", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, + "devshell": { + "inputs": { + "nixpkgs": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735644329, + "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", + "owner": "numtide", + "repo": "devshell", + "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736591904, + "narHash": "sha256-LFO8pSrPKrH8OPq2HaAuBG5skk8/MNJ/9YmK3KsnSks=", + "owner": "nix-community", + "repo": "disko", + "rev": "33827d2bd16bfe2e21b62956526c72d313595dfd", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "disko", + "type": "github" + } + }, + "easy-hosts": { + "locked": { + "lastModified": 1736680851, + "narHash": "sha256-KUkO4H0W+1u5piwAzIzCuVhamQ0L3io8vR61NrODtHs=", + "owner": "isabelroses", + "repo": "easy-hosts", + "rev": "450d2ae463bb8fb55194f33073ebdd83b8b7ddaa", + "type": "github" + }, + "original": { + "owner": "isabelroses", + "repo": "easy-hosts", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { + "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_3": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-schemas": { + "locked": { + "lastModified": 1721999734, + "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", + "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", + "revCount": 75, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_9" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "freetype2": { + "flake": false, + "locked": { + "lastModified": 1723459814, + "narHash": "sha256-4l90lDtpgm5xlh2m7ifrqNy373DTRTULRkAzicrM93c=", + "owner": "freetype", + "repo": "freetype", + "rev": "42608f77f20749dd6ddc9e0536788eaad70ea4b5", + "type": "github" + }, + "original": { + "owner": "freetype", + "ref": "VER-2-13-3", + "repo": "freetype", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "haivim", + "nixvim", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "haivim", + "nixvim", + "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": [ + "hyprland", + "pre-commit-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" + } + }, + "haivim": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ], + "nixvim": "nixvim" + }, + "locked": { + "lastModified": 1736641069, + "narHash": "sha256-exBcOT48WPLda1Rw8D6eeGkgs/1UxCl2HXtloGJLLoM=", + "owner": "blahai", + "repo": "haivim", + "rev": "7908a7bc4519e676d0af521080719317fe6b7d32", + "type": "github" + }, + "original": { + "owner": "blahai", + "repo": "haivim", + "type": "github" + } + }, + "harfbuzz": { + "flake": false, + "locked": { + "lastModified": 1719502711, + "narHash": "sha256-2ieCf3ftNk851FZBDPVl+7QHWBqD729KiUxUyxi26Yg=", + "owner": "harfbuzz", + "repo": "harfbuzz", + "rev": "9c03576c49db6e7207d9bcdfe3abd170a809157f", + "type": "github" + }, + "original": { + "owner": "harfbuzz", + "ref": "9.0.0", + "repo": "harfbuzz", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "agenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703113217, + "narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "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", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1734622215, + "narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736508663, + "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_4": { + "inputs": { + "nixpkgs": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736508663, + "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_5": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736508663, + "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1734906540, + "narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "69270ba8f057d55b0e6c2dca0e165d652856e613", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1736115290, + "narHash": "sha256-Jcn6yAzfUMcxy3tN/iZRbi/QgrYm7XLyVRl9g/nbUl4=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "52202272d89da32a9f866c0d10305a5e3d954c50", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_4", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_7", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1736613484, + "narHash": "sha256-vWqI0RuLigqNV20sI15rj/LeBCMSJiFJ59br00D6POk=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "2778aff08fba59a34b404751039d7acb6bfb3bdf", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1735774328, + "narHash": "sha256-vIRwLS9w+N99EU1aJ+XNOU6mJTxrUBa31i1r82l0V7s=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "e3b6af97ddcfaafbda8e2828c719a5af84f662cb", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1736114838, + "narHash": "sha256-FxbuGQExtN37ToWYnGmO6weOYN6WPHN/RAqbr7gNPek=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "6997fe382dcf396704227d2b98ffdd5066da6959", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1735393019, + "narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "55608efdaa387af7bfdc0eddb404c409958efa43", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1736164519, + "narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "3c895da64b0eb19870142196fa48c07090b441c4", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "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", + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "haivim", + "nixvim", + "nuschtosSearch", + "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" + } + }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736580596, + "narHash": "sha256-t+BygGMcg1yyyTBXCAJWx4ZnH1StDzbd8CfzQonAJp8=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "1ddf0b3bfe076fa50b84244e42a55b9234f96083", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, + "libpng": { + "flake": false, + "locked": { + "lastModified": 1726173884, + "narHash": "sha256-gBfHgGaqVYdmhWXoNKZzPyGzyw2rr3zp+DjWmfC41jk=", + "owner": "pnggroup", + "repo": "libpng", + "rev": "f5e92d76973a7a53f517579bc95d61483bf108c0", + "type": "github" + }, + "original": { + "owner": "pnggroup", + "ref": "v1.6.44", + "repo": "libpng", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736370755, + "narHash": "sha256-iWcjToBpx4PUd74uqvIGAfqqVfyrvRLRauC/SxEKIF0=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "57733bd1dc81900e13438e5b4439239f1b29db0e", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "chaotic", + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "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=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "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_6": { + "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_7": { + "locked": { + "lastModified": 1735821806, + "narHash": "sha256-cuNapx/uQeCgeuhUhdck3JKbgpsml259sjUQnWM7zW8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d6973081434f88088e5321f83ebafe9a1167c367", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_2", + "git-hooks": "git-hooks", + "home-manager": "home-manager_4", + "nix-darwin": "nix-darwin", + "nixpkgs": "nixpkgs_3", + "nuschtosSearch": "nuschtosSearch", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1736598781, + "narHash": "sha256-Y0o9ahm6Kk0DumTo80/vKspkHOkbtFgKCNiICyRjhMs=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "2fc2132a78753fc3d7ec732044eff7ad69530055", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_6", + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1736693592, + "narHash": "sha256-Tw2+wsDdF9HqmTdDY5rExE8hIwcxf8AkDQxnnq4NdlI=", + "owner": "nix-community", + "repo": "NUR", + "rev": "04f34aa60ce5a78bb5c18263ff2cecbc85314b73", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "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", + "nixpkgs": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735854821, + "narHash": "sha256-Iv59gMDZajNfezTO0Fw6LHE7uKAShxbvMidmZREit7c=", + "owner": "NuschtOS", + "repo": "search", + "rev": "836908e3bddd837ae0f13e215dd48767aee355f0", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore_2", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "agenix": "agenix", + "ags": "ags", + "catppuccin": "catppuccin", + "chaotic": "chaotic", + "disko": "disko", + "easy-hosts": "easy-hosts", + "flake-parts": "flake-parts", + "flake-utils": "flake-utils_2", + "haivim": "haivim", + "home-manager": "home-manager_5", + "hyprland": "hyprland", + "nixpkgs": "nixpkgs_5", + "nixpkgs-smol": "nixpkgs-smol", + "nur": "nur", + "sops-nix": "sops-nix", + "spicetify-nix": "spicetify-nix", + "systems": "systems_8", + "wezterm": "wezterm" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "wezterm", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735871325, + "narHash": "sha256-6Ta5E4mhSfCP6LdkzkG2+BciLOCPeLKuYTJ6lOHW+mI=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "a599f011db521766cbaf7c2f5874182485554f00", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736515725, + "narHash": "sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "f214c1b76c347a4e9c8fb68c73d4293a6820d125", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "spicetify-nix": { + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736655351, + "narHash": "sha256-+kAbUaJxCwKAxFvn3WL8dbzxoPaV+WKP4RG0R4JI4rY=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "749a821c86fb61be668d7583761f432f21772306", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "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=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "haivim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736154270, + "narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "wezterm": { + "inputs": { + "flake-utils": "flake-utils_5", + "freetype2": "freetype2", + "harfbuzz": "harfbuzz", + "libpng": "libpng", + "nixpkgs": "nixpkgs_7", + "rust-overlay": "rust-overlay", + "zlib": "zlib" + }, + "locked": { + "dir": "nix", + "lastModified": 1735931735, + "narHash": "sha256-4wzEN5IPYmqLP8TAdFatoRhCZ7W9y65AWoYN0Qgvbg8=", + "owner": "wez", + "repo": "wezterm", + "rev": "8e9cf912e66f704f300fac6107206a75036de1e7", + "type": "github" + }, + "original": { + "dir": "nix", + "owner": "wez", + "repo": "wezterm", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1734907020, + "narHash": "sha256-p6HxwpRKVl1KIiY5xrJdjcEeK3pbmc///UOyV6QER+w=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "d7f18dda5e511749fa1511185db3536208fb1a63", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, + "zlib": { + "flake": false, + "locked": { + "lastModified": 1705948357, + "narHash": "sha256-TkPLWSN5QcPlL9D0kc/yhH0/puE9bFND24aj5NVDKYs=", + "owner": "madler", + "repo": "zlib", + "rev": "51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf", + "type": "github" + }, + "original": { + "owner": "madler", + "ref": "v1.3.1", + "repo": "zlib", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1aef82d --- /dev/null +++ b/flake.nix @@ -0,0 +1,67 @@ +{ + description = "Elissa's funny little flake"; + + outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} {imports = [./modules/flake];}; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + nixpkgs-smol.url = "github:nixos/nixpkgs?ref=nixos-unstable-small"; + chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + nur.url = "github:nix-community/NUR"; + wezterm.url = "github:wez/wezterm?dir=nix"; + catppuccin.url = "github:catppuccin/nix"; + hyprland.url = "github:hyprwm/Hyprland"; + + haivim = { + url = "github:blahai/haivim"; + inputs = {nixpkgs.follows = "nixpkgs";}; + }; + + ags = { + url = "github:Aylur/ags/v1"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + disko = { + url = "github:nix-community/disko/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + agenix = { + url = "github:ryantm/agenix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + sops-nix = { + url = "github:Mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + systems = { + url = "github:nix-systems/default"; + }; + + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + + flake-utils = { + url = "github:numtide/flake-utils"; + }; + + easy-hosts = { + url = "github:isabelroses/easy-hosts"; + }; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; +} diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/default.nix @@ -0,0 +1 @@ +{} diff --git a/modules/base/default.nix b/modules/base/default.nix new file mode 100644 index 0000000..344c6b1 --- /dev/null +++ b/modules/base/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./nix + ]; +} diff --git a/modules/base/nix/default.nix b/modules/base/nix/default.nix new file mode 100644 index 0000000..d8d9dc0 --- /dev/null +++ b/modules/base/nix/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./system.nix + ]; +} diff --git a/modules/base/nix/system.nix b/modules/base/nix/system.nix new file mode 100644 index 0000000..bfa9419 --- /dev/null +++ b/modules/base/nix/system.nix @@ -0,0 +1,11 @@ +{ + lib, + pkgs, + ... +}: let + inherit (lib.modules) mkDefault; +in { + system = { + stateVersion = mkDefault "25.05"; + }; +} diff --git a/modules/flake/args.nix b/modules/flake/args.nix new file mode 100644 index 0000000..77a13fc --- /dev/null +++ b/modules/flake/args.nix @@ -0,0 +1,17 @@ +{inputs, ...}: { + systems = import inputs.systems; + + perSystem = {system, ...}: { + # this is what controls how packages in the flake are built, but this is not passed to the + # builders in lib which is important to note, since we have to do something different for + # the builders to work correctly + _module.args.pkgs = import inputs.nixpkgs { + inherit system; + config = { + allowUnfree = true; + allowUnsupportedSystem = true; + }; + # overlays = [ inputs.nix-topology.overlays.default ]; + }; + }; +} diff --git a/modules/flake/default.nix b/modules/flake/default.nix new file mode 100644 index 0000000..593fc8f --- /dev/null +++ b/modules/flake/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ../../systems + + ./args.nix + ]; +} diff --git a/modules/nixos/boot/default.nix b/modules/nixos/boot/default.nix new file mode 100644 index 0000000..1294c50 --- /dev/null +++ b/modules/nixos/boot/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./loader + ./generic.nix + ./plymouth.nix + ]; +} diff --git a/modules/nixos/boot/generic.nix b/modules/nixos/boot/generic.nix new file mode 100644 index 0000000..eb03ca8 --- /dev/null +++ b/modules/nixos/boot/generic.nix @@ -0,0 +1,160 @@ +{ + pkgs, + config, + lib, + ... +}: let + inherit (lib.modules) mkIf mkForce mkMerge mkDefault mkOverride; + inherit (lib.lists) optionals; + inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.types) str raw listOf package; + + cfg = config.olympus.system.boot; +in { + options.olympus.system.boot = { + enableKernelTweaks = mkEnableOption "security and performance related kernel parameters"; + recommendedLoaderConfig = mkEnableOption "tweaks for common bootloader configs per my liking"; + loadRecommendedModules = mkEnableOption "kernel modules that accommodate for most use cases"; + + kernel = mkOption { + type = raw; + default = pkgs.linuxPackages_6_12; + description = "The kernel to use for the system"; + }; + + initrd = { + enableTweaks = mkEnableOption "quality of life tweaks for the initrd stage"; + optimizeCompressor = mkEnableOption '' + initrd compression algorithm optimizations for size. + Enabling this option will force initrd to use zstd (default) with + level 19 and -T0 (STDIN). This will reduce the initrd size greatly + at the cost of compression speed. + Not recommended for low-end hardware. + ''; + }; + + silentBoot = + mkEnableOption '' + almost entirely silent boot process through `quiet` kernel parameter + '' + // { + default = cfg.plymouth.enable; + }; + }; + + config = { + boot = { + consoleLogLevel = 3; + + kernelPackages = mkDefault cfg.kernel; + + loader = { + # if set to 0, space needs to be held to get the boot menu to appear + timeout = mkForce 2; + + # copy boot files to /boot so that /nix/store is not required to boot + # it takes up more space but it makes my messups a bit safer + generationsDir.copyKernels = true; + + # we need to allow installation to modify EFI variables + efi.canTouchEfiVariables = true; + }; + + # increase the map count, this is important for applications that require a lot of memory mappings + # such as games and emulators + kernel.sysctl."vm.max_map_count" = 2147483642; + + initrd = mkMerge [ + (mkIf cfg.initrd.enableTweaks { + # Verbosity of the initrd + # disabling verbosity removes only the mandatory messages generated by the NixOS + verbose = false; + + systemd = { + # enable systemd in initrd (experimental) + enable = true; + + # strip copied binaries and libraries from inframs + # saves some nice space + strip = true; + }; + + kernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "btrfs" + "sd_mod" + "dm_mod" + ]; + + availableKernelModules = [ + "vmd" + "usbhid" + "sd_mod" + "sr_mod" + "dm_mod" + "uas" + "usb_storage" + "ata_piix" + "virtio_pci" + "virtio_scsi" + "ehci_pci" + ]; + }) + + (mkIf cfg.initrd.optimizeCompressor { + compressor = "zstd"; + compressorArgs = [ + "-19" + "-T0" + ]; + }) + ]; + + # https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html + kernelParams = + optionals cfg.enableKernelTweaks [ + # https://en.wikipedia.org/wiki/Kernel_page-table_isolation + # auto means kernel will automatically decide the pti state + "pti=auto" # on || off + + # enable IOMMU for devices used in passthrough and provide better host performance + "iommu=pt" + + # disable usb autosuspend + "usbcore.autosuspend=-1" + + # allow systemd to set and save the backlight state + "acpi_backlight=native" + + # prevent the kernel from blanking plymouth out of the fb + "fbcon=nodefer" + + # disable boot logo + "logo.nologo" + + # disable the cursor in vt to get a black screen during intermissions + "vt.global_cursor_default=0" + ] + ++ optionals cfg.silentBoot [ + # tell the kernel to not be verbose, the voices are too loud + "quiet" + + # kernel log message level + "loglevel=3" # 1: system is unusable | 3: error condition | 7: very verbose + + # udev log message level + "udev.log_level=3" + + # lower the udev log level to show only errors or worse + "rd.udev.log_level=3" + + # disable systemd status messages + # rd prefix means systemd-udev will be used instead of initrd + "systemd.show_status=auto" + "rd.systemd.show_status=auto" + ]; + }; + }; +} diff --git a/modules/nixos/boot/loader/default.nix b/modules/nixos/boot/loader/default.nix new file mode 100644 index 0000000..b20758c --- /dev/null +++ b/modules/nixos/boot/loader/default.nix @@ -0,0 +1,19 @@ +{lib, ...}: let + inherit (lib.options) mkOption; + inherit (lib.types) enum; +in { + imports = [ + ./systemd-boot.nix + ./grub.nix + ]; + + options.olympus.system.boot.loader = mkOption { + type = enum [ + "none" + "grub" + "systemd-boot" + ]; + default = "none"; + description = "The bootloader"; + }; +} diff --git a/modules/nixos/boot/loader/grub.nix b/modules/nixos/boot/loader/grub.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/nixos/boot/loader/grub.nix @@ -0,0 +1 @@ +{} diff --git a/modules/nixos/boot/loader/systemd-boot.nix b/modules/nixos/boot/loader/systemd-boot.nix new file mode 100644 index 0000000..9e94f9a --- /dev/null +++ b/modules/nixos/boot/loader/systemd-boot.nix @@ -0,0 +1,21 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (lib.modules) mkIf mkDefault; + inherit (lib.attrsets) optionalAttrs; + inherit (lib.options) mkEnableOption mkPackageOption; + + cfg = config.olympus.system.boot; +in { + config = mkIf (cfg.loader == "systemd-boot") { + boot.loader.systemd-boot = { + enable = mkDefault true; + configurationLimit = 5; + consoleMode = "max"; + editor = false; + }; + }; +} diff --git a/modules/nixos/boot/plymouth.nix b/modules/nixos/boot/plymouth.nix new file mode 100644 index 0000000..f745bd4 --- /dev/null +++ b/modules/nixos/boot/plymouth.nix @@ -0,0 +1,24 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (lib.meta) getExe'; + inherit (lib.modules) mkIf; + inherit (lib.options) mkEnableOption; + + cfg = config.olympus.system.boot.plymouth; +in { + options.olympus.system.boot.plymouth.enable = mkEnableOption "plymouth boot splash"; + + config = mkIf cfg.enable { + boot.plymouth.enable = true; + + # make plymouth work with sleep + powerManagement = { + powerDownCommands = "${getExe' pkgs.plymouth "plymouth"} --show-splash"; + resumeCommands = "${getExe' pkgs.plymouth "plymouth"} --quit"; + }; + }; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..17c625f --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./boot + ./environment + ./networking + ]; +} diff --git a/modules/nixos/environment/default.nix b/modules/nixos/environment/default.nix new file mode 100644 index 0000000..a14a7e4 --- /dev/null +++ b/modules/nixos/environment/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./documentation.nix + ./zram.nix + ]; +} diff --git a/modules/nixos/environment/documentation.nix b/modules/nixos/environment/documentation.nix new file mode 100644 index 0000000..4c6409e --- /dev/null +++ b/modules/nixos/environment/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/nixos/environment/zram.nix b/modules/nixos/environment/zram.nix new file mode 100644 index 0000000..f349c87 --- /dev/null +++ b/modules/nixos/environment/zram.nix @@ -0,0 +1,24 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkIf; +in { + # compress half of the ram to use as swap + # basically, get more memory per memory + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 90; # defaults to 50 + }; + + boot.kernel.sysctl = mkIf config.zramSwap.enable { + # zram is relatively cheap, prefer swap + "vm.swappiness" = 180; + "vm.watermark_boost_factor" = 0; + "vm.watermark_scale_factor" = 125; + # zram is in memory, no need to readahead + "vm.page-cluster" = 0; + }; +} diff --git a/modules/nixos/networking/default.nix b/modules/nixos/networking/default.nix new file mode 100644 index 0000000..05c4e92 --- /dev/null +++ b/modules/nixos/networking/default.nix @@ -0,0 +1,19 @@ +{ + lib, + config, + ... +}: let + inherit (lib.modules) mkDefault mkForce; +in { + imports = [ + ]; + + networking = { + hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName); + + useDHCP = mkForce false; + useNetworkd = mkForce true; + + usePredictableInterfaceNames = mkDefault true; + }; +} diff --git a/modules/profiles/desktop/default.nix b/modules/profiles/desktop/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/profiles/desktop/default.nix @@ -0,0 +1 @@ +{} diff --git a/modules/profiles/graphical/default.nix b/modules/profiles/graphical/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/profiles/graphical/default.nix @@ -0,0 +1 @@ +{} diff --git a/systems/default.nix b/systems/default.nix new file mode 100644 index 0000000..825c6da --- /dev/null +++ b/systems/default.nix @@ -0,0 +1,81 @@ +{ + self, + inputs, + lib, + ... +}: let + # inherit (self) lib; + inherit (lib.lists) optionals; + + profilesPath = ../modules/profiles; + # Hardware profiles + desktop = profilesPath + /desktop; + server = profilesPath + /server; + laptop = profilesPath + /laptop; + + # Meta profiles + graphical = profilesPath + /graphical; + headless = profilesPath + /headless; +in { + imports = [inputs.easy-hosts.flakeModule]; + + config.easyHosts = { + shared.specialArgs = {inherit lib;}; + + perClass = class: { + modules = [ + # import the class module, this contains the common configurations between all systems of the same class + "${self}/modules/${class}/default.nix" + + (optionals (class != "iso") [ + # import the home module, which is users for configuring users via home-manager + "${self}/home/default.nix" + + # import the base module, this contains the common configurations between all systems + "${self}/modules/base/default.nix" + ]) + ]; + }; + + # the defaults consists of the following: + # arch = "x86_64"; + # class = "nixos"; + # deployable = false; + # modules = [ ]; + # specialArgs = { }; + hosts = { + # Elissa's desktop + nyx.modules = [ + desktop + graphical + ]; + + # Elissa's laptop + helios.modules = [ + laptop + graphical + ]; + + # Other desktop (will set up later) + aphrodite.modules = [ + desktop + graphical + ]; + + # Server + theia = { + deployable = true; + modules = [ + server + headless + ]; + }; + + # ISO + epimetheus = { + class = "iso"; + modules = [headless]; + }; + }; + }; +} diff --git a/systems/nyx/default.nix b/systems/nyx/default.nix new file mode 100644 index 0000000..20d8d98 --- /dev/null +++ b/systems/nyx/default.nix @@ -0,0 +1,17 @@ +{ + imports = [ + ./hardware.nix + ]; + + olympus = { + system = { + boot = { + loader = "systemd-boot"; + loadRecommendedModules = true; + enableKernelTweaks = true; + initrd.enableTweaks = true; + plymouth.enable = false; + }; + }; + }; +} diff --git a/systems/nyx/hardware.nix b/systems/nyx/hardware.nix new file mode 100644 index 0000000..6f5b6bd --- /dev/null +++ b/systems/nyx/hardware.nix @@ -0,0 +1,78 @@ +{ + fileSystems = { + "/" = { + device = "zpool/root"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/nix" = { + device = "zpool/nix"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/var" = { + device = "zpool/var"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/home" = { + device = "zpool/home"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/var/lib/virt/images" = { + device = "zepool/virt/images"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/var/lib/virt/disks" = { + device = "zepool/virt/disks"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/mnt/zootfs/Storage" = { + device = "zootfs/Storage"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + "/mnt/zootfs/Media" = { + device = "zootfs/Media"; + fsType = "zfs"; + options = ["zfsutil"]; + }; + + # https://github.com/atuinsh/atuin/issues/952#issuecomment-1902164562 + "/home/pingu/.local/share/atuin" = { + device = "/dev/zvol/zpool/nixos/atuin"; + fsType = "ext4"; + options = ["async" "auto" "nofail"]; + }; + + "/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + + "/mnt/ssd" = { + device = "/dev/disk/by-uuid/e4c31e1c-6667-4582-8d6a-d142d6118ce2"; + fsType = "btrfs"; + options = ["async" "auto" "noatime" "rw"]; + }; + + "/mnt/ext" = { + device = "/dev/disk/by-uuid/43280a82-cf9a-452e-9bdc-a8cc66ccd7c8"; + fsType = "btrfs"; + options = ["async" "auto" "nofail" "noatime"]; + }; + }; + + swapDevices = [{device = "/dev/disk/by-uuid/04281bd7-784a-4287-b4f2-ce406d2ab6ac";}]; +}