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" ]; }; } ]; 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 = [ { home = { inherit username; homeDirectory = "/home/${username}"; stateVersion = "24.11"; }; programs.home-manager.enable = true; } (import ../system/home-manager) ] ++ homeModule; }; }; in rec { hosts = { arcadia = mkHost { system = "x86_64-linux"; hostname = "Arcadia"; username = "hare"; systemModules = [ ./arcadia/nixos.nix ]; homeModule = [ ./arcadia/home-manager.nix ]; }; }; nixos = { arcadia = hosts.arcadia.nixos; }; home-manager = { arcadia = hosts.arcadia.home-manager; }; }