Kieran's opinionated (and probably slightly dumb) nix config
at main 9.8 kB view raw
1{ 2 description = "Kieran's opinionated (and probably slightly dumb) nix config"; 3 4 inputs = { 5 # Nixpkgs 6 nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; 7 nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 8 9 # NixOS hardware configuration 10 hardware.url = "github:NixOS/nixos-hardware/master"; 11 12 # Home manager 13 home-manager.url = "github:nix-community/home-manager/release-25.11"; 14 home-manager.inputs.nixpkgs.follows = "nixpkgs"; 15 16 # Nix-Darwin 17 nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; 18 nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; 19 20 disko.url = "github:nix-community/disko"; 21 disko.inputs.nixpkgs.follows = "nixpkgs"; 22 23 nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; 24 25 # agenix 26 agenix.url = "github:ryantm/agenix"; 27 28 spicetify-nix = { 29 url = "github:Gerg-L/spicetify-nix"; 30 inputs.nixpkgs.follows = "nixpkgs"; 31 }; 32 33 catppuccin = { 34 url = "github:catppuccin/nix?rev=f518f96a60aceda4cd487437b25eaa48d0f1b97d"; 35 inputs.nixpkgs.follows = "nixpkgs"; 36 }; 37 38 catppuccin-vsc = { 39 url = "github:catppuccin/vscode"; 40 }; 41 42 nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; 43 44 frc-nix = { 45 url = "github:frc4451/frc-nix"; 46 inputs.nixpkgs.follows = "nixpkgs"; 47 }; 48 49 claude-desktop = { 50 url = "github:k3d3/claude-desktop-linux-flake"; 51 inputs.nixpkgs.follows = "nixpkgs"; 52 }; 53 54 hyprland-contrib = { 55 url = "github:hyprwm/contrib"; 56 inputs.nixpkgs.follows = "nixpkgs"; 57 }; 58 59 nixvim.url = "github:taciturnaxolotl/nixvim"; 60 61 terminal-wakatime = { 62 url = "github:taciturnaxolotl/terminal-wakatime"; 63 inputs.nixpkgs.follows = "nixpkgs"; 64 }; 65 66 ctfd-alerts = { 67 url = "github:taciturnaxolotl/ctfd-alerts"; 68 inputs.nixpkgs.follows = "nixpkgs"; 69 }; 70 71 flare = { 72 url = "github:ByteAtATime/flare/feat/nix"; 73 inputs.nixpkgs.follows = "nixpkgs"; 74 }; 75 76 herald = { 77 url = "git+https://tangled.org/dunkirk.sh/herald?ref=main"; 78 inputs.nixpkgs.follows = "nixpkgs"; 79 }; 80 81 import-tree.url = "github:vic/import-tree"; 82 83 nur = { 84 url = "github:nix-community/NUR"; 85 inputs.nixpkgs.follows = "nixpkgs"; 86 }; 87 88 cedarlogic = { 89 url = "github:taciturnaxolotl/CedarLogic"; 90 inputs.nixpkgs.follows = "nixpkgs"; 91 }; 92 93 soapdump = { 94 url = "github:taciturnaxolotl/soapdump"; 95 inputs.nixpkgs.follows = "nixpkgs"; 96 }; 97 98 wakatime-ls = { 99 url = "github:mrnossiom/wakatime-ls"; 100 inputs.nixpkgs.follows = "nixpkgs"; 101 }; 102 103 deploy-rs = { 104 url = "github:serokell/deploy-rs"; 105 inputs.nixpkgs.follows = "nixpkgs"; 106 }; 107 108 tangled = { 109 url = "git+https://tangled.org/tangled.org/core"; 110 inputs.nixpkgs.follows = "nixpkgs"; 111 }; 112 113 battleship-arena = { 114 url = "github:taciturnaxolotl/battleship-arena"; 115 inputs.nixpkgs.follows = "nixpkgs"; 116 }; 117 118 zmx = { 119 url = "github:neurosnap/zmx"; 120 }; 121 122 tranquil-pds = { 123 url = "git+https://tangled.org/lewis.moe/bspds-sandbox"; 124 inputs.nixpkgs.follows = "nixpkgs"; 125 }; 126 }; 127 128 outputs = 129 { 130 self, 131 nixpkgs, 132 nixpkgs-unstable, 133 agenix, 134 home-manager, 135 nur, 136 nix-darwin, 137 deploy-rs, 138 tangled, 139 ... 140 }@inputs: 141 let 142 outputs = inputs.self.outputs; 143 144 unstable-overlays = { 145 nixpkgs.overlays = [ 146 (final: prev: { 147 unstable = import nixpkgs-unstable { 148 system = final.stdenv.hostPlatform.system; 149 config.allowUnfree = true; 150 }; 151 152 bambu-studio = prev.bambu-studio.overrideAttrs (oldAttrs: { 153 version = "01.00.01.50"; 154 src = prev.fetchFromGitHub { 155 owner = "bambulab"; 156 repo = "BambuStudio"; 157 rev = "v01.00.01.50"; 158 hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30="; 159 }; 160 }); 161 162 zmx-binary = prev.callPackage ./packages/zmx.nix { }; 163 bore-auth = prev.callPackage ./packages/bore-auth.nix { }; 164 herald = inputs.herald.packages.${prev.system}.default; 165 }) 166 ]; 167 }; 168 in 169 { 170 # NixOS configuration entrypoint 171 # Available through 'nixos-rebuild --flake .#hostname' 172 nixosConfigurations = { 173 moonlark = nixpkgs.lib.nixosSystem { 174 specialArgs = { inherit inputs outputs; }; 175 modules = [ 176 inputs.disko.nixosModules.disko 177 { disko.devices.disk.disk1.device = "/dev/vda"; } 178 agenix.nixosModules.default 179 unstable-overlays 180 ./machines/moonlark 181 nur.modules.nixos.default 182 ]; 183 }; 184 185 prattle = nixpkgs.lib.nixosSystem { 186 specialArgs = { inherit inputs outputs; }; 187 modules = [ 188 inputs.disko.nixosModules.disko 189 agenix.nixosModules.default 190 inputs.nixos-facter-modules.nixosModules.facter 191 { config.facter.reportPath = ./machines/prattle/facter.json; } 192 unstable-overlays 193 ./machines/prattle 194 nur.modules.nixos.default 195 ]; 196 }; 197 198 terebithia = nixpkgs.lib.nixosSystem { 199 specialArgs = { inherit inputs outputs; }; 200 modules = [ 201 inputs.disko.nixosModules.disko 202 agenix.nixosModules.default 203 inputs.nixos-facter-modules.nixosModules.facter 204 { config.facter.reportPath = ./machines/terebithia/facter.json; } 205 unstable-overlays 206 ./machines/terebithia 207 nur.modules.nixos.default 208 ]; 209 }; 210 }; 211 212 # Standalone home-manager configurations 213 # Available through 'home-manager --flake .#hostname' 214 homeConfigurations = { 215 "tacyon" = home-manager.lib.homeManagerConfiguration { 216 pkgs = nixpkgs.legacyPackages.aarch64-linux; 217 extraSpecialArgs = { 218 inherit inputs outputs; 219 nixpkgs-unstable = nixpkgs-unstable; 220 }; 221 modules = [ 222 ./machines/tacyon 223 unstable-overlays 224 ]; 225 }; 226 227 "nest" = home-manager.lib.homeManagerConfiguration { 228 pkgs = nixpkgs.legacyPackages.x86_64-linux; 229 extraSpecialArgs = { 230 inherit inputs outputs; 231 nixpkgs-unstable = nixpkgs-unstable; 232 system = "x86_64-linux"; 233 }; 234 modules = [ 235 ./machines/nest 236 unstable-overlays 237 ]; 238 }; 239 240 "ember" = home-manager.lib.homeManagerConfiguration { 241 pkgs = nixpkgs.legacyPackages.x86_64-linux; 242 extraSpecialArgs = { 243 inherit inputs outputs; 244 nixpkgs-unstable = nixpkgs-unstable; 245 }; 246 modules = [ 247 ./machines/ember 248 unstable-overlays 249 ]; 250 251 }; 252 "john" = home-manager.lib.homeManagerConfiguration { 253 pkgs = nixpkgs.legacyPackages.x86_64-linux; 254 extraSpecialArgs = { 255 inherit inputs outputs; 256 nixpkgs-unstable = nixpkgs-unstable; 257 system = "x86_64-linux"; 258 }; 259 modules = [ 260 ./machines/john 261 unstable-overlays 262 ]; 263 }; 264 }; 265 266 # Darwin configurations 267 # Available through 'darwin-rebuild switch --flake .#hostname' 268 darwinConfigurations = { 269 atalanta = nix-darwin.lib.darwinSystem { 270 system = "aarch64-darwin"; 271 specialArgs = { inherit inputs outputs; }; 272 modules = [ 273 home-manager.darwinModules.home-manager 274 agenix.darwinModules.default 275 nur.modules.darwin.default 276 ./machines/atalanta 277 ]; 278 }; 279 }; 280 281 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; 282 formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree; 283 284 # Patched deploy-rs for Nix 2.33 compatibility 285 packages.x86_64-linux.deploy-rs = deploy-rs.packages.x86_64-linux.deploy-rs.overrideAttrs (oldAttrs: { 286 patches = (oldAttrs.patches or []) ++ [ ./patches/deploy-rs-nix-2.33.patch ]; 287 }); 288 packages.aarch64-linux.deploy-rs = deploy-rs.packages.aarch64-linux.deploy-rs.overrideAttrs (oldAttrs: { 289 patches = (oldAttrs.patches or []) ++ [ ./patches/deploy-rs-nix-2.33.patch ]; 290 }); 291 packages.aarch64-darwin.deploy-rs = deploy-rs.packages.aarch64-darwin.deploy-rs.overrideAttrs (oldAttrs: { 292 patches = (oldAttrs.patches or []) ++ [ ./patches/deploy-rs-nix-2.33.patch ]; 293 }); 294 295 # Dev shells with patched deploy-rs 296 devShells.aarch64-darwin.default = nixpkgs.legacyPackages.aarch64-darwin.mkShell { 297 packages = [ outputs.packages.aarch64-darwin.deploy-rs ]; 298 }; 299 devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell { 300 packages = [ outputs.packages.x86_64-linux.deploy-rs ]; 301 }; 302 devShells.aarch64-linux.default = nixpkgs.legacyPackages.aarch64-linux.mkShell { 303 packages = [ outputs.packages.aarch64-linux.deploy-rs ]; 304 }; 305 306 # Deploy-rs configurations 307 deploy.nodes = { 308 # NixOS servers 309 terebithia = { 310 hostname = "terebithia"; 311 profiles.system = { 312 sshUser = "kierank"; 313 user = "root"; 314 path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.terebithia; 315 }; 316 }; 317 }; 318 319 # Validation checks 320 checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib; 321 }; 322}