{ user ? throw "user argument is required" }: { ... }: { home-manager.users."${user.name}" = { programs.zsh = { enable = true; dotDir = ".config/zsh"; autocd = true; history = { path = "${user.home}/.local/share/zsh/history"; expireDuplicatesFirst = true; }; historySubstringSearch.enable = true; autosuggestion.enable = true; syntaxHighlighting.enable = true; }; home.persistence."/persist${user.home}".directories = [ ".local/share/zsh" ]; }; }