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