nix/modules/home/zsh/default.nix
2025-08-19 14:51:43 +08:00

92 lines
1.8 KiB
Nix

{
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;
};
};
};
}