{
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 = {
enableAliases = true;
git = true;
icons = true;
extraOptions = ["--octal-permissions"];
direnv = {
nix-direnv.enable = true;
fzf = {
defaultCommand = "${pkgs.fd}/bin/fd --type f";
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
zsh = {
enableCompletion = true;
enableAutosuggestions = true;
enableVteIntegration = true;
autocd = true;
defaultKeymap = "emacs";
syntaxHighlighting = {
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";
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}
'';
}