{ inputs, lib, system, specialArgs, dots, user ? "rayandrew", ... }: let mkNixosConfiguration = host: { pkgs ? ( import inputs.nixpkgs { inherit system; config.allowUnfree = true; } ), }: lib.nixosSystem { inherit pkgs; specialArgs = specialArgs // { inherit host user dots; }; modules = [ inputs.disko.nixosModules.default ./${host} ./${host}/hardware.nix ../nixos ({config, ...}: { home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = specialArgs // { inherit host user system dots; home-dir = config.home-manager.users.${user}.home.homeDirectory; }; users.${user} = { imports = [ inputs.nix-index-database.hmModules.nix-index inputs.sops-nix.homeManagerModules.sops ../home ] ++ lib.optional(builtins.pathExists ./${host}/home.nix) ./${host}/home.nix; }; }; }) # alias for home-manager (lib.mkAliasOptionModule [ "hm" ] [ "home-manager" "users" user ]) inputs.home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops ]; }; in { nixosConfigurations = { pickwick = mkNixosConfiguration "pickwick" { }; lemur = mkNixosConfiguration "lemur" { }; }; }