{ self, lib, pkgs, config, ... }: { home.packages = with pkgs; [ binutils coreutils dnsutils dosfstools #git bottom gptfdisk starship iputils jq manix moreutils nix-index cached-nix-shell nmap ripgrep skim tealdeer usbutils utillinux whois iftop wget curl exa bat fd ncdu duf trash-cli nix-index silver-searcher tcpdump mtr file lsof atool strace zip unzip rsync tmux pwgen glow pass less gdb xxd taskwarrior yt-dlp gnupg syncthing dijo #ssb-patchwork fontconfig pandoc (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" '') ]; programs.zsh = { enable = true; enableCompletion = true; enableAutosuggestions = true; initExtra = '' bindkey -v flakify() { 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 } 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-autocomplete"; # src = pkgs.fetchFromGitHub { # owner = "marlonrichert"; # repo = "zsh-autocomplete"; # rev = "22.01.21"; # sha256 = "+UziTYsjgpiumSulrLojuqHtDrgvuG91+XNiaMD7wIs="; # }; # } { 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; # nix-direnv.enableFlakes = true; always enabled }; programs.zoxide = { enable = true; enableZshIntegration = true; }; services.kdeconnect.enable = true; home.shellAliases = { # quick cd ".." = "cd .."; "..." = "cd ../.."; "...." = "cd ../../.."; "....." = "cd ../../../.."; # kitaab recents kr = "cd /home/anish/kitaab/vimwiki; ls --sort=modified --reverse | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 {}'"; # modern cli tools ls = "exa --icons"; l = "exa -l --icons"; la = "exa -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"; # task warrior # TODO: make blocked a context? t = "task -BLOCKED"; tin = "task in"; tun = "task -BLOCKED -wait"; tb = "task list +backlog"; tr = "task newest limit:page"; tu = "task unblocked -wait"; tl = "task list"; ta = "task add"; tai = "task add +in"; tn = "task-note"; tp = "task limit:page"; te = "task edit"; ts = "task sync"; # keeping for posterity but now sxhkbd handles screenshot with # 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 ''"; srch = "ns nixos"; orch = "ns override"; nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/etc/nixos/#curve'; cd $OLDPWD"; nrt = "cd /tmp; sudo nixos-rebuild test --flake '/etc/nixos/#curve'; cd $OLDPWD"; ned = "cd /etc/nixos; vim; cd $OLDPWD"; ncd = "cd /etc/nixos"; mn = '' manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix ''; # fix nixos-option nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat"; # 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 = "kitten +kitty ssh"; smm = "ssh 10.0.69.4"; # box over wireguard sm = "ssh mossnet.lan"; # box regular ss = "ssh sealight.xyz"; # helix # sl = "ssh 69.61.38.225"; # lituus has become helix }; }