{ lib, config, pkgs, ... }: let inherit (lib) mkEnableOption mkIf; cfg = config.horseman.apps.terminal.zsh; in { options = { horseman.apps.terminal.zsh = { enable = mkEnableOption "The ZSH shell and plugins for it"; }; }; config = mkIf cfg.enable { users.defaultUserShell = pkgs.zsh; environment.shells = with pkgs; [zsh]; horseman.dots = { warprc.enable = true; }; programs.zsh = { enable = true; enableCompletion = true; histSize = 10000; shellAliases = { rebuild = "function _rebuild(){sudo nixos-rebuild switch --flake \"$@\" && nix fmt *}; _rebuild"; update = "sudo nix flake update && git commit flake.lock -m 'Update flake.lock: $(date +%y-%m-%d)' && rebuild"; compose = "sudo docker compose"; wolpc = "wakeonlan D8:5E:D3:A8:B1:0A"; capture-config = "nix run github:pjones/plasma-manager > ~/nix-config/modules/wm/plasma/default.nix"; reboot-to-windows = "sudo efibootmgr -n 0000"; mkdir = "mkdir -p"; zip = "zip -r"; cat = "bat"; py = "python3"; l = "eza -lA --icons always --group-directories-first --git"; cdtmp = "cd $(mktemp -d)"; }; ohMyZsh = { enable = true; plugins = [ "zsh-interactive-cd" "git-auto-fetch" "wd" ]; theme = "theme"; custom = "/home/horseman/nix-config/config/zsh"; }; shellInit = "eval \"$(direnv hook zsh)\""; }; }; }