Joey Hafner 4e9d6dec6a
Refactor flake:
- Delete homeManagerConfigurations from flake.
- Delete laptop nixosConfiguration.
- Delete `home-manager/` and `nixos/` directories.
- Switch from one general "vars" attrset for variables to using built-for-purpose attrsets for variables, each declared where it makes most sense (e.g. the "sys" attrset will be used for system-specific attributes).
- Create `systems/` directory for root-level system configurations and `modules/` directory for re-usable config files.
- Consolidate most app and system configuration into the `desktop-environment.nix` and `terminal-environment.nix` files.
- Standardize all `.nix` files to nixos config nodes, as opposed to home-manager. May reverse this decision.
- Use `${sys.username}` for the username of the primary user of the system.
- Use `${usr.${sys.username}}` for attributes related to that user (e.g. realname, email).
2025-01-08 12:04:28 -08:00

223 lines
5.7 KiB
Nix

{ pkgs, pkgs-unstable, vars, ... }: {
home.packages = with pkgs; [
fastfetch
tree
bat
fd
eza
fzf-git-sh
wl-clipboard
jq
amdgpu_top
mission-center
nethogs
( writeShellApplication {
name = "kitty-popup";
runtimeInputs = [];
text = ''
#!/bin/bash
kitty \
--override initial_window_width=1280 \
--override initial_window_height=720 \
--override remember_window_size=no \
--class kitty-popup \
"$@"
'';
} )
pkgs-unstable.ghostty
];
programs.kitty = {
enable = true;
package = pkgs.kitty;
};
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 = "$HOME/.nix-profile/bin/zsh";
};
# 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.zsh = {
enable = true;
dotDir = ".config/zsh";
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
bat = "bat --paging=never --color=always";
fd = "fd -Lu";
ls = "eza";
lt = "eza --tree";
fetch = "fastfetch";
neofetch = "fetch";
find = ''fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"'';
nixgc = "nix-env --delete-generations 7d && nix-store --gc --print-dead";
fzf-ssh = "ssh $(cat ~/.ssh/profiles | fzf --height 20%)";
fsh = "fzf-ssh";
k = "kubectl";
};
history = {
share = true;
save = 10000;
size = 10000;
expireDuplicatesFirst = false;
extended = false;
ignoreAllDups = false;
ignoreDups = true;
};
initExtra = ''
bindkey '^[[1;5A' history-search-backward # Ctrl+Up-arrow
bindkey '^[[1;5B' history-search-forward # Ctrl+Down-arrow
bindkey '^[[1;5D' backward-word # Ctrl+Left-arrow
bindkey '^[[1;5C' forward-word # Ctrl+Right-arrow
bindkey '^[[H' beginning-of-line # Home
bindkey '^[[F' end-of-line # End
bindkey '^[w' kill-region # Delete
bindkey '^I^I' autosuggest-accept # Tab, Tab
bindkey '^[' autosuggest-clear # Esc
bindkey -s '^E' 'fzf-ssh\n'
_fzf_compgen_path() {
fd --hidden --exclude .git . "$1"
}
_fzf_compgen_dir() {
fd --hidden --exclude .git . "$1"
}
eval "$(~/.nix-profile/bin/fzf --zsh)"
fastfetch
'';
};
programs.eza = {
enable = true;
enableZshIntegration = true;
git = true;
extraOptions = [
"--color=always"
"--long"
"--icons=always"
"--no-time"
"--no-user"
];
};
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
'';
};
programs.fzf = {
enable = true;
package = pkgs-unstable.fzf;
};
programs.btop = {
enable = true;
package = pkgs.btop-rocm;
settings = {
color_theme = "stylix";
theme_background = true;
update_ms = 500;
};
};
xdg.desktopEntries = {
btop = {
exec = "kitty-popup btop";
icon = "utilities-system-monitor";
name = "btop";
categories = [ "Utility" "System" ];
type = "Application";
};
nethogs = {
exec = "kitty-popup sudo nethogs";
icon = "utilities-system-monitor";
name = "nethogs";
categories = [ "Utility" "System" ];
type = "Application";
};
sysmon = {
exec = "kitty-popup tmux a -t sysmon";
icon = "utilities-system-monitor";
name = "tmux-sysmon";
categories = [ "Utility" "System" ];
type = "Application";
};
ssh = {
exec = "kitty-popup tmux a -t ssh";
icon = "utilities-terminal";
name = "SSH";
categories = [ "Utility" "System" ];
type = "Application";
};
nixos = {
icon = "nix-snowflake";
name = "NixOS";
categories = [ "System" ];
type = "Application";
exec = ''xdg-open "https://mynixos.com"'';
actions = {
"Rebuild" = { exec = ''kitty-popup nixos rebuild''; };
"Update" = { exec = ''kitty-popup nixos update''; };
"Cleanup" = { exec = ''kitty-popup nixos clean''; };
"Edit" = { exec = ''nixos edit''; };
};
};
};
}