{ inputs, lib, }: with lib; let mkConfiguration = name: { modules ? [], configuration ? ./${name}, this ? my.configurations.${name}, extraSpecialArgs ? { localUsername = my.username; localHostname = this.hostname; }, }: nameValuePair name (nixosSystem { inherit (this) system; modules = modules ++ attrValues inputs.self.modules ++ attrValues inputs.self.nixosModules ++ optional (configuration != null) (import configuration); specialArgs = { inherit inputs lib this; } // extraSpecialArgs; }); mkIso = system: { this = { hostname = "iso"; inherit system; isHeadless = false; isHeadful = false; }; configuration = ./iso; modules = with inputs; [ "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix" ]; }; mkTest = this: { modules = with inputs; [ "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix" nixpkgs.nixosModules.notDetected ]; inherit this; }; in mapAttrs' mkConfiguration { # ISO images. iso-arm = mkIso "aarch64-linux"; iso-x86 = mkIso "x86_64-linux"; # Dummy configuration test profiles. test-headless = mkTest { hostname = "test-headless"; system = "x86_64-linux"; isHeadless = true; isHeadful = false; }; test-headful = mkTest { hostname = "test-headful"; system = "x86_64-linux"; isHeadless = false; isHeadful = true; }; # A beefy desktop: 7950x/rx6750xt/128GB. eonwe.modules = with inputs; [ nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-gpu-amd nixos-hardware.nixosModules.common-pc-ssd nixpkgs.nixosModules.notDetected ]; # ThinkPad T480. melian.modules = with inputs; [ nixos-hardware.nixosModules.common-pc-laptop-ssd nixos-hardware.nixosModules.lenovo-thinkpad-t480 nixpkgs.nixosModules.notDetected ]; # VPS: Germany manwe.modules = with inputs; [ "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix" nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-pc-ssd nixpkgs.nixosModules.notDetected ]; # VPS: Germany varda.modules = with inputs; [ "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix" nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-pc-ssd nixpkgs.nixosModules.notDetected ]; # VPS: France yavanna.modules = with inputs; [ "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix" nixos-hardware.nixosModules.common-cpu-intel nixos-hardware.nixosModules.common-pc-hdd nixpkgs.nixosModules.notDetected ]; }