{ config, lib, pkgs, inputs, ... }: let cfg = config.zsh; inherit (lib) mkEnableOption mkIf mkOption; in { options.zsh = { enable = mkEnableOption "Zsh"; }; config = mkIf cfg.enable { home.packages = with pkgs; [ zsh-completions fd htop ripgrep wget delta devenv ]; programs.bat = { enable = true; }; programs.dircolors = { enable = true; enableZshIntegration = true; }; programs.direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; config = { hide_env_diff = true; }; }; programs.zsh = { enable = true; enableCompletion = true; syntaxHighlighting.enable = true; autosuggestion.enable = true; autocd = true; history = { size = 1000000; extended = true; append = true; expireDuplicatesFirst = true; ignoreDups = true; ignoreAllDups = true; ignoreSpace = true; }; historySubstringSearch.enable = true; shellAliases = { cat = "bat --theme=\"$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo 'gruvbox-dark' || echo 'gruvbox-light')\""; diff = "delta"; }; }; programs.fzf.enable = true; programs.fzf.enableZshIntegration = true; programs.zoxide.enable = true; programs.zoxide.enableZshIntegration = true; programs.eza = { enable = true; enableZshIntegration = true; extraOptions = [ "--group-directories-first" ]; }; programs.starship = { enable = true; enableZshIntegration = true; settings = { nodejs.disabled = true; package.disabled = true; aws.disabled = true; python.disabled = true; }; }; }; }