99 lines
2.9 KiB
Nix
99 lines
2.9 KiB
Nix
|
{ 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" ];
|
||
|
};
|
||
|
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";
|
||
|
"o" = "xdg-open";
|
||
|
"post" = ''curl -F"file=@-" https://0x0.st'';
|
||
|
"clip" = "${pkgs.xclip}/bin/xclip -selection clipboard";
|
||
|
};
|
||
|
initExtra = ''
|
||
|
r(){nix run nixpkgs.$1 -c $@ }
|
||
|
cmdignore=(htop tmux top vim)
|
||
|
function active_window_id () {
|
||
|
if [[ -n $DISPLAY ]] ; then
|
||
|
${pkgs.xorg.xprop}/bin/xprop -root _NET_ACTIVE_WINDOW | awk '{print $5}'
|
||
|
return
|
||
|
fi
|
||
|
echo nowindowid
|
||
|
}
|
||
|
|
||
|
# 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
|
||
|
if [ ! -z "$cmd" -a ! $term_window = $(active_window_id) ]; then
|
||
|
${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
|
||
|
term_window=$(active_window_id)
|
||
|
cmd_start=`date +%s`
|
||
|
}
|
||
|
|
||
|
# make sure this plays nicely with any existing preexec
|
||
|
preexec_functions+=( notifyosd-preexec )
|
||
|
XDG_DATA_DIRS=$XDG_DATA_DIRS:$GSETTINGS_SCHEMAS_PATH
|
||
|
|
||
|
PS1="$PS1
|
||
|
$ "
|
||
|
'';
|
||
|
};
|
||
|
}
|