{ self, home-manager, ... } @ inputs: { username, hostname, pkgs, version, extraModules ? null }: let entrypoint = "${self}/home/configs/${hostname}/${username}.nix"; defaultModule = { lib, config, ... }: { _module.args.inputs = self.inputs; _module.args.self = self; manual = { html.enable = false; manpages.enable = false; json.enable = false; }; home = { inherit username; homeDirectory = if pkgs.stdenv.isDarwin then "/Users/${username}" else "/home/${username}"; stateVersion = version; }; # Make applications pop up in finder/spotlight disabledModules = [ "targets/darwin/linkapps.nix" ]; home.activation = lib.mkIf pkgs.stdenv.isDarwin { copyApplications = let apps = pkgs.buildEnv { name = "home-manager-applications"; paths = config.home.packages; pathsToLink = "/Applications"; }; in lib.hm.dag.entryAfter [ "writeBoundary" ] '' baseDir="$HOME/Applications/Home Manager Apps" if [ -d "$baseDir" ]; then rm -rf "$baseDir" fi mkdir -p "$baseDir" for appFile in ${apps}/Applications/*; do target="$baseDir/$(basename "$appFile")" $DRY_RUN_CMD cp ''${VERBOSE_ARG:+-v} -fHRL "$appFile" "$baseDir" $DRY_RUN_CMD chmod ''${VERBOSE_ARG:+-v} -R +w "$target" done ''; }; }; in home-manager.lib.homeManagerConfiguration { pkgs = pkgs; modules = [ defaultModule entrypoint ] ++ pkgs.lib.optionals (extraModules != null) extraModules; }