Kieran's opinionated (and probably slightly dumb) nix config
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.05"; 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.05"; 14 home-manager.inputs.nixpkgs.follows = "nixpkgs"; 15 16 # Nix-Darwin 17 nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.05"; 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 import-tree.url = "github:vic/import-tree"; 77 78 nur = { 79 url = "github:nix-community/NUR"; 80 inputs.nixpkgs.follows = "nixpkgs"; 81 }; 82 83 cedarlogic = { 84 url = "github:taciturnaxolotl/CedarLogic"; 85 inputs.nixpkgs.follows = "nixpkgs"; 86 }; 87 88 soapdump = { 89 url = "github:taciturnaxolotl/soapdump"; 90 inputs.nixpkgs.follows = "nixpkgs"; 91 }; 92 93 wakatime-ls = { 94 url = "github:mrnossiom/wakatime-ls"; 95 inputs.nixpkgs.follows = "nixpkgs"; 96 }; 97 }; 98 99 outputs = 100 { 101 self, 102 nixpkgs, 103 nixpkgs-unstable, 104 agenix, 105 home-manager, 106 nur, 107 nix-darwin, 108 ... 109 }@inputs: 110 let 111 outputs = inputs.self.outputs; 112 unstable-overlays = { 113 nixpkgs.overlays = [ 114 (final: prev: { 115 unstable = import nixpkgs-unstable { 116 system = final.system; 117 config.allowUnfree = true; 118 }; 119 120 bambu-studio = prev.bambu-studio.overrideAttrs (oldAttrs: { 121 version = "01.00.01.50"; 122 src = prev.fetchFromGitHub { 123 owner = "bambulab"; 124 repo = "BambuStudio"; 125 rev = "v01.00.01.50"; 126 hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30="; 127 }; 128 }); 129 }) 130 ]; 131 }; 132 in 133 { 134 # NixOS configuration entrypoint 135 # Available through 'nixos-rebuild --flake .#hostname' 136 nixosConfigurations = { 137 moonlark = nixpkgs.lib.nixosSystem { 138 specialArgs = { inherit inputs outputs; }; 139 modules = [ 140 inputs.disko.nixosModules.disko 141 { disko.devices.disk.disk1.device = "/dev/vda"; } 142 agenix.nixosModules.default 143 unstable-overlays 144 ./machines/moonlark 145 nur.modules.nixos.default 146 ]; 147 }; 148 149 prattle = nixpkgs.lib.nixosSystem { 150 specialArgs = { inherit inputs outputs; }; 151 modules = [ 152 inputs.disko.nixosModules.disko 153 agenix.nixosModules.default 154 inputs.nixos-facter-modules.nixosModules.facter 155 { config.facter.reportPath = ./machines/prattle/facter.json; } 156 unstable-overlays 157 ./machines/prattle 158 nur.modules.nixos.default 159 ]; 160 }; 161 162 terebithia = nixpkgs.lib.nixosSystem { 163 specialArgs = { inherit inputs outputs; }; 164 modules = [ 165 inputs.disko.nixosModules.disko 166 agenix.nixosModules.default 167 inputs.nixos-facter-modules.nixosModules.facter 168 { config.facter.reportPath = ./machines/terebithia/facter.json; } 169 unstable-overlays 170 ./machines/terebithia 171 nur.modules.nixos.default 172 ]; 173 }; 174 }; 175 176 # Standalone home-manager configurations 177 # Available through 'home-manager --flake .#hostname' 178 homeConfigurations = { 179 "tacyon" = home-manager.lib.homeManagerConfiguration { 180 pkgs = nixpkgs.legacyPackages.aarch64-linux; 181 extraSpecialArgs = { 182 inherit inputs outputs; 183 nixpkgs-unstable = nixpkgs-unstable; 184 }; 185 modules = [ 186 ./machines/tacyon 187 unstable-overlays 188 ]; 189 }; 190 191 "nest" = home-manager.lib.homeManagerConfiguration { 192 pkgs = nixpkgs.legacyPackages.x86_64-linux; 193 extraSpecialArgs = { 194 inherit inputs outputs; 195 nixpkgs-unstable = nixpkgs-unstable; 196 system = "x86_64-linux"; 197 }; 198 modules = [ 199 ./machines/nest 200 unstable-overlays 201 ]; 202 }; 203 204 "ember" = home-manager.lib.homeManagerConfiguration { 205 pkgs = nixpkgs.legacyPackages.x86_64-linux; 206 extraSpecialArgs = { 207 inherit inputs outputs; 208 nixpkgs-unstable = nixpkgs-unstable; 209 }; 210 modules = [ 211 ./machines/ember 212 unstable-overlays 213 ]; 214 215 }; 216 "john" = home-manager.lib.homeManagerConfiguration { 217 pkgs = nixpkgs.legacyPackages.x86_64-linux; 218 extraSpecialArgs = { 219 inherit inputs outputs; 220 nixpkgs-unstable = nixpkgs-unstable; 221 system = "x86_64-linux"; 222 }; 223 modules = [ 224 ./machines/john 225 unstable-overlays 226 ]; 227 }; 228 }; 229 230 # Darwin configurations 231 # Available through 'darwin-rebuild switch --flake .#hostname' 232 darwinConfigurations = { 233 atalanta = nix-darwin.lib.darwinSystem { 234 system = "aarch64-darwin"; 235 specialArgs = { inherit inputs outputs; }; 236 modules = [ 237 home-manager.darwinModules.home-manager 238 agenix.darwinModules.default 239 unstable-overlays 240 ./machines/atalanta 241 ]; 242 }; 243 }; 244 245 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; 246 formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree; 247 }; 248}