This repository has been archived on 2024-07-03. You can view files and clone it, but cannot push or open issues or pull requests.
home-manager/programs/shell/default.nix

195 lines
4.9 KiB
Nix

{
lib,
pkgs,
...
}: {
imports = [
./git.nix
./bottom.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";
};
carapace.enable = true;
eza = {
enable = true;
enableAliases = true;
git = true;
icons = true;
extraOptions = ["--octal-permissions"];
};
readline = {
enable = true;
includeSystemConfig = true;
extraConfig = ''
set completion-ignore-case On
'';
};
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";
};
ssh = {
enable = true;
forwardAgent = true;
compression = true;
serverAliveInterval = 15;
serverAliveCountMax = 3;
controlMaster = "auto";
controlPersist = "10s";
extraConfig = ''
AddKeysToAgent=yes
SetEnv TERM=xterm-256color
'';
matchBlocks = {
"git*".user = "git";
"legion" = {
user = "pixelifytica";
hostname = "192.168.0.31";
};
"vanguard" = {
user = "pixelifytica";
hostname = "192.168.0.90";
};
"ionos" = {
user = "root";
hostname = "77.68.67.133";
};
"freia" = {
user = "elitherl";
hostname = "freia020.hpc.l";
forwardX11Trusted = true;
};
"heimdall" = {
user = "elitherl";
hostname = "heimdall003.jet.uk";
forwardX11Trusted = true;
};
};
};
starship = {
enable = true;
enableTransience = true;
settings = {
add_newline = false;
character = {
success_symbol = "[󰁔 ](bold green)";
error_symbol = "[󰁔 ](bold red)";
};
command_timeout = 2000;
container = {symbol = " ";};
directory = {
truncation_length = 2;
fish_style_pwd_dir_length = 1;
truncate_to_repo = false;
};
direnv = {disabled = false;};
git_branch = {
symbol = " ";
only_attached = true;
ignore_branches = ["master" "main"];
};
git_commit = {
format = "[ $hash | $tag]($style) ";
tag_symbol = " ";
tag_disabled = false;
};
git_metrics = {disabled = false;};
git_status = {
stashed = " ";
ahead = " ";
behind = " ";
up_to_date = "";
diverged = " ";
conflicted = " ";
deleted = " ";
renamed = " ";
modified = " ";
staged = " ";
untracked = " ";
typechanged = " ";
};
hostname = {
ssh_only = true;
ssh_symbol = "󰢹 ";
};
jobs = {symbol = "󰈏 ";};
line_break = {disabled = false;};
localip = {disabled = false;};
memory_usage = {disabled = false;};
os = {
disabled = false;
format = "on [$symbol]($style) ";
};
python = {python_binary = "python3";};
shell = {
disabled = false;
format = "using [$indicator ]($style)";
};
status = {
disabled = false;
map_symbol = true;
pipestatus = true;
symbol = " ";
success_symbol = "";
not_executable_symbol = " ";
not_found_symbol = " ";
sigint_symbol = " ";
signal_symbol = " ";
};
sudo = {disabled = false;};
};
};
zsh = {
enable = true;
enableCompletion = true;
enableAutosuggestions = true;
syntaxHighlighting.enable = true;
enableVteIntegration = true;
autocd = true;
historySubstringSearch.enable = true;
history = {
extended = true;
ignoreDups = true;
ignoreSpace = true;
};
shellAliases = {
gsa = "git-sync-all";
};
oh-my-zsh = {
enable = true;
plugins = ["colored-man-pages" "lol" "rand-quote"];
theme = "";
};
completionInit = ''
autoload -Uz +X compinit && compinit
## case insensitive path-completion
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' menu select
'';
initExtra = "source ${./transient.zsh}\n";
};
};
}