blob: ef2eaaa354a43978c25ceaf8458246b3e7c661bb [file] [log] [blame]
{ pkgs, config, fzf-tab, ... }: {
programs.zsh = {
enable = true;
plugins = [ { name = "fzf-tab"; src = fzf-tab; } ];
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "crunch";
};
history = {
size = 10000;
path = "${config.xdg.dataHome}/zsh/history";
expireDuplicatesFirst = true;
extended = true;
};
initExtra = ''
bindkey -v
bindkey "\'\'$\{key[Up]}" up-line-or-search
command_not_found_handler ()
{
local p='/nix/store/ycclzpk99snlrk8sg9n4j8pm1927gavw-command-not-found/bin/command-not-found';
if [ -x "$p" ] && [ -f '/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite' ]; then
"$p" "$@" 2>&1 | sed -r 's/nix-shell -p (\S+)/nix shell nixpkgs#\1/g' 1>&2;
if [ $? = 126 ]; then
"$@";
else
return 127;
fi;
else
echo "$1: command not found" 1>&2;
return 127;
fi
}
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=243';
ZSH_HIGHLIGHT_STYLES[comment]='fg=248';
function task_indicator {
if [ `task +READY +OVERDUE count 2> /dev/null` -gt "0" ] ; then
printf "%%{\\033[38;5;248m%%}(%%{$fg[magenta]%%}$(task +READY +OVERDUE count) OVERDUE%%{\033[38;5;248m%%})%%{$fg[default]%%}"
elif [ `task +READY +DUETODAY count 2> /dev/null` -gt "0" ] ; then
printf "%%{\\033[38;5;248m%%}(%%{$fg[red]%%}$(task +READY +DUETODAY count) DUE TODAY%%{\033[38;5;248m%%})%%{$fg[default]%%}"
elif [ `task +READY +DUETomorrow count 2> /dev/null` -gt "0" ] ; then
printf "%%{\\033[38;5;248m%%}(%%{$fg[yellow]%%}$(task +READY +DUETomorrow count) DUE TOMORROW%%{\033[38;5;248m%%})%%{$fg[default]%%}"
elif [ `task +READY urgency \> 10 count 2> /dev/null` -gt "0" ] ; then
printf "%%{\\033[38;5;248m%%}(%%{$fg[red]%%}$(task +READY urgency \\\> 10 count) URGENT%%{\033[38;5;248m%%})%%{$fg[default]%%}"
elif [ `task +READY count 2> /dev/null` -gt "0" ] ; then
printf "%%{\\033[38;5;248m%%}(%%{$fg[cyan]%%}$(task +READY count) TASKS%%{\033[38;5;248m%%})%%{$fg[default]%%}"
else
printf "%%{\\033[38;5;248m%%}(%%{$fg[green]%%}NO TASKS%%{\033[38;5;248m%%})%%{$fg[default]%%}"
fi
}
if [[ $SHLVL != "1" ]]; then
export RPS1=$'%{\033[38;5;248m%}(%{$fg[red]%}L$SHLVL%{\033[38;5;248m%})%{\033[39m\033[49m%} '
fi
RPS1+='$(task_indicator)'
function TRAPINT {
print -n "$fg_bold[red]^C$fg_no_bold[default]"
return $(( 128 + $1 ))
}
# function zle-line-init {
# if [[ -n $ZLE_LINE_ABORTED ]]; then
# MY_LINE_ABORTED="$ZLE_LINE_ABORTED"
# fi
# if [[ -n $MY_LINE_ABORTED ]]; then
# local savebuf="$BUFFER" savecur="$CURSOR"
# BUFFER="$MY_LINE_ABORTED"
# CURSOR="$#BUFFER"
# zle split-undo
# BUFFER="$savebuf" CURSOR="$savecur"
# fi
# }
# zle -N zle-line-init
function tempd {
cd "$(mktemp -d)"
}
# disable sort when completing `git checkout`
zstyle ':completion:*:git-checkout:*' sort false
# set descriptions format to enable group support
zstyle ':completion:*:descriptions' format '[%d]'
# set list-colors to enable filename colorizing
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
# preview directory's content with exa when completing cd
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'exa -1 -l --color=always $realpath'
# switch group using `,` and `.`
zstyle ':fzf-tab:*' switch-group ',' '.'
enable-fzf-tab
alias compinit="true"
source ${./zsh/completions}/*
'';
enableSyntaxHighlighting = true;
enableAutosuggestions = true;
autocd = true;
dotDir = ".local/share/zsh";
};
home.packages = [
pkgs.fzf
];
home.shellAliases = {
":q" = "exit";
};
}