252 lines
6.8 KiB
Nix
252 lines
6.8 KiB
Nix
{ config, lib, pkgs, tokyonight-folke, gitui, ... }:
|
|
|
|
{
|
|
services.git-sync.enable = true;
|
|
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;
|
|
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
|
|
"${tokyonight-folke}/extras/gitui/tokyonight_night.ron";
|
|
};
|
|
bat.enable = true;
|
|
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 = {
|
|
command_timeout = 1000;
|
|
add_newline = true;
|
|
character = {
|
|
success_symbol = "[➜](bold green)";
|
|
error_symbol = "[✗](bold red)";
|
|
};
|
|
directory = {
|
|
truncation_length = 2;
|
|
fish_style_pwd_dir_length = 1;
|
|
read_only = " ";
|
|
truncate_to_repo = false;
|
|
};
|
|
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 = " ";
|
|
};
|
|
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";
|
|
};
|
|
rust = { symbol = " "; };
|
|
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 ];
|
|
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";
|
|
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 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 = "";
|
|
};
|
|
};
|
|
};
|
|
}
|