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 # agenix 24 agenix.url = "github:ryantm/agenix"; 25 26 spicetify-nix = { 27 url = "github:Gerg-L/spicetify-nix"; 28 inputs.nixpkgs.follows = "nixpkgs"; 29 }; 30 31 catppuccin = { 32 url = "github:catppuccin/nix?rev=f518f96a60aceda4cd487437b25eaa48d0f1b97d"; 33 inputs.nixpkgs.follows = "nixpkgs"; 34 }; 35 36 catppuccin-vsc = { 37 url = "github:catppuccin/vscode"; 38 }; 39 40 nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; 41 42 frc-nix = { 43 url = "github:frc4451/frc-nix"; 44 inputs.nixpkgs.follows = "nixpkgs"; 45 }; 46 47 claude-desktop = { 48 url = "github:k3d3/claude-desktop-linux-flake"; 49 inputs.nixpkgs.follows = "nixpkgs"; 50 }; 51 52 hyprland-contrib = { 53 url = "github:hyprwm/contrib"; 54 inputs.nixpkgs.follows = "nixpkgs"; 55 }; 56 57 nixvim.url = "github:taciturnaxolotl/nixvim"; 58 59 terminal-wakatime = { 60 url = "github:taciturnaxolotl/terminal-wakatime"; 61 inputs.nixpkgs.follows = "nixpkgs"; 62 }; 63 64 ctfd-alerts = { 65 url = "github:taciturnaxolotl/ctfd-alerts"; 66 inputs.nixpkgs.follows = "nixpkgs"; 67 }; 68 69 flare = { 70 url = "github:ByteAtATime/flare/feat/nix"; 71 inputs.nixpkgs.follows = "nixpkgs"; 72 }; 73 74 import-tree.url = "github:vic/import-tree"; 75 76 nur = { 77 url = "github:nix-community/NUR"; 78 inputs.nixpkgs.follows = "nixpkgs"; 79 }; 80 81 cedarlogic = { 82 url = "github:taciturnaxolotl/CedarLogic"; 83 inputs.nixpkgs.follows = "nixpkgs"; 84 }; 85 86 soapdump = { 87 url = "github:taciturnaxolotl/soapdump"; 88 inputs.nixpkgs.follows = "nixpkgs"; 89 }; 90 91 wakatime-ls = { 92 url = "github:mrnossiom/wakatime-ls"; 93 inputs.nixpkgs.follows = "nixpkgs"; 94 }; 95 }; 96 97 outputs = 98 { 99 self, 100 nixpkgs, 101 nixpkgs-unstable, 102 agenix, 103 home-manager, 104 nur, 105 nix-darwin, 106 ... 107 }@inputs: 108 let 109 outputs = inputs.self.outputs; 110 unstable-overlays = { 111 nixpkgs.overlays = [ 112 (final: prev: { 113 unstable = import nixpkgs-unstable { 114 system = final.system; 115 config.allowUnfree = true; 116 }; 117 118 bambu-studio = prev.bambu-studio.overrideAttrs (oldAttrs: { 119 version = "01.00.01.50"; 120 src = prev.fetchFromGitHub { 121 owner = "bambulab"; 122 repo = "BambuStudio"; 123 rev = "v01.00.01.50"; 124 hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30="; 125 }; 126 }); 127 }) 128 ]; 129 }; 130 in 131 { 132 # NixOS configuration entrypoint 133 # Available through 'nixos-rebuild --flake .#hostname' 134 nixosConfigurations = { 135 moonlark = nixpkgs.lib.nixosSystem { 136 specialArgs = { inherit inputs outputs; }; 137 modules = [ 138 inputs.disko.nixosModules.disko 139 { disko.devices.disk.disk1.device = "/dev/vda"; } 140 agenix.nixosModules.default 141 unstable-overlays 142 ./machines/moonlark 143 nur.modules.nixos.default 144 ]; 145 }; 146 147 prattle = nixpkgs.lib.nixosSystem { 148 specialArgs = { inherit inputs outputs; }; 149 modules = [ 150 inputs.disko.nixosModules.disko 151 agenix.nixosModules.default 152 unstable-overlays 153 ./machines/prattle 154 nur.modules.nixos.default 155 ]; 156 }; 157 158 terebithia = nixpkgs.lib.nixosSystem { 159 specialArgs = { inherit inputs outputs; }; 160 modules = [ 161 inputs.disko.nixosModules.disko 162 agenix.nixosModules.default 163 unstable-overlays 164 ./machines/terebithia 165 nur.modules.nixos.default 166 ]; 167 }; 168 }; 169 170 # Standalone home-manager configurations 171 # Available through 'home-manager --flake .#hostname' 172 homeConfigurations = { 173 "tacyon" = home-manager.lib.homeManagerConfiguration { 174 pkgs = nixpkgs.legacyPackages.aarch64-linux; 175 extraSpecialArgs = { 176 inherit inputs outputs; 177 nixpkgs-unstable = nixpkgs-unstable; 178 }; 179 modules = [ 180 ./machines/tacyon 181 unstable-overlays 182 ]; 183 }; 184 185 "nest" = home-manager.lib.homeManagerConfiguration { 186 pkgs = nixpkgs.legacyPackages.x86_64-linux; 187 extraSpecialArgs = { 188 inherit inputs outputs; 189 nixpkgs-unstable = nixpkgs-unstable; 190 system = "x86_64-linux"; 191 }; 192 modules = [ 193 ./machines/nest 194 unstable-overlays 195 ]; 196 }; 197 198 "ember" = home-manager.lib.homeManagerConfiguration { 199 pkgs = nixpkgs.legacyPackages.x86_64-linux; 200 extraSpecialArgs = { 201 inherit inputs outputs; 202 nixpkgs-unstable = nixpkgs-unstable; 203 }; 204 modules = [ 205 ./machines/ember 206 unstable-overlays 207 ]; 208 209 }; 210 "john" = home-manager.lib.homeManagerConfiguration { 211 pkgs = nixpkgs.legacyPackages.x86_64-linux; 212 extraSpecialArgs = { 213 inherit inputs outputs; 214 nixpkgs-unstable = nixpkgs-unstable; 215 system = "x86_64-linux"; 216 }; 217 modules = [ 218 ./machines/john 219 unstable-overlays 220 ]; 221 }; 222 }; 223 224 # Darwin configurations 225 # Available through 'darwin-rebuild switch --flake .#hostname' 226 darwinConfigurations = { 227 atalanta = nix-darwin.lib.darwinSystem { 228 system = "aarch64-darwin"; 229 specialArgs = { inherit inputs outputs; }; 230 modules = [ 231 home-manager.darwinModules.home-manager 232 agenix.darwinModules.default 233 unstable-overlays 234 ./machines/atalanta 235 ]; 236 }; 237 }; 238 239 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; 240 formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree; 241 }; 242}