271 lines
7.7 KiB
Nix
271 lines
7.7 KiB
Nix
{ config, lib, pkgs, ... }:
|
||
|
||
{
|
||
home.packages = with pkgs; [ fd ripgrep dig nitch neofetch ];
|
||
stylix.targets = {
|
||
avizo.enable = true;
|
||
fzf.enable = true;
|
||
mako.enable = true;
|
||
rofi.enable = true;
|
||
tmux.enable = true;
|
||
xresources.enable = true;
|
||
};
|
||
xdg.configFile = {
|
||
"style.css".text = with config.lib.stylix.colors.withHashtag; ''
|
||
@define-color base00 ${base00};
|
||
@define-color base01 ${base01};
|
||
@define-color base02 ${base02};
|
||
@define-color base03 ${base03};
|
||
@define-color base04 ${base04};
|
||
@define-color base05 ${base05};
|
||
@define-color base06 ${base06};
|
||
@define-color base07 ${base07};
|
||
@define-color base08 ${base08};
|
||
@define-color base09 ${base09};
|
||
@define-color base0A ${base0A};
|
||
@define-color base0B ${base0B};
|
||
@define-color base0C ${base0C};
|
||
@define-color base0D ${base0D};
|
||
@define-color base0E ${base0E};
|
||
@define-color base0F ${base0F};
|
||
'';
|
||
"bat/themes/tokyonight_night.tmTheme".source = ./tokyonight_night.tmTheme;
|
||
};
|
||
programs = {
|
||
bash.enable = true;
|
||
nushell.enable = true;
|
||
fish.enable = true;
|
||
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 bat git emacs/init.el emacs/templates starship.toml; do
|
||
SOURCE="${config.xdg.configHome}/$TARGET"
|
||
TMP_TARGET=/tmp/rsync-local-config
|
||
TMP_SOURCE=$TMP_TARGET
|
||
NIX_SED="${pkgs.gnused}/bin/sed -i 's|/nix/.*/bin/||g'"
|
||
NIX_REPLACE="$NIX_SED $TMP_TARGET"
|
||
if [[ -e ${config.xdg.configHome}/$TARGET ]]; then
|
||
if [[ -d $SOURCE ]]; then
|
||
SOURCE=$SOURCE/
|
||
TMP_SOURCE=$TMP_SOURCE/
|
||
NIX_REPLACE="${pkgs.fd}/bin/fd -g '**' $TMP_TARGET -tfile -x $NIX_SED {};"
|
||
fi
|
||
${pkgs.rsync}/bin/rsync -avzL --exclude=".git*" $SOURCE $TMP_TARGET
|
||
${pkgs.coreutils}/bin/chmod u+rw -R $TMP_SOURCE
|
||
${pkgs.bash}/bin/sh -c "$NIX_REPLACE"
|
||
${pkgs.rsync}/bin/rsync -avzL --delete --exclude=".git*" $TMP_SOURCE $HOST:.config/$TARGET
|
||
${pkgs.coreutils}/bin/rm -rf $TMP_SOURCE
|
||
fi
|
||
done
|
||
}
|
||
'';
|
||
eza = {
|
||
enable = true;
|
||
git = true;
|
||
icons = true;
|
||
enableAliases = true;
|
||
extraOptions = [ "--octal-permissions" ];
|
||
};
|
||
readline = {
|
||
enable = true;
|
||
includeSystemConfig = true;
|
||
extraConfig = ''
|
||
set completion-ignore-case On
|
||
'';
|
||
};
|
||
direnv = {
|
||
enable = true;
|
||
nix-direnv.enable = true;
|
||
enableBashIntegration = true;
|
||
enableNushellIntegration = true;
|
||
};
|
||
fzf = {
|
||
enable = true;
|
||
enableBashIntegration = true;
|
||
enableFishIntegration = true;
|
||
};
|
||
bat.enable = true;
|
||
git = {
|
||
enable = true;
|
||
package = pkgs.gitFull;
|
||
userName = "Evie Litherland-Smith";
|
||
userEmail = lib.mkDefault "evie@xenia.me.uk";
|
||
delta = {
|
||
enable = true;
|
||
options = {
|
||
line-numbers = true;
|
||
hyprlinks = true;
|
||
navigate = true;
|
||
side-by-side = true;
|
||
syntax-theme = "tokyonight_night";
|
||
};
|
||
};
|
||
extraConfig = {
|
||
github.user = "elitherl";
|
||
pull.rebase = false;
|
||
init.defaultBranch = "main";
|
||
merge.conflictstyle = "diff3";
|
||
diff.colorMoved = "default";
|
||
credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret";
|
||
};
|
||
};
|
||
ssh = {
|
||
enable = true;
|
||
forwardAgent = true;
|
||
serverAliveInterval = 15;
|
||
serverAliveCountMax = 3;
|
||
controlMaster = "auto";
|
||
controlPersist = "10s";
|
||
extraConfig = ''
|
||
AddKeysToAgent=yes
|
||
SetEnv TERM=xterm-256color
|
||
'';
|
||
matchBlocks = {
|
||
"git*".user = "git";
|
||
"legion" = {
|
||
user = "xenia";
|
||
hostname = "192.168.1.230";
|
||
};
|
||
"ionos" = {
|
||
user = "root";
|
||
hostname = "77.68.67.133";
|
||
};
|
||
"freia" = {
|
||
user = "elitherl";
|
||
hostname = "freia020.hpc.l";
|
||
compression = true;
|
||
localForwards = [{
|
||
bind.port = 6702;
|
||
host = {
|
||
address = "127.0.0.1";
|
||
port = 6702;
|
||
};
|
||
}];
|
||
};
|
||
"heimdall" = {
|
||
user = "elitherl";
|
||
hostname = "heimdall003.jet.uk";
|
||
compression = true;
|
||
};
|
||
};
|
||
};
|
||
starship = {
|
||
enable = true;
|
||
enableBashIntegration = true;
|
||
enableFishIntegration = true;
|
||
enableNushellIntegration = true;
|
||
enableTransience = 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}"
|
||
'';
|
||
};
|
||
};
|
||
}
|