{ pkgs , config , ... }: let channelSources = (import ../../default.nix { versionsPath = ../../variables/versions.nix; }).channelSources; in { programs.zsh = { enable = true; # will be called again by oh-my-zsh enableCompletion = false; enableAutosuggestions = true; initExtra = '' PROMPT='%F{%(!.red.green)}%n%f@%m %(?.%F{green}✓%f.%F{red}✗ ($?%))%f %F{blue}%~%f %F{magenta}$(git_prompt_info)%f$prompt_newline%_%F{%(!.red.green)}$(prompt_char)%f ' RPROMPT="" # Automatic rehash zstyle ':completion:*' rehash true if [ -f $HOME/.shrc.d/sh_aliases ]; then . $HOME/.shrc.d/sh_aliases fi ${if builtins.hasAttr "homeshick" pkgs then '' source ${pkgs.homeshick}/homeshick.sh fpath=(${pkgs.homeshick}/completions $fpath) '' else '' ''} # Disable intercepting of ctrl-s and ctrl-q as flow control. stty stop ''' -ixoff -ixon # don't cd into directories when executed unsetopt AUTO_CD source ${channelSources} # print lines without termination setopt PROMPT_CR setopt PROMPT_SP export PROMPT_EOL_MARK="" ''; sessionVariables = { # Add more envrionment variables here }; plugins = [ { # will source zsh-autosuggestions.plugin.zsh name = "zsh-autosuggestions"; src = pkgs.fetchFromGitHub { owner = "zsh-users"; repo = "zsh-autosuggestions"; rev = "v0.6.3"; sha256 = "1smskx9vkx78yhwspjq2c5r5swh9fc5xxa40ib4753f00wk4dwpp"; }; } { name = "enhancd"; file = "init.sh"; src = pkgs.fetchFromGitHub { owner = "b4b4r07"; repo = "enhancd"; rev = "v2.2.4"; sha256 = "1smskx9vkx78yhwspjq2c5r5swh9fc5xxa40ib4753f00wk4dwpp"; }; } { name = "pass"; src = "${pkgs.oh-my-zsh}/share/oh-my-zsh/plugins/pass"; } { name = "minikube"; src = "${pkgs.oh-my-zsh}/share/oh-my-zsh/plugins/minikube"; } ]; oh-my-zsh = { enable = true; theme = "tjkirch"; plugins = [ "git" "sudo" ]; }; }; }