helm/home/profiles/cli/default.nix
2024-09-03 21:43:23 -07:00

317 lines
7.7 KiB
Nix

{ lib, pkgs, config, ... }:
{
home.packages = with pkgs; [
binutils
# coreutils
dnsutils
dasht
dosfstools
# git
git-machete
asciinema
bottom
gptfdisk
starship
# TODO Not available on Darwin
# iputils
# usbutils
# cached-nix-shell
# utillinux
# strace
# mtr
# gdb
# fontconfig
# whois
# jq
manix
moreutils
nix-index
nmap
ripgrep
skim
tealdeer
iftop
wget
curl
eza
bat
fd
# ncdu
duf
trash-cli
nix-index
silver-searcher
tcpdump
file
lsof
atool
zip
unzip
rsync
tmux
pwgen
glow
pass
less
xxd
taskwarrior
gnupg
syncthing
dijo
# ssb-patchwork
pandoc
taskwarrior-tui
# TODO marked broken
# python3Packages.howdoi
(pkgs.writeScriptBin "jq-repl" ''
#!/usr/bin/env bash
if [[ -z $1 ]] || [[ $1 == "-" ]]; then
input=$(mktemp)
trap "rm -f $input" EXIT
cat /dev/stdin > $input
else
input=$1
fi
echo "" \ | fzf --phony --preview-window="up:90%" --print-query --preview "jq --color-output -r {q} $input"
'')
(pkgs.writeScriptBin "clear-vim-trash" (builtins.readFile ./bin/clear-vim-trash.sh))
(pkgs.writeScriptBin "flakify" ''
#!/usr/bin/env zsh
if [ ! -e flake.nix ]; then
nix flake new -t github:nix-community/nix-direnv .
elif [ ! -e .envrc ]; then
echo "use flake" > .envrc
direnv allow
fi
vim flake.nix
'')
(pkgs.writeScriptBin "mx" ''
#!/usr/bin/env bash
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview="manix '{}'" | xargs manix
'')
(pkgs.writeScriptBin "monitor" ''
# hotplug
connect() {
# Turn it on if it was off
xrandr --output HDMI-2 --auto
xrandr --output HDMI-2 --same-as eDP-1
}
disconnect() {
xrandr --output HDMI-2 --off
}
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
'')
(pkgs.writeScriptBin "disconnect-keyboard" ''
# keyboard on curve is busted
get_keyboard_id() {
xinput list | grep 'AT Translated Set' | cut -f2 | cut -d'=' -f2 | xinput float
}
disconnect_keyboard() {
id=$(get_keyboard_id)
xinput float $id
unset id
}
attach_keyboard() {
id=$(get_keyboard_id)
xinput reattach $id 3
unset id
}
disconnect_keyboard
'')
];
programs.zsh = {
enable = true;
enableCompletion = true;
enableAutosuggestions = false;
initExtra = ''
bindkey -v
autopair-init
'';
sessionVariables = {
EDITOR = "nvim";
TERMINFO_DIRS = "${pkgs.kitty.terminfo.outPath}/share/terminfo"; # Needed to run home-manager switch on non-nixOS
};
plugins = [
{
name = "zsh-autopair";
src = pkgs.fetchFromGitHub {
owner = "hlissner";
repo = "zsh-autopair";
rev = "34a8bca0c18fcf3ab1561caef9790abffc1d3d49";
sha256 = "1h0vm2dgrmb8i2pvsgis3lshc5b0ad846836m62y8h3rdb3zmpy1";
};
file = "autopair.zsh";
}
{
name = "zsh-syntax-highlighting";
src = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-syntax-highlighting";
rev = "0.6.0";
sha256 = "0zmq66dzasmr5pwribyh4kbkk23jxbpdw4rjxx0i7dx8jjp2lzl4";
};
file = "zsh-syntax-highlighting.zsh";
}
{
name = "zsh-autoquoter";
src = pkgs.fetchFromGitHub {
owner = "ianthehenry";
repo = "zsh-autoquoter";
rev = "819a615fbfd2ad25c5d311080e3a325696b45de7";
sha256 = "r0jdo+YFTOejvNMTqzXi5ftcLzDpuKejX0wMFwqKdJY=";
};
file = "zsh-autoquoter.zsh";
}
# {
# name = "zsh-nix-shell";
# file = "nix-shell.plugin.zsh";
# src = pkgs.fetchFromGitHub {
# owner = "chisui";
# repo = "zsh-nix-shell";
# rev = "v0.5.0";
# sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
# };
# }
];
};
programs.starship = {
enable = true;
enableZshIntegration = true;
};
programs.fzf = {
enable = true;
enableZshIntegration = true;
};
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};
# Only available on Linux
# services.kdeconnect.enable = true;
home.shellAliases = {
# quick cd
".." = "cd ..";
"..." = "cd ../..";
"...." = "cd ../../..";
"....." = "cd ../../../..";
icat = "kitty +kitten icat";
yt = "ytfzf -T kitty -t ";
gen-secret = "< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c\${1:-32};echo;";
# modern cli tools
ls = "eza --icons";
l = "eza -l --icons";
la = "eza -la --icons";
tree = "ls --tree --icons";
cat = "bat";
unzip = "aunpack";
copy = "xclip -selection clipboard";
paste = "xclip -selection clipboard -o";
rm = "echo USE TRASH, FOOL: trash ";
trash = "trash-put";
make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;";
# task warrior
# TODO: make blocked a context?
t = "task -BLOCKED -idea -backlog";
tt = "taskwarrior-tui -r list";
ti = "task +idea";
tb = "task +backlog list";
ttb = "taskwarrior-tui -r backlog";
tr = "task newest limit:page";
tw = "task +wait";
ta = "task add";
tai = "task add +idea";
tn = "task-note";
ts = "task sync";
# taskwarrior task lists
twt = "task tags +PENDING | tail -n +4 | cut -d ' ' -f1 | fzf --preview 'task +{}'";
# task warrior projects list
tp = "task projects +PENDING | tail -n +4 | head -n -2 | cut -d ' ' -f1 | fzf --preview 'task pro:{}'";
# keeping for posterity but now sxhkbd handles screenshot with <Super+O>
# scrot = "flameshot screen -c -p ~/screenshots/";
# scrotgui = "flameshot gui -p ~/screenshots/";
# git
g = "git";
gl = "git log --pretty=oneline --abbrev-commit";
# grep
grep = "rg";
gi = "grep -i";
# internet ip
myip = "dig +short myip.opendns.com @208.67.222.222 2>&1";
# nix
n = "nix";
np = "n profile";
ni = "np install";
nr = "np remove";
ns = "n search --no-update-lock-file";
nf = "n flake";
nfl = "nf lock";
nepl = "n repl '<nixpkgs>'";
srch = "ns nixpkgs";
orch = "ns override";
nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
nrd = "cd /tmp; darwin-rebuild switch --flake /Users/anishlakhwara/usr/helm#Anishs-MacBook-Pro; cd $OLDPWD";
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
ned = "cd /home/anish/usr/helm; vim; cd $OLDPWD";
ncd = "cd /home/anish/usr/helm";
mn = ''
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix
'';
# sudo
s = "sudo -E ";
pls = "s";
si = "sudo -i";
se = "sudoedit";
# top
top = "btm";
# systemd
ctl = "systemctl";
stl = "s systemctl";
utl = "systemctl --user";
ut = "systemctl --user start";
un = "systemctl --user stop";
up = "s systemctl start";
dn = "s systemctl stop";
jtl = "journalctl";
# quick ssh
kssh = "kitty +kitten ssh";
smm = "ssh 10.0.69.4"; # box over wireguard
sm = "ssh mossnet.lan"; # box regular
sl = "ssh sealight.xyz"; # lituus
sh = "ssh git.sealight.xyz"; # helix
sb = "ssh cyberian@69.61.38.246"; # bonfire for allwell
};
}