{ lib, pkgs, catppuccinVariant ? "Mocha", ... }: { imports = [ ./git.nix ./ssh.nix ./starship.nix ./bottom.nix ./zellij.nix ]; xdg.configFile = let variants = ["Latte" "Frappe" "Macchiato" "Mocha"]; mkVariant = variant: let fname = "catppuccin${variant}.tmTheme"; in { name = "bat/themes/${fname}"; value = {source = ./. + "/${fname}";}; }; in builtins.listToAttrs (lib.lists.forEach variants mkVariant); programs = { bash.enable = true; bat = { enable = true; config = { theme = "catppuccin${catppuccinVariant}"; style = "plain,numbers,changes"; }; }; eza = { enable = true; git = true; icons = true; extraOptions = ["--octal-permissions"]; }; direnv = { enable = true; nix-direnv.enable = true; }; fzf = { enable = true; defaultCommand = "${pkgs.fd}/bin/fd --type f"; changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d"; fileWidgetCommand = "${pkgs.fd}/bin/fd --type f"; }; zsh = { enable = true; enableCompletion = true; autocd = true; autosuggestion.enable = true; defaultKeymap = "emacs"; syntaxHighlighting = { enable = true; highlighters = ["brackets" "cursor"]; }; historySubstringSearch.enable = true; history = { extended = true; share = true; ignoreDups = true; ignoreAllDups = true; ignoreSpace = true; expireDuplicatesFirst = true; }; localVariables = { "EDITOR" = "emacs -nw"; "VISUAL" = "emacs"; }; initExtra = '' ## completion config and styling zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' menu 'select=long-list' ## transient prompt source ${./transient.zsh} ''; }; }; }