{ config, lib, pkgs, ... }: let just-plugin = let plugin_file = pkgs.writeText "_just" '' #compdef just #autload alias justl="\just --list" alias juste="\just --evaluate" local subcmds=() while read -r line ; do if [[ ! $line == Available* ]] ; then subcmds+=(''${line/[[:space:]]*\#/:}) fi done < <(just --list) _describe 'command' subcmds ''; in pkgs.stdenv.mkDerivation { name = "just-completions"; version = "0.1.0"; phases = "installPhase"; installPhase = '' PLUGIN_PATH=$out/share/oh-my-zsh/plugins/just mkdir -p $PLUGIN_PATH cp ${plugin_file} $PLUGIN_PATH/_just chmod --recursive a-w $out ''; }; in { programs.zsh = { enable = true; profileExtra = '' . "${config.home.profileDirectory}/etc/profile.d/hm-session-vars.sh" ''; # will be called again by oh-my-zsh enableCompletion = false; enableAutosuggestions = true; initExtra = let inNixShell = ''$([[ -n "$IN_NIX_SHELL" ]] && printf " 🐚")''; in '' PROMPT='%F{%(!.red.green)}%n%f@%m %(?.%F{green}✓%f.%F{red}✗ ($?%))%f %F{blue}%~%f${inNixShell}%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 export NIX_PATH="nixpkgs=${pkgs.path}" # print lines without termination setopt PROMPT_CR setopt PROMPT_SP export PROMPT_EOL_MARK="" ${lib.optionalString config.services.gpg-agent.enable '' export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh" ''} ${lib.optionalString config.programs.neovim.enable '' export EDITOR="nvim" ''} ''; plugins = [ { # will source zsh-autosuggestions.plugin.zsh name = "zsh-autosuggestions"; src = pkgs.fetchFromGitHub { owner = "zsh-users"; repo = "zsh-autosuggestions"; rev = "v0.6.3"; sha256 = "1h8h2mz9wpjpymgl2p7pc146c1jgb3dggpvzwm9ln3in336wl95c"; }; } { 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"; } { name = "just"; src = "${just-plugin}/share/oh-my-zsh/plugins/just"; } ]; oh-my-zsh = { enable = true; theme = "tjkirch"; plugins = ["git" "sudo"]; }; }; }