{ 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; }; dircolors = { enable = true; enableZshIntegration = true; }; direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; config = { hide_env_diff = true; }; }; nix-your-shell = { enable = true; enableZshIntegration = true; }; 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"; }; }; fzf = { enable = true; enableZshIntegration = true; }; zoxide = { enable = true; enableZshIntegration = true; }; eza = { enable = true; enableZshIntegration = true; extraOptions = [ "--group-directories-first" ]; }; starship = { enable = true; enableZshIntegration = true; settings = { nodejs.disabled = true; package.disabled = true; aws.disabled = true; python.disabled = true; }; }; }; }; }