{ self, unstable, ... } @ args: { mkSystem = { name, nixpkgs ? unstable, system ? "x86_64-linux", overlays ? null, extraModules ? null }: nixpkgs.lib.nixosSystem ( let configFolder = "${self}/nixos"; entryPoint = "${configFolder}/${name}/configuration.nix"; hardware = "${configFolder}/${name}/hardware-configuration.nix"; in { system = system; specialArgs = args; modules = [ { networking.hostName = name; nix.flakes.enable = true; system.configurationRevision = self.rev or "dirty"; documentation.man = { enable = true; generateCaches = true; }; } entryPoint hardware # TODO: import all modules (use mapModules?) ../modules/flakes.nix ../modules/nix.nix ../modules/nixpkgs.nix ] ++ nixpkgs.lib.optional (overlays != null) { nixpkgs.overlays = overlays; } ++ nixpkgs.lib.optionals (extraModules != null) extraModules; } entryPoint hardware # TODO: import all modules (use mapModules?) ../modules/flakes.nix ../modules/nix.nix ../modules/nixpkgs.nix ] ++ nixpkgs.lib.optional (overlays != null) { nixpkgs.overlays = overlays; } ++ nixpkgs.lib.optionals (extraModules != null) extraModules; } )