{ ... }: { programs.zoxide = { enable = true; enableZshIntegration = true; }; programs.zsh = { enable = true; sessionVariables = { SOUNDS_ENABLED = "1"; EDITOR = "/nixbin/nvim"; SUDO_EDITOR = "/nixbin/nvim"; VISUAL = "/nixbin/nvim"; LANG = "en_US.UTF-8"; BROWSER = "/nixbin/firefox"; NVIM = "~/dots/nixvim/config/"; HYPRCONF = "~/dots/hyprland/"; SYSCONF = "~/sysflakes/glasshouse-desktop/sys"; }; oh-my-zsh = { enable = true; plugins = [ "git" "fzf" ]; }; enableCompletion = true; history = { path = "$HOME/.zsh_history"; save = 10000; size = 10000; share = true; }; autosuggestion = { enable = true; highlight = "fg=#4C566A,underline"; }; shellAliases = { grep = "grep --color=auto"; mv = "mv -v"; cp = "cp -vr"; gt = "gtrash"; gtp = "gtrash put"; grub-update = "sudo grub-mkconfig -o /boot/grub/grub.cfg"; sr = "source ~/.zshrc"; ".." = "cd .."; rm = "echo 'use \"gtp\" instead'"; psg = "ps aux | grep -v grep | grep -i -e VSZ -e" ; mkdir = "mkdir -p"; pk = "pkill -9 -f"; zrc = "nvim $HOME/dots/zsh/zshell.nix"; svcu = "systemctl --user"; svc = "sudo systemctl"; hyprconf = "nvim $HOME/dots/hyprland/config.nix"; nixconf = "nvim $HOME/sysflakes/glasshouse-desktop/sys"; hmconf = "nvim $HOME/sysflakes/glasshouse-desktop/home"; viflake = "nvim flake.nix"; nvimcfg = "nvim $HOME/dots/nixvim/config"; }; initExtra = '' if [ ! -e $HOME/.zsh_history ]; then touch $HOME/.zsh_history chmod 600 $HOME/.zsh_history fi setopt APPEND_HISTORY # Append history to the history file (don't overwrite) setopt INC_APPEND_HISTORY # Append to the history file incrementally setopt SHARE_HISTORY # Share history between all zsh sessions sessionVariables = { setopt CORRECT setopt NO_NOMATCH setopt LIST_PACKED setopt ALWAYS_TO_END setopt GLOB_COMPLETE setopt COMPLETE_ALIASES setopt COMPLETE_IN_WORD setopt AUTO_CD setopt AUTO_CONTINUE setopt LONG_LIST_JOBS setopt HIST_VERIFY setopt SHARE_HISTORY setopt HIST_IGNORE_SPACE setopt HIST_SAVE_NO_DUPS setopt HIST_IGNORE_ALL_DUPS setopt EXTENDED_GLOB setopt TRANSIENT_RPROMPT setopt INTERACTIVE_COMMENTS autoload -U compinit # completion autoload -U terminfo # terminfo keys zmodload -i zsh/complist # menu completion autoload -U promptinit # prompt autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search bindkey -v type starship_zle-keymap-select >/dev/null || \ { eval "$(starship init zsh)" } unalias ls clear splash scheck && (aplay ~/sound/sys/sh-source.wav > /dev/null 2>&1 &) ''; }; }