My collection of nix configurations
at main 323 lines 10 kB view raw
1{ 2 inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 3 inputs.homeManager.url = "github:nix-community/home-manager"; 4 inputs.homeManager.inputs.nixpkgs.follows = "nixpkgs"; 5 inputs.emacs.url = "github:nix-community/emacs-overlay"; 6 inputs.sops.url = "github:Mic92/sops-nix"; 7 inputs.deploy.url = "github:serokell/deploy-rs"; 8 inputs.home.url = "sourcehut:~afontaine/home"; 9 inputs.steamFetcher.url = "github:nix-community/steam-fetcher"; 10 inputs.steamFetcher.inputs.nixpkgs.follows = "nixpkgs"; 11 inputs.peonPing.url = "github:PeonPing/peon-ping"; 12 inputs.peonPing.inputs.nixpkgs.follows = "nixpkgs"; 13 inputs.stylix.url = "github:nix-community/stylix"; 14 inputs.stylix.inputs.nixpkgs.follows = "nixpkgs"; 15 inputs.tangled.url = "git+https://tangled.sh/@tangled.sh/core"; 16 inputs.tangled.inputs.nixpkgs.follows = "nixpkgs"; 17 inputs.nix-index-database.url = "github:nix-community/nix-index-database"; 18 inputs.nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; 19 20 outputs = 21 { 22 self, 23 nixpkgs, 24 homeManager, 25 emacs, 26 sops, 27 deploy, 28 home, 29 steamFetcher, 30 tangled, 31 peonPing, 32 stylix, 33 nix-index-database, 34 }: 35 let 36 systems = [ 37 "x86_64-linux" 38 "x86_64-darwin" 39 "aarch64-darwin" 40 "aarch64-linux" 41 ]; 42 forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system); 43 in 44 { 45 overlays = { 46 emacs = emacs.overlay; 47 }; 48 nixosModules = { 49 nixConfig = 50 { pkgs, ... }: 51 { 52 nix = { 53 registry.nixpkgs.to = { 54 type = "path"; 55 path = pkgs.path; 56 }; 57 package = pkgs.lixPackageSets.stable.lix; 58 extraOptions = '' 59 experimental-features = nix-command flakes 60 ''; 61 settings.trusted-users = [ 62 "root" 63 "@wheel" 64 ]; 65 gc = { 66 automatic = true; 67 options = "--delete-older-than 10d"; 68 }; 69 settings.auto-optimise-store = true; 70 nixPath = [ "nixpkgs=${nixpkgs}" ]; 71 }; 72 73 nixpkgs.config.permittedInsecurePackages = [ 74 "aspnetcore-runtime-6.0.36" 75 "aspnetcore-runtime-wrapped-6.0.36" 76 "dotnet-sdk-6.0.428" 77 "dotnet-sdk-wrapped-6.0.428" 78 ]; 79 }; 80 emacsOverlay = { 81 nixpkgs = { 82 overlays = [ 83 emacs.overlay 84 ]; 85 config = { 86 allowUnfree = true; 87 }; 88 }; 89 home-manager.useGlobalPkgs = true; 90 }; 91 steamOverlay = { 92 nixpkgs = { 93 overlays = [ 94 steamFetcher.overlay 95 ]; 96 config = { 97 allowUnfree = true; 98 }; 99 }; 100 home-manager.useGlobalPkgs = true; 101 }; 102 laptops = import ./shared/laptops; 103 nixbuild = import ./shared/nixbuild; 104 }; 105 nixosConfigurations = { 106 duchess = nixpkgs.lib.nixosSystem { 107 system = "x86_64-linux"; 108 modules = [ 109 nixpkgs.nixosModules.notDetected 110 homeManager.nixosModules.home-manager 111 stylix.nixosModules.stylix 112 self.nixosModules.emacsOverlay 113 self.nixosModules.nixbuild 114 self.nixosModules.nixConfig 115 sops.nixosModules.sops 116 ./duchess 117 ./stylix 118 ./andrew 119 ./cachix.nix 120 ]; 121 }; 122 slightly-darker-black = nixpkgs.lib.nixosSystem { 123 system = "x86_64-linux"; 124 modules = [ 125 nixpkgs.nixosModules.notDetected 126 homeManager.nixosModules.home-manager 127 stylix.nixosModules.stylix 128 self.nixosModules.emacsOverlay 129 self.nixosModules.laptops 130 self.nixosModules.nixbuild 131 self.nixosModules.nixConfig 132 sops.nixosModules.sops 133 ./stylix 134 ./slightly-darker-black 135 ./andrew 136 ./cachix.nix 137 ]; 138 }; 139 # pam-poovy = nixpkgs.lib.nixosSystem { 140 # system = "x86_64-linux"; 141 # modules = [ 142 # nixpkgs.nixosModules.notDetected 143 # homeManager.nixosModules.home-manager 144 # self.nixosModules.emacsOverlay 145 # self.nixosModules.laptops 146 # self.nixosModules.nixConfig 147 # sops.nixosModules.sops 148 # ./pam-poovy 149 # ./andrew 150 # ./cachix.nix 151 # ]; 152 # }; 153 woodhouse = nixpkgs.lib.nixosSystem { 154 system = "x86_64-linux"; 155 modules = [ 156 nixpkgs.nixosModules.notDetected 157 homeManager.nixosModules.home-manager 158 tangled.nixosModules.spindle 159 self.nixosModules.emacsOverlay 160 self.nixosModules.nixbuild 161 self.nixosModules.nixConfig 162 self.nixosModules.steamOverlay 163 ./woodhouse 164 ./andrew/server.nix 165 sops.nixosModules.sops 166 ./cachix.nix 167 ]; 168 }; 169 cheryl = nixpkgs.lib.nixosSystem { 170 system = "x86_64-linux"; 171 modules = [ 172 sops.nixosModules.sops 173 homeManager.nixosModules.home-manager 174 home.nixosModules.home 175 tangled.nixosModules.knot 176 self.nixosModules.emacsOverlay 177 self.nixosModules.nixConfig 178 ./cheryl 179 ./andrew/server.nix 180 ./cachix.nix 181 ]; 182 }; 183 cyril-figgis = nixpkgs.lib.nixosSystem { 184 system = "x86_64-linux"; 185 modules = [ 186 sops.nixosModules.sops 187 homeManager.nixosModules.home-manager 188 home.nixosModules.home 189 self.nixosModules.emacsOverlay 190 self.nixosModules.nixConfig 191 ./cyril-figgis 192 ./andrew/server.nix 193 ./cachix.nix 194 ]; 195 }; 196 ray-gillette = nixpkgs.lib.nixosSystem { 197 system = "x86_64-linux"; 198 modules = [ 199 sops.nixosModules.sops 200 homeManager.nixosModules.home-manager 201 home.nixosModules.home 202 self.nixosModules.emacsOverlay 203 self.nixosModules.nixConfig 204 ./ray-gillette 205 ./andrew/server.nix 206 ./cachix.nix 207 ]; 208 }; 209 }; 210 deploy.nodes = { 211 cheryl = { 212 hostname = "cheryl"; 213 profiles.system = { 214 user = "root"; 215 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cheryl; 216 }; 217 }; 218 cyril-figgis = { 219 hostname = "cyril-figgis"; 220 profiles.system = { 221 user = "root"; 222 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cyril-figgis; 223 }; 224 }; 225 ray-gillette = { 226 hostname = "ray-gillette"; 227 profiles.system = { 228 user = "root"; 229 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.ray-gillette; 230 }; 231 }; 232 duchess = { 233 hostname = "duchess"; 234 sudo = "doas -u"; 235 profiles.system = { 236 user = "root"; 237 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.duchess; 238 }; 239 }; 240 woodhouse = { 241 hostname = "woodhouse"; 242 profiles.system = { 243 user = "root"; 244 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.woodhouse; 245 }; 246 }; 247 }; 248 homeConfigurations = { 249 andrew = homeManager.lib.homeManagerConfiguration { 250 modules = [ 251 sops.homeManagerModules.sops 252 stylix.homeModules.stylix 253 peonPing.homeManagerModules.default 254 nix-index-database.homeModules.default 255 ( 256 { pkgs, lib, ... }: 257 { 258 imports = [ ./andrew/home.nix ]; 259 nixpkgs = { 260 overlays = [ 261 emacs.overlay 262 (_final: _prev: { 263 peon-ping = peonPing.packages.x86_64-linux.default; 264 }) 265 ]; 266 config = { 267 allowUnfree = true; 268 }; 269 }; 270 home.homeDirectory = "/home/andrew"; 271 home.username = "andrew"; 272 } 273 ) 274 ]; 275 pkgs = nixpkgs.legacyPackages.x86_64-linux; 276 }; 277 }; 278 checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy.lib; 279 packages = ( 280 forAllSystems ( 281 system: 282 let 283 pkgs = nixpkgs.legacyPackages.${system}; 284 in 285 { 286 # digitalOceanImage = 287 # self.nixosConfigurations.krieger.config.system.build.digitalOceanImage; 288 iosevka-mono = pkgs.callPackage ./stylix/fonts/iosevka-mono.nix { }; 289 iosevka-prop = pkgs.callPackage ./stylix/fonts/iosevka-prop.nix { }; 290 iosekva-nerd = pkgs.callPackage ./stylix/fonts/iosevka-nerd.nix { 291 iosevka = self.packages.${system}.iosevka-mono; 292 }; 293 } 294 ) 295 ); 296 devShells = ( 297 forAllSystems ( 298 system: 299 let 300 pkgs = nixpkgs.legacyPackages.${system}; 301 sopsPkgs = sops.packages.${system}; 302 in 303 { 304 default = pkgs.mkShell { 305 sopsPGPKeyDirs = [ 306 "./keys/hosts" 307 "./keys/users" 308 ]; 309 310 nativeBuildInputs = [ sopsPkgs.sops-import-keys-hook ]; 311 buildInputs = [ 312 sopsPkgs.ssh-to-pgp 313 deploy.packages.${system}.default 314 pkgs.nix-prefetch 315 pkgs.nix-output-monitor 316 homeManager.packages.${system}.default 317 ]; 318 }; 319 } 320 ) 321 ); 322 }; 323}