317 lines
7.7 KiB
Nix
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
|
|
};
|
|
}
|