{ inputs, lib, system, specialArgs, user ? "rayandrew", ... }: let # provide an optional { pkgs } 2nd argument to override the pkgs mkNixosConfiguration = host: { pkgs ? ( import inputs.nixpkgs { inherit system; config.allowUnfree = true; } ), }: lib.nixosSystem { inherit pkgs; specialArgs = specialArgs // { inherit host user; }; modules = [ inputs.disko.nixosModules.default ./${host} ./${host}/hardware.nix ../nixos { home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = specialArgs // { inherit host user; }; users.${user} = { imports = [ inputs.nix-index-database.hmModules.nix-index # ./${host}/home.nix ../home ]; }; }; } # alias for home-manager (lib.mkAliasOptionModule [ "hm" ] [ "home-manager" "users" user ]) inputs.home-manager.nixosModules.home-manager inputs.impermanence.nixosModules.impermanence ]; }; in { pickwick = mkNixosConfiguration "pickwick" { }; }