{ 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.users = let zshConfig = { programs.zsh = { enable = true; defaultKeymap = "viins"; }; }; in { mainUser = zshConfig; root = zshConfig; }; 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/"; }; }; }; }