{ 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; isNixOS = true; dots = "/persist/home/${user}/code/nix-config"; }; modules = [ inputs.disko.nixosModules.default ./${host} ./${host}/hardware.nix ../nixos { home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = specialArgs // { inherit host user; dots = "/home/${user}/code/nix-config"; }; users.${user} = { imports = [ inputs.nix-index-database.hmModules.nix-index inputs.impermanence.nixosModules.home-manager.impermanence inputs.plasma-manager.homeManagerModules.plasma-manager inputs.sops-nix.homeManagerModules.sops ./${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 inputs.stylix.nixosModules.stylix inputs.sops-nix.nixosModules.sops ]; }; in { pickwick = mkNixosConfiguration "pickwick" { }; }