{ 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; autosuggestion.enable = 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 # 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 ''"; 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 }; }