{ lib, pkgs, ... }: { 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 = "catppuccinMocha"; }; eza = { enable = true; enableAliases = 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; enableAutosuggestions = true; enableVteIntegration = true; autocd = 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; }; shellAliases = { nixos-upgrade = "systemctl start nixos-upgrade.service"; nixos-status = "systemctl status nixos-upgrade.service"; home-manager-switch = "nix run flake:my-home-manager -- switch --flake flake:my-home-manager"; }; 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} ''; }; }; }