88 lines
2.2 KiB
Nix
88 lines
2.2 KiB
Nix
{ pkgs, config, lib, ... }:
|
|
with lib;
|
|
{
|
|
options.components.terminal.zsh.enable = mkOption {
|
|
type = lib.types.bool;
|
|
default = config.components.terminal.enable;
|
|
};
|
|
|
|
config = mkIf (config.components.terminal.zsh.enable) {
|
|
|
|
home-manager.sharedModules = [
|
|
{
|
|
programs.zsh = {
|
|
enable = true;
|
|
defaultKeymap = "viins";
|
|
};
|
|
|
|
# a better cat
|
|
programs.bat = {
|
|
enable = true;
|
|
config.theme = "gruvbox-light";
|
|
};
|
|
home.shellAliases.cat = "${pkgs.bat}/bin/bat --theme='gruvbox-light'";
|
|
|
|
# a better ls
|
|
# todo what's the new shit?
|
|
#programs.eza = {
|
|
# enable = true;
|
|
# enableAliases = true;
|
|
#};
|
|
home.shellAliases.llt = "${pkgs.eza}/bin/exa -a --tree";
|
|
|
|
# use z instead of cd
|
|
# use zi to fuzzy search through all registered directories
|
|
programs.zoxide = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
};
|
|
|
|
# provide better `Ctrl+r` command in terminal
|
|
programs.mcfly = {
|
|
enable = true;
|
|
keyScheme = "vim";
|
|
fuzzySearchFactor = 3;
|
|
enableZshIntegration = true;
|
|
enableBashIntegration = true;
|
|
};
|
|
}
|
|
];
|
|
|
|
programs.zsh = {
|
|
|
|
enable = true;
|
|
enableCompletion = true;
|
|
syntaxHighlighting.enable = true;
|
|
|
|
shellAliases = {
|
|
ls = "ls --color=tty";
|
|
l = "ls -CFh";
|
|
la = "ls -Ah";
|
|
ll = "ls -lh";
|
|
lt = "ls -lct --reverse";
|
|
less = "less -S";
|
|
top = "htop";
|
|
version = "date '+%Y%m%d%H%M%S'";
|
|
vclip = "xclip -selection clipboard";
|
|
df = "df -h";
|
|
timestamp = "date +%Y%m%d%H%M%S";
|
|
nix-show-garbadge-roots = "ls -lh /nix/var/nix/gcroots/auto/";
|
|
};
|
|
|
|
interactiveShellInit = ''
|
|
kpaste() {
|
|
arg=cat
|
|
if [[ $# -ne 0 ]]; then
|
|
arg+=("''${@}")
|
|
elif [[ -t 0 ]] && [[ -o interactive ]]; then
|
|
arg=(wl-paste)
|
|
fi
|
|
"''${arg[@]}" | curl -sS http://p.r --data-binary @- | \
|
|
sed '$ {p;s|http://p.r|https://p.krebsco.de|}'
|
|
}
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
}
|