inputs: with inputs.self.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 this; inherit (inputs.self) lib; } // extraSpecialArgs; }); mkIso = system: { this = { hostname = "iso"; inherit system; isHeadless = false; isHeadful = false; }; configuration = ./iso; modules = [ "${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-arm = mkIso "aarch64-linux"; iso-x86 = mkIso "x86_64-linux"; 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; }; eonwe.modules = with inputs; [ nixos-hardware.nixosModules.common-cpu-amd nixos-hardware.nixosModules.common-cpu-amd-pstate nixos-hardware.nixosModules.common-gpu-amd nixos-hardware.nixosModules.common-pc-ssd nixpkgs.nixosModules.notDetected ]; melian.modules = with inputs; [ nixos-hardware.nixosModules.common-pc-laptop-ssd nixos-hardware.nixosModules.lenovo-thinkpad-t480 nixpkgs.nixosModules.notDetected ]; 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 ]; 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 ]; 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 ]; }