inputs: let mkHost = { system, hostname, username, systemModules, homeModule, }: { nixos = inputs.nixpkgs.lib.nixosSystem { modules = with inputs; systemModules ++ [ { users.users.${username} = { isNormalUser = true; description = ""; extraGroups = [ "networkmanager" "wheel" ]; }; programs.git.enable = true; } ]; inherit system; specialArgs = { inherit inputs hostname username; }; }; home-manager = inputs.home-manager.lib.homeManagerConfiguration { pkgs = import inputs.nixpkgs { inherit system; config.allowUnfree = true; }; extraSpecialArgs = { inherit inputs hostname username; }; modules = homeModule ++ [ { home = { inherit username; homeDirectory = "/home/${username}"; stateVersion = "24.11"; }; programs.home-manager.enable = true; } ]; }; }; in rec { hosts = { myNixOS = mkHost { system = "x86_64-linux"; hostname = "myNixOS"; username = "hare"; systemModules = [ ./myNixOS/nixos.nix ]; homeModule = [ ./myNixOS/home-manager.nix ]; }; }; nixos = { myNixOS = hosts.myNixOS.nixos; }; home-manager = { myNixOS = hosts.myNixOS.home-manager; }; }