Files
niphas/modules/tools.nix

175 lines
3.9 KiB
Nix
Raw Normal View History

2026-02-03 22:28:01 +01:00
{ pkgs, lib, ... }:
let
isDarwin = lib.strings.hasSuffix "darwin" pkgs.system;
in
{
environment.systemPackages = [
pkgs.htop
pkgs.btop
pkgs.iftop
pkgs.lsof
pkgs.wget
pkgs.curl
pkgs.zip
pkgs.unzip
pkgs.unrar
pkgs.p7zip
pkgs.fd
pkgs.ripgrep
pkgs.bat
pkgs.findutils
pkgs.coreutils
pkgs.tree
pkgs.rlwrap
pkgs.file
pkgs.progress
pkgs.gdu
pkgs.rmlint
2026-02-03 23:14:35 +01:00
pkgs.binutils # for objdump, strings, etc.
pkgs.gnumake # for make
pkgs.tokei # for code statistics
pkgs.man-pages
pkgs.man-pages-posix
pkgs.dos2unix
pkgs.whois
pkgs.dnsutils
pkgs.aria2
2026-02-03 22:28:01 +01:00
pkgs.jq
pkgs.yq
pkgs.bc
pkgs.vimv
pkgs.pciutils # for lspci
2026-02-03 23:14:35 +01:00
pkgs.tmux
2026-02-03 22:28:01 +01:00
]
++ lib.optionals (!isDarwin) [
pkgs.usbutils # for lsusb
pkgs.lshw
pkgs.iotop
pkgs.psmisc # killall, pstree
];
2026-02-03 22:32:35 +01:00
security.wrappers = {
pmount = {
setuid = true;
owner = "root";
group = "root";
source = "${pkgs.pmount}/bin/pmount";
};
pumount = {
setuid = true;
owner = "root";
group = "root";
source = "${pkgs.pmount}/bin/pumount";
};
};
environment.interactiveShellInit = ''
# Use XDG_RUNTIME_DIR for temporary files if available
if [ -d "$XDG_RUNTIME_DIR" ]; then
export TMPDIR="$XDG_RUNTIME_DIR"
fi
'';
2026-02-03 22:28:01 +01:00
environment.shellAliases =
let
take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1"
'';
cdt = pkgs.writers.writeDash "cdt" ''
cd $(mktemp -p "$XDG_RUNTIME_DIR" -d "cdt-XXXXXX")
pwd
'';
wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
'';
where = pkgs.writers.writeDash "where" ''
readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname
'';
in
{
nixi = "nix repl nixpkgs";
take = "source ${take}";
wcd = "source ${wcd}";
where = "source ${where}";
# temporary files and directories
cdt = "source ${cdt}";
vit = "$EDITOR $(mktemp)";
# file safety
mv = "${pkgs.coreutils}/bin/mv --interactive";
rm = "${pkgs.coreutils}/bin/rm --interactive --verbose";
cp = "${pkgs.coreutils}/bin/cp --interactive";
# colours
cat = "${pkgs.bat}/bin/bat --theme=ansi --style=plain";
l = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso --almost-all";
ls = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso";
ll = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso -l";
la = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso --almost-all -l";
2026-02-03 23:14:35 +01:00
2026-02-04 08:12:22 +01:00
o = "${pkgs.xdg-utils}/bin/xdg-open";
2026-02-03 23:14:35 +01:00
ns = "nix-shell --run zsh";
2026-02-03 22:28:01 +01:00
}
// (
if isDarwin then
{ }
else
{
"ß" = "${pkgs.util-linux}/bin/setsid";
ip = "${pkgs.iproute2}/bin/ip -c";
# systemd
s = "${pkgs.systemd}/bin/systemctl";
us = "${pkgs.systemd}/bin/systemctl --user";
j = "${pkgs.systemd}/bin/journalctl";
uj = "${pkgs.systemd}/bin/journalctl --user";
}
);
2026-02-03 23:14:35 +01:00
programs.tmux = {
enable = true;
keyMode = "vi";
clock24 = true;
terminal = "screen-256color";
baseIndex = 1;
aggressiveResize = true;
escapeTime = 50;
historyLimit = 7000;
shortcut = "b";
extraConfig = ''
set -g mouse on
unbind *
bind * list-clients
# naVIgate
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Use C-h and C-l to cycle through panes
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
setw -g monitor-activity on
set -g visual-activity on
set -g status-interval 2
set -g status-left-length 32
set -g status-right-length 150
set -g status-position bottom
'';
};
2026-02-03 22:28:01 +01:00
}