2025-01-31 11:15:47 -08:00
|
|
|
{ sys, pkgs, ... }: {
|
2025-01-30 14:51:01 -08:00
|
|
|
users.users."${sys.username}".shell = pkgs.${sys.shellPackage};
|
|
|
|
home-manager.users."${sys.username}" = {
|
|
|
|
home.packages = with pkgs; [
|
|
|
|
bat
|
|
|
|
fd
|
|
|
|
fastfetch
|
|
|
|
fzf
|
|
|
|
jq
|
|
|
|
tree
|
|
|
|
nethogs
|
|
|
|
pinentry-all
|
|
|
|
] ++ [
|
|
|
|
( writeShellApplication {
|
|
|
|
name = "nixos";
|
|
|
|
runtimeInputs = [
|
|
|
|
libnotify
|
|
|
|
jq
|
|
|
|
git
|
|
|
|
];
|
|
|
|
text = ''
|
|
|
|
#!/bin/bash
|
|
|
|
# shellcheck disable=SC2088
|
|
|
|
FLAKE_URI="git+https://gitea.jafner.tools/Jafner/Jafner.net?dir=dotfiles#fighter"
|
|
|
|
|
|
|
|
rebuild() {
|
|
|
|
notify-send "Nixos: Beginning rebuild"
|
|
|
|
sudo nixos-rebuild switch \
|
2025-02-06 13:26:44 -08:00
|
|
|
--refresh \
|
2025-01-30 14:51:01 -08:00
|
|
|
--flake "$FLAKE_URI" \
|
|
|
|
--impure \
|
|
|
|
--show-trace &&\
|
|
|
|
notify-send "Nixos: Rebuilt successfully"
|
|
|
|
}
|
|
|
|
|
|
|
|
garbageCollect() {
|
|
|
|
notify-send "Nixos: Collecting garbage" "Deleting generations older than 7 days."
|
|
|
|
nix-env --delete-generations 7d &&\
|
|
|
|
nix-store --gc --print-dead
|
|
|
|
notify-send "Nixos: Garbage collection complete"
|
|
|
|
}
|
|
|
|
|
|
|
|
listGenerations() {
|
|
|
|
nixos-rebuild list-generations | less
|
|
|
|
}
|
|
|
|
|
|
|
|
where() {
|
|
|
|
tree "$(realpath "$(which "$1")" | cut -d'/' -f-4)"
|
|
|
|
}
|
|
|
|
|
|
|
|
finish() {
|
|
|
|
mkdir -p "$HOME/.nixos"
|
|
|
|
nixos-rebuild list-generations --json > "$HOME/.nixos/nixos-generations.json"
|
|
|
|
}
|
|
|
|
|
|
|
|
error() {
|
|
|
|
notify-send "Nixos Script Error" "$@"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
rebuild) rebuild && finish;;
|
|
|
|
clean) garbageCollect && finish;;
|
|
|
|
ls) listGenerations;;
|
|
|
|
where) where "$2";;
|
|
|
|
*) error "Unrecognized subcommand $1";;
|
|
|
|
esac
|
|
|
|
'';
|
|
|
|
} )
|
|
|
|
];
|
|
|
|
|
|
|
|
programs.btop = {
|
|
|
|
enable = true;
|
|
|
|
package = pkgs.btop-rocm;
|
|
|
|
settings = {
|
|
|
|
color_theme = "stylix";
|
|
|
|
theme_background = true;
|
|
|
|
update_ms = 500;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
programs.tmux = {
|
|
|
|
enable = true;
|
|
|
|
newSession = true;
|
|
|
|
baseIndex = 1;
|
|
|
|
disableConfirmationPrompt = true;
|
|
|
|
mouse = true;
|
|
|
|
prefix = "C-b";
|
|
|
|
resizeAmount = 2;
|
|
|
|
plugins = with pkgs; [
|
|
|
|
{ plugin = tmuxPlugins.resurrect; }
|
|
|
|
{ plugin = tmuxPlugins.tmux-fzf; }
|
|
|
|
];
|
|
|
|
shell = "${pkgs.${sys.shellPackage}.shellPath}";
|
|
|
|
# TODO: Declare tmux session presets
|
|
|
|
# - 'sysmon' session
|
|
|
|
# - 'sysmon' window
|
|
|
|
# - '1' pane: btop
|
|
|
|
# - '2' pane: ssh -o RequestTTY=true admin@192.168.1.23 btop
|
|
|
|
# - '3' pane: ssh -o RequestTTY=true admin@143.110.151.123 btop --utf-force
|
|
|
|
# - 'disks' window
|
|
|
|
# - '1' pane: watch 'df -h -xcifs'
|
|
|
|
# - '2' pane: ssh -o RequestTTY=true admin@192.168.1.23 watch 'df -h -xcifs -xiscsi'
|
|
|
|
# - '3' pane: ssh -o RequestTTY=true admin@143.110.151.123 watch 'df -h'
|
|
|
|
# - '4' pane: ssh -o RequestTTY=true admin@192.168.1.10 watch 'df -h'
|
|
|
|
# - '5' pane: ssh -o RequestTTY=true admin@192.168.1.12 watch 'df -h'
|
|
|
|
# - 'gpus' window
|
|
|
|
# - '1' pane: amdgpu_top
|
|
|
|
# - '2' pane: ssh -o RequestTTY=true admin@192.168.1.23 nvtop
|
|
|
|
# - 'ssh' session
|
|
|
|
# - 'fighter' window: ssh admin@192.168.1.23
|
|
|
|
# - 'wizard' window: ssh vyos@192.168.1.1
|
|
|
|
# - 'druid' window: ssh admin@143.110.151.123
|
|
|
|
# - 'paladin' window: ssh admin@192.168.1.12
|
|
|
|
# - 'barbarian' window: ssh admin@192.168.1.10
|
|
|
|
# - 'local' session
|
|
|
|
# - 'jafner.net' window
|
|
|
|
};
|
|
|
|
|
|
|
|
programs.vim = {
|
|
|
|
enable = true;
|
|
|
|
defaultEditor = true;
|
|
|
|
settings = {
|
|
|
|
copyindent = true;
|
|
|
|
relativenumber = true;
|
|
|
|
expandtab = true;
|
|
|
|
tabstop = 2;
|
|
|
|
};
|
|
|
|
extraConfig = ''
|
|
|
|
set nocompatible
|
|
|
|
filetype on
|
|
|
|
filetype plugin on
|
|
|
|
filetype indent on
|
|
|
|
syntax on
|
|
|
|
set cursorline
|
|
|
|
set wildmenu
|
|
|
|
set wildmode=list:longest
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|