265 lines
7.3 KiB
Nix
265 lines
7.3 KiB
Nix
{ config, lib, pkgs, catppuccin-themes, gitui, ... }:
|
||
|
||
{
|
||
programs = {
|
||
bash.enable = true;
|
||
readline = {
|
||
enable = true;
|
||
includeSystemConfig = true;
|
||
extraConfig = ''
|
||
set completion-ignore-case On
|
||
'';
|
||
};
|
||
direnv = {
|
||
enable = true;
|
||
nix-direnv.enable = true;
|
||
enableBashIntegration = true;
|
||
enableZshIntegration = true;
|
||
};
|
||
fzf = {
|
||
enable = true;
|
||
enableBashIntegration = true;
|
||
enableZshIntegration = true;
|
||
};
|
||
git = {
|
||
enable = true;
|
||
package = pkgs.gitFull;
|
||
userName = "Evie Litherland-Smith";
|
||
userEmail = lib.mkDefault "evie@xenia.me.uk";
|
||
delta = {
|
||
enable = true;
|
||
options = {
|
||
blame-code-style = "syntax";
|
||
line-numbers = true;
|
||
navigate = true;
|
||
side-by-side = true;
|
||
syntax-theme = "Catppuccin";
|
||
zero-style = "dim syntax";
|
||
};
|
||
};
|
||
extraConfig = {
|
||
pull.rebase = false;
|
||
init.defaultBranch = "main";
|
||
credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret";
|
||
};
|
||
};
|
||
gitui = {
|
||
enable = true;
|
||
keyConfig = builtins.readFile "${gitui}/vim_style_key_config.ron";
|
||
theme = builtins.readFile catppuccin-themes.gitui;
|
||
};
|
||
bat = {
|
||
enable = true;
|
||
config.theme = "Catppuccin";
|
||
themes.Catppuccin = builtins.readFile catppuccin-themes.bat;
|
||
};
|
||
ssh = {
|
||
enable = true;
|
||
forwardAgent = true;
|
||
serverAliveInterval = 15;
|
||
serverAliveCountMax = 3;
|
||
controlMaster = "auto";
|
||
controlPersist = "10s";
|
||
extraConfig = ''
|
||
AddKeysToAgent=yes
|
||
SetEnv TERM=xterm-256color
|
||
'';
|
||
matchBlocks = {
|
||
"vanguard" = {
|
||
user = "xenia";
|
||
hostname = "192.168.1.166";
|
||
};
|
||
"legion" = {
|
||
user = "xenia";
|
||
hostname = "192.168.1.230";
|
||
};
|
||
"ionos" = {
|
||
user = "root";
|
||
hostname = "77.68.67.133";
|
||
};
|
||
"freia".hostname = "freia020.hpc.l";
|
||
"freia???" =
|
||
lib.hm.dag.entryAfter [ "freia" ] { hostname = "%h.hpc.l"; };
|
||
"heimdall".hostname = "heimdall003.jet.uk";
|
||
"heimdall???" =
|
||
lib.hm.dag.entryAfter [ "heimdall" ] { hostname = "%h.jet.uk"; };
|
||
"freia* heimdall*" = lib.hm.dag.entryAfter [
|
||
"freia"
|
||
"freia???"
|
||
"heimdall"
|
||
"heimdall???"
|
||
] {
|
||
user = "elitherl";
|
||
compression = true;
|
||
};
|
||
"git*".user = "git";
|
||
};
|
||
};
|
||
starship = {
|
||
enable = true;
|
||
enableBashIntegration = true;
|
||
enableZshIntegration = true;
|
||
settings = {
|
||
inherit (builtins.fromTOML
|
||
(builtins.readFile catppuccin-themes.starship))
|
||
palettes;
|
||
command_timeout = 1000;
|
||
add_newline = true;
|
||
palette = "catppuccin_macchiato";
|
||
character = {
|
||
success_symbol = "[[](green) ❯](maroon)";
|
||
error_symbol = "[❯](red)";
|
||
};
|
||
directory = {
|
||
truncation_length = 2;
|
||
fish_style_pwd_dir_length = 1;
|
||
read_only = " ";
|
||
style = "bold lavender";
|
||
truncate_to_repo = false;
|
||
before_repo_root_style = "bold lavender";
|
||
repo_root_style = "bold teal";
|
||
};
|
||
line_break.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;
|
||
hostname = {
|
||
ssh_only = true;
|
||
ssh_symbol = " ";
|
||
style = "bold green";
|
||
};
|
||
localip.disabled = false;
|
||
memory_usage = {
|
||
disabled = false;
|
||
symbol = " ";
|
||
};
|
||
nix_shell.symbol = " ";
|
||
os = {
|
||
disabled = false;
|
||
format = "on [$symbol $name ]($style)";
|
||
style = "bold blue";
|
||
symbols = {
|
||
Alpine = " ";
|
||
Android = " ";
|
||
Arch = " ";
|
||
CentOS = " ";
|
||
Debian = " ";
|
||
EndeavourOS = " ";
|
||
Fedora = " ";
|
||
FreeBSD = " ";
|
||
Gentoo = " ";
|
||
Illumos = " ";
|
||
Linux = " ";
|
||
Macos = " ";
|
||
Manjaro = " ";
|
||
Mint = " ";
|
||
NixOS = " ";
|
||
OpenBSD = " ";
|
||
openSUSE = " ";
|
||
Pop = " ";
|
||
Raspbian = " ";
|
||
Redhat = " ";
|
||
RedHatEnterprise = " ";
|
||
Solus = " ";
|
||
SUSE = " ";
|
||
Ubuntu = " ";
|
||
Unknown = " ";
|
||
Windows = " ";
|
||
};
|
||
};
|
||
python = {
|
||
symbol = " ";
|
||
python_binary = "python3";
|
||
};
|
||
shell = {
|
||
disabled = false;
|
||
format = "using [$indicator ]($style)";
|
||
};
|
||
sudo = {
|
||
disabled = false;
|
||
symbol = " ";
|
||
};
|
||
};
|
||
};
|
||
tmux = {
|
||
enable = true;
|
||
baseIndex = 1;
|
||
clock24 = true;
|
||
keyMode = "emacs";
|
||
mouse = true;
|
||
secureSocket = true;
|
||
sensibleOnTop = true;
|
||
shortcut = "Space";
|
||
terminal = "xterm-256color";
|
||
plugins = with pkgs.tmuxPlugins; [ yank tmux-fzf catppuccin ];
|
||
extraConfig = ''
|
||
# https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/
|
||
set -ga terminal-overrides ",*256col*,alacritty:Tc"
|
||
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
|
||
set-environment -g COLORTERM "truecolor"
|
||
|
||
# easy-to-remember split pane commands
|
||
bind | split-window -h -c "#{pane_current_path}"
|
||
bind - split-window -v -c "#{pane_current_path}"
|
||
bind c new-window -c "#{pane_current_path}"
|
||
'';
|
||
};
|
||
zsh = {
|
||
enable = true;
|
||
enableAutosuggestions = true;
|
||
enableCompletion = true;
|
||
syntaxHighlighting.enable = true;
|
||
enableVteIntegration = true;
|
||
autocd = true;
|
||
dotDir = ".config/zsh";
|
||
historySubstringSearch.enable = true;
|
||
history.path = "${config.xdg.dataHome}/zsh/history";
|
||
initExtraFirst = ''
|
||
source ${catppuccin-themes.zsh}
|
||
'';
|
||
initExtra = ''
|
||
xdg-query-program () {
|
||
FILETYPE=$(xdg-mime query filetype $@)
|
||
DEFAULT=$(xdg-mime query default $FILETYPE)
|
||
echo "$FILETYPE -> $DEFAULT"
|
||
}
|
||
rsync-local-config () {
|
||
HOST=$1
|
||
for TARGET in emacs doom starship.toml; do
|
||
SOURCE="${config.xdg.configHome}/$TARGET"
|
||
if [[ -e ${config.xdg.configHome}/$TARGET ]]; then
|
||
[[ -d $SOURCE ]] && SOURCE="$SOURCE/"
|
||
${pkgs.rsync}/bin/rsync -avzL $SOURCE $HOST:.config/$TARGET
|
||
fi
|
||
done
|
||
}
|
||
'';
|
||
oh-my-zsh = {
|
||
enable = true;
|
||
plugins = [
|
||
# Productivity
|
||
"aliases"
|
||
"colored-man-pages"
|
||
"command-not-found"
|
||
"extract"
|
||
# Build tools
|
||
"git"
|
||
"gitignore"
|
||
# Misc
|
||
"lol"
|
||
"rand-quote"
|
||
];
|
||
theme = "";
|
||
};
|
||
};
|
||
};
|
||
}
|