347 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			347 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { lib, pkgs, config, ... }:
 | |
| {
 | |
|   home.packages = with pkgs; [
 | |
|     binutils
 | |
|     coreutils
 | |
|     dnsutils
 | |
|     dasht
 | |
|     dosfstools
 | |
|     #git
 | |
|     git-machete
 | |
|     bottom
 | |
|     gptfdisk
 | |
|     starship
 | |
|     jq
 | |
|     manix
 | |
|     moreutils
 | |
|     nix-index
 | |
|     cached-nix-shell
 | |
|     nmap
 | |
|     ripgrep
 | |
|     skim
 | |
|     tealdeer
 | |
|     usbutils
 | |
|     utillinux
 | |
|     whois
 | |
|     iftop
 | |
|     wget
 | |
|     curl
 | |
|     eza 
 | |
|     bat
 | |
|     fd
 | |
|     ncdu
 | |
|     du-dust 
 | |
|     # dia-cli
 | |
|     duf
 | |
|     trash-cli
 | |
|     nix-index
 | |
|     silver-searcher
 | |
|     tcpdump
 | |
|     mtr
 | |
|     file
 | |
|     lsof
 | |
|     atool
 | |
|     zip
 | |
|     unzip
 | |
|     rsync
 | |
|     tmux
 | |
|     pwgen
 | |
|     glow
 | |
|     pass
 | |
|     less
 | |
|     gdb
 | |
|     xxd
 | |
|     taskwarrior2
 | |
|     gnupg
 | |
|     syncthing
 | |
|     dijo
 | |
|     #ssb-patchwork
 | |
|     fontconfig
 | |
|     pandoc
 | |
|     taskwarrior-tui
 | |
|     # vimwiki-cli
 | |
|     zk
 | |
| 
 | |
|     (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" ''
 | |
|       connect() {
 | |
|           # Turn it on if it was off
 | |
|           xrandr --output HDMI-2 --auto
 | |
|           xrandr --output HDMI-2 --same-as eDP-1
 | |
|           xrandr --output eDP-1 --off
 | |
|           pkill -9 polybar
 | |
|           feh --bg-scale ~/Downloads/stephen-walker-onIXxjH56AA-unsplash.jpg
 | |
|           polybar mybar > $XDG_DATA_HOME/polybar.log 2>&1 &
 | |
|       }
 | |
| 
 | |
|       disconnect() {
 | |
|           xrandr --output HDMI-2 --off
 | |
|           xrandr --output eDP-1 --auto
 | |
|       }
 | |
| 
 | |
|       xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
 | |
|     '')
 | |
|     (pkgs.writeScriptBin "big-monitor" ''
 | |
|       connect() {
 | |
|           # Turn it on if it was off
 | |
|           xrandr --output HDMI-2 --auto --primary
 | |
|           # Disable normal display
 | |
|           xrandr --output eDP-1 --off
 | |
|           # Use a nice background
 | |
|           feh --bg-scale ~/Downloads/stephen-walker-onIXxjH56AA-unsplash.jpg
 | |
|           # Reload Polybar
 | |
|           ~/.config/bspwm/rc.d/polybar
 | |
|       }
 | |
| 
 | |
|       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
 | |
|     '')
 | |
|   ] ++ lib.optionals pkgs.stdenv.isLinux [
 | |
|     # Linux-only packages
 | |
|     iputils
 | |
|     strace
 | |
|   ];
 | |
| 
 | |
|   programs.zsh = {
 | |
|     enable = true;
 | |
|     enableCompletion = true;
 | |
|     autosuggestion.enable = false;
 | |
| 
 | |
|     initContent = ''
 | |
|       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;
 | |
|   };
 | |
| 
 | |
|   services.kdeconnect.enable = pkgs.stdenv.isLinux;
 | |
| 
 | |
|   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 = "esa -l --icons";
 | |
|     la = "eza -la --icons";
 | |
|     tree = "ls --tree --icons";
 | |
|     cat = "bat";
 | |
|     unzip = "aunpack";
 | |
|     copy = if pkgs.stdenv.isDarwin then "pbcopy" else "xclip -selection clipboard";
 | |
|     paste = if pkgs.stdenv.isDarwin then "pbpaste" else "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
 | |
|     t = "task -BLOCKED -idea -backlog"; 
 | |
|     tw = "t rc.context:work";
 | |
|     # TODO find a reasonable way to manage this from a non-nix managed file in ~/.task/context or something
 | |
|     # we can do something like task rc.context:$(cat ~/.task/context) to read context
 | |
|     # and write a little script make-context = cat $@ > ~/.task/context or something
 | |
|     tt = "taskwarrior-tui -r list";
 | |
|     ti = "task +idea";
 | |
|     tb = "task +backlog list";
 | |
|     ttb = "taskwarrior-tui -r backlog";
 | |
|     tr = "task newest limit:page";
 | |
|     twait = "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";
 | |
| 
 | |
|     # 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";
 | |
|     # Impure for bitwig on linux, not sure what it's for in darwin
 | |
|     nrb = ''
 | |
|       if [[ "$OSTYPE" == "darwin"* ]]; then
 | |
|         cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD
 | |
|       else
 | |
|         cd /tmp && sudo nixos-rebuild switch --flake  --impure '/home/anish/usr/helm#curve' && cd $OLDPWD
 | |
|       fi
 | |
|     '';
 | |
|     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
 | |
|   };
 | |
| }
 |