{ config, pkgs, lib, ... }: { programs = { starship.enableZshIntegration = true; fzf.enableZshIntegration = true; zoxide.enableZshIntegration = true; yazi.enableZshIntegration = true; eza.enableZshIntegration = true; direnv.enableZshIntegration = true; kitty.shellIntegration.enableZshIntegration = true; carapace.enableZshIntegration = false; zsh = { enable = true; enableCompletion = true; initExtra = lib.mkMerge [ '' #have the menu highlight while we cycle through options zstyle ':completion:*' menu select #case insensitive completion zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' #allow completion from midword setopt COMPLETE_IN_WORD #move cursor to end of word after completing setopt ALWAYS_TO_END #complete aliases as well setopt COMPLETE_ALIASES #select first item when you press tab the first time. setopt MENU_COMPLETE #case insensitive globbing setopt NO_CASE_GLOB #sort globs that expand to numbers by number rather than alphabeticly setopt NUMERIC_GLOB_SORT #allows for some neat globbing. setopt EXTENDED_GLOB #allow backspacing beyond the point you entered insert mode: bindkey -v '^?' backward-delete-char bindkey "^W" backward-kill-word #cheat.sh is a wonderful tool, the less typing needed the better. cheat(){ for i in $*; do; curl cheat.sh/$i done } '' (lib.mkIf (!config.programs.starship.enable) '' autoload -U promptinit promptinit autoload -U colors colors #stuff to show git things. autoload -Uz vcs_info setopt prompt_subst precmd_vcs() {vcs_info} #when not in a repo, show full path to current directory. when in one, show path from base direcory of the repo. zstyle ':vcs_info:*' nvcsformats '%~' zstyle ':vcs_info:*' formats '%r/%S %F{green}[%b]%f' zstyle ':vcs_info:*' actionformats '%r/%S %F{green}[%b] %F{red}<%a>%f' #the precmd function, called just before printing the prompt. function precmd() { precmd_vcs } #Make the right prompt blank, just to be sure. RPROMPT="" #on the top line, show a whole bunch of info. botton line should be as minimal as possilbe (just a single char to input next to...) PROMPT=$'%F{cyan}[%n@%m]%f%F{red}├────┤%f$vcs_info_msg_0_ %F{white}[%D %T]%f\n»' '') ]; autocd = true; autosuggestion.enable = true; defaultKeymap = "viins"; history = { ignoreAllDups = true; extended = true; }; shellAliases = { ll = "ls -lh"; la = "ls -lha"; please = "sudo $(fc -ln -1)"; pyactivate = "source ./.venv/bin/activate"; }; syntaxHighlighting = { enable = true; highlighters = [ "main" "brackets" "pattern" "regexp" "root" "line" ]; }; }; }; services.gpg-agent.enableZshIntegration = true; home.packages = with pkgs; [ curl ]; }