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 159 # Standalone home-manager configurations 160 # Available through 'home-manager --flake .#hostname' 161 homeConfigurations = { 162 "tacyon" = home-manager.lib.homeManagerConfiguration { 163 pkgs = nixpkgs.legacyPackages.aarch64-linux; 164 extraSpecialArgs = { 165 inherit inputs outputs; 166 nixpkgs-unstable = nixpkgs-unstable; 167 }; 168 modules = [ 169 ./machines/tacyon 170 unstable-overlays 171 ]; 172 }; 173 174 "nest" = home-manager.lib.homeManagerConfiguration { 175 pkgs = nixpkgs.legacyPackages.x86_64-linux; 176 extraSpecialArgs = { 177 inherit inputs outputs; 178 nixpkgs-unstable = nixpkgs-unstable; 179 system = "x86_64-linux"; 180 }; 181 modules = [ 182 ./machines/nest 183 unstable-overlays 184 ]; 185 }; 186 187 "ember" = home-manager.lib.homeManagerConfiguration { 188 pkgs = nixpkgs.legacyPackages.x86_64-linux; 189 extraSpecialArgs = { 190 inherit inputs outputs; 191 nixpkgs-unstable = nixpkgs-unstable; 192 }; 193 modules = [ 194 ./machines/ember 195 unstable-overlays 196 ]; 197 198 }; 199 "john" = home-manager.lib.homeManagerConfiguration { 200 pkgs = nixpkgs.legacyPackages.x86_64-linux; 201 extraSpecialArgs = { 202 inherit inputs outputs; 203 nixpkgs-unstable = nixpkgs-unstable; 204 system = "x86_64-linux"; 205 }; 206 modules = [ 207 ./machines/john 208 unstable-overlays 209 ]; 210 }; 211 }; 212 213 # Darwin configurations 214 # Available through 'darwin-rebuild switch --flake .#hostname' 215 darwinConfigurations = { 216 atalanta = nix-darwin.lib.darwinSystem { 217 system = "aarch64-darwin"; 218 specialArgs = { inherit inputs outputs; }; 219 modules = [ 220 home-manager.darwinModules.home-manager 221 agenix.darwinModules.default 222 unstable-overlays 223 ./machines/atalanta 224 ]; 225 }; 226 }; 227 228 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; 229 formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree; 230 }; 231}