From 03f03eee9f8417b540f0d1b0d1e8a4626d455ac3 Mon Sep 17 00:00:00 2001 From: schererleander Date: Mon, 3 Nov 2025 00:19:09 +0100 Subject: chore: reorganize modules into subcategories --- modules/programs/zsh.nix | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 modules/programs/zsh.nix (limited to 'modules/programs/zsh.nix') diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix new file mode 100644 index 0000000..6edb1c0 --- /dev/null +++ b/modules/programs/zsh.nix @@ -0,0 +1,74 @@ +{ + config, + username, + lib, + ... +}: +{ + options.nx.programs.zsh.enable = lib.mkEnableOption "Configure zsh"; + config = lib.mkIf config.nx.programs.zsh.enable { + home-manager.users.${username} = { + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + initContent = '' + # view man pages with nvim + export MANPAGER="nvim +Man!" + + # Directory completion with trailing slash + zstyle ':completion:*' list-dirs-first true + zstyle ':completion:*' special-dirs true + zstyle ':completion:*' squeeze-slashes true + zstyle ':completion:*' add-space false + + # Case-insensitive completion + zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' + # vim keybindings + bindkey -v + + # imagemagick wrapper function to remove background + remove_bg() { + if [[ $# -lt 2 ]]; then + echo 'Usage: remove_bg [transparent_color] [output_file]' + return 1 + fi + local input_file=$1 + local fuzz=$2 + local transparent_color=$3 + local output_file=$4 + + magick "$input_file" \ + -fuzz $fuzz -transparent "$transparent_color" \ + -alpha on -channel A -blur 0x2 -level 5%,100% +channel \ + "$output_file" + + echo "Saved transparent image to: $output_file" + } + + eval "$(zoxide init zsh)" + ''; + shellAliases = { + ls = "ls --color=auto"; + nixceck = "nix flake check --all-systems"; + }; + zplug = { + enable = true; + plugins = [ + { name = "mafredri/zsh-async"; } + { + name = "sindresorhus/pure"; + tags = [ + "as:theme" + "use:pure.zsh" + ]; + } + { name = "zdharma-continuum/fast-syntax-highlighting"; } + { name = "zsh-users/zsh-autosuggestions"; } + ]; + }; + }; + }; + }; +} -- cgit v1.3.1