{ inputs }: { mkSystem = { hostname , system }: inputs.nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs system hostname; }; modules = [ inputs.agenix.nixosModules.age ../hosts/common ../hosts/${hostname} ./private-wireguard.nix { networking.hostName = hostname; nixpkgs = { config.allowUnfree = true; }; # Add each input as a registry nix.registry = inputs.nixpkgs.lib.mapAttrs' (n: v: inputs.nixpkgs.lib.nameValuePair (n) ({ flake = v; })) inputs; } ]; }; mkHome = { username , system , hostname , isDesktop ? false }: inputs.home-manager.lib.homeManagerConfiguration { inherit username system; extraSpecialArgs = { inherit system hostname isDesktop; }; homeDirectory = "/home/${username}"; configuration = ../users/${username}; extraModules = [ # Base configuration { nixpkgs = { config.allowUnfree = true; overlays = [ inputs.emacs-overlay.overlay inputs.nur.overlay ]; }; programs = { home-manager.enable = true; git.enable = true; }; systemd.user.startServices = "sd-switch"; } ]; }; }