nixos-config/modules/workspace/zsh.nix

103 lines
2.8 KiB
Nix
Raw Normal View History

2020-02-17 17:00:59 +04:00
{ pkgs, config, ... }: {
environment.pathsToLink = [ "/share/zsh" ];
environment.sessionVariables.SHELL = "zsh";
home-manager.users.balsoft.programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
oh-my-zsh = {
enable = true;
theme = "agnoster";
plugins = [ "git" "dirhistory" ];
};
2021-02-01 20:54:45 +04:00
2020-08-22 12:09:44 +04:00
history = rec {
size = 1000000;
save = size;
};
2020-02-17 17:00:59 +04:00
plugins = [
{
name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "chisui";
repo = "zsh-nix-shell";
rev = "b2609ca787803f523a18bb9f53277d0121e30389";
sha256 = "01w59zzdj12p4ag9yla9ycxx58pg3rah2hnnf3sw4yk95w3hlzi6";
};
}
{
name = "zsh-autosuggestions";
src = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-autosuggestions";
rev = "v0.4.0";
sha256 = "0z6i9wjjklb4lvr7zjhbphibsyx51psv50gm07mbb0kj9058j6kc";
};
}
{
name = "you-should-use";
src = pkgs.fetchFromGitHub {
owner = "MichaelAquilina";
repo = "zsh-you-should-use";
rev = "2be37f376c13187c445ae9534550a8a5810d4361";
sha256 = "0yhwn6av4q6hz9s34h4m3vdk64ly6s28xfd8ijgdbzic8qawj5p1";
};
}
];
shellAliases = {
"b" = ''nix-build "<nixpkgs>" --no-out-link -A'';
"p" = "nix-shell --run zsh -p";
2021-02-01 20:54:45 +04:00
"s" = "nix shell";
"ss" = "nix shell self#";
"d" = "nix develop";
"ds" = "nix develop self#";
"e" = "nix edit self#";
2020-02-17 17:00:59 +04:00
"o" = "xdg-open";
"post" = ''curl -F"file=@-" https://0x0.st'';
2020-07-16 17:46:49 +04:00
"cat" = "${pkgs.bat}/bin/bat";
2020-02-17 17:00:59 +04:00
};
initExtra = ''
cmdignore=(htop tmux top vim)
# end and compare timer, notify-send if needed
function notifyosd-precmd() {
retval=$?
if [ ! -z "$cmd" ]; then
cmd_end=`date +%s`
((cmd_time=$cmd_end - $cmd_start))
fi
if [ $retval -eq 0 ]; then
cmdstat=""
else
cmdstat=""
fi
2021-02-01 20:54:45 +04:00
if [ ! -z "$cmd" ]; then
2020-02-17 17:00:59 +04:00
${pkgs.libnotify}/bin/notify-send -i utilities-terminal -u low "$cmdstat $cmd" "in `date -u -d @$cmd_time +'%T'`"
fi
unset cmd
}
# make sure this plays nicely with any existing precmd
precmd_functions+=( notifyosd-precmd )
# get command name and start the timer
function notifyosd-preexec() {
cmd=$1
cmd_start=`date +%s`
}
2020-06-17 12:08:14 +04:00
bindkey -M emacs '^H' backward-kill-word
bindkey -r '^W'
2020-02-17 17:00:59 +04:00
# make sure this plays nicely with any existing preexec
preexec_functions+=( notifyosd-preexec )
XDG_DATA_DIRS=$XDG_DATA_DIRS:$GSETTINGS_SCHEMAS_PATH
PS1="$PS1
$ "
'';
};
}