{ flake, flakeInputs, userName, config, lib, ... }: let user = config.users.users.${userName}; in { imports = with flake.nixosModules.userProfiles.${userName}; [ zsh ]; config = { users.users.gkleen.group = "gkleen"; users.groups.gkleen = {}; systemd.tmpfiles.settings.home-directories."/persistent/${user.home}" = lib.mkForce { v = { mode = user.homeMode; user = user.name; inherit (user) group; }; }; home-manager.users.${userName} = let sysConfig = config; in { config, ... }: { imports = [ flakeInputs.nix-index-database.homeModules.nix-index ]; home.stateVersion = "26.05"; home.persistence."/persistent" = { directories = [ "Downloads" "documents" "screenshots" "media" ]; }; programs.zsh.dirHashes = let flakeHashes = lib.mapAttrs' (n: v: lib.nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs; inputNames = { self = "nixos"; }; in flakeHashes // { docs = "$HOME/documents"; dl = "$HOME/Downloads"; scrot = "$HOME/screenshots"; media = "$HOME/media"; }; programs.starship.settings = { directory.substitutions = lib.mapAttrs' (name: value: let value' = builtins.unsafeDiscardStringContext value; value'' = if lib.hasPrefix "$HOME/" value' then "~" + lib.removePrefix "$HOME" value' else value'; in lib.nameValuePair value'' "~${name}" ) config.programs.zsh.dirHashes; }; programs.nix-index.enable = true; }; }; }