115 lines
3.7 KiB
Nix
115 lines
3.7 KiB
Nix
{
|
|
description = "A very basic flake";
|
|
|
|
outputs = { self, nixpkgs }: {
|
|
|
|
nixosModule = { config, lib, pkgs, ... }:
|
|
with lib;
|
|
let cfg = config.programs.myZsh;
|
|
in
|
|
{
|
|
|
|
options = {
|
|
programs.myZsh = {
|
|
enable = mkEnableOption "Enable zsh";
|
|
};
|
|
};
|
|
config = mkIf cfg.enable {
|
|
programs.zsh = {
|
|
enable = true;
|
|
shellAliases = {
|
|
mkae = "make";
|
|
tw = "${pkgs.timewarrior}/bin/timew";
|
|
# ti = "${pkgs.timer}/bin/timer start $*";
|
|
# to = "${pkgs.timer}/bin/timer stop";
|
|
mutt = "${pkgs.neomutt}/bin/neomutt";
|
|
ls = "ls -N --color=auto";
|
|
# Play a sound of "rolling waves"
|
|
# Taken from https://askubuntu.com/a/789472
|
|
# The 0.2 is the time for a wive
|
|
# The 30 is the minimum amplitude
|
|
# The amod means amplitude modulation
|
|
noise = "${pkgs.sox}/bin/play -n synth brownnoise synth pinknoise mix synth sine amod 0.2 30";
|
|
};
|
|
enableAutosuggestions = true;
|
|
sessionVariables = {
|
|
PAGER = "less";
|
|
};
|
|
history = {
|
|
save = 100000;
|
|
size = 102000;
|
|
ignoreDups = false;
|
|
expireDuplicatesFirst = true;
|
|
extended = true;
|
|
share = true;
|
|
path = "$HOME/.zhistory";
|
|
};
|
|
# http://zsh.sourceforge.net/Intro/intro_3.html
|
|
# .zlogin is meant for programs to start on login shells
|
|
# It is not meant for setting up aliases etc.
|
|
# On the other hand, .zlogin is only invoked at *login*.
|
|
initExtra = ''
|
|
bindkey -v
|
|
autoload -U edit-command-line
|
|
zle -N edit-command-line
|
|
|
|
bindkey "^?" backward-delete-char
|
|
bindkey '^[OH' beginning-of-line
|
|
bindkey '^[OF' end-of-line
|
|
bindkey '^[[5~' up-line-or-history
|
|
bindkey '^[[6~' down-line-or-history
|
|
bindkey '^[[B' history-search-forward
|
|
bindkey '^[[A' history-search-backward
|
|
bindkey "^r" history-incremental-search-backward
|
|
bindkey ' ' magic-space # also do history expansion on space
|
|
bindkey '^E' complete-word # complete on tab, leave expansion to _expand
|
|
bindkey ^e edit-command-line
|
|
|
|
setopt prompt_sp # print lines without newlines properly
|
|
|
|
eval "$(direnv hook zsh)"
|
|
|
|
case $TERM in
|
|
termite|*xterm*|rxvt|rxvt-unicode|rxvt-256color|rxvt-unicode-256color|(dt|k|E)term)
|
|
precmd () { print -Pn "\e]0;$(pwd)\a" }
|
|
preexec () { print -Pn "\e]0;$1\a" }
|
|
;;
|
|
screen|screen-256color)
|
|
precmd () {
|
|
print -Pn "\e]83;title \"$1\"\a"
|
|
print -Pn "\e]0;$TERM\a"
|
|
}
|
|
preexec () {
|
|
print -Pn "\e]83;title \"$1\"\a"
|
|
print -Pn "\e]0;$TERM - $1\a"
|
|
}
|
|
;;
|
|
esac
|
|
wttr()
|
|
{
|
|
local request="wttr.in/''${1-Espoo}?M"
|
|
[ "$(tput cols)" -lt 125 ] && request+='&n'
|
|
curl -H "Accept-Language: ''${LANG%_*}" --compressed "$request"
|
|
}
|
|
totp()
|
|
{
|
|
${pkgs.oathToolkit}/bin/oathtool --totp --base32 $(${pkgs.pass}/bin/pass show $1)
|
|
}
|
|
'';
|
|
plugins = [
|
|
{
|
|
name = "wunjo";
|
|
src = ./zsh/wunjo;
|
|
}
|
|
{
|
|
name = "gwp";
|
|
src = ./zsh/gwp;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
};
|
|
}
|