{ programs.fish = { enable = true; functions = { dbui = '' nvim +"DBUI" ''; ff = '' bash ${./ff.bash} ''; envsource = '' for line in (cat $argv | grep -v '^#') set item (string split -m 1 '=' $line) set -gx $item[1] $item[2] end ''; fish_greeting = "fortune -a"; resize_images = '' # Resize all JPG images in the current directory and its subdirectories # Usage: resize_images [percentage] # Example: resize_images 20 - resizes all images to 20% of original size # If no percentage is provided, defaults to 40% set -l percentage $argv[1] if test -z "$percentage" set percentage 40 end for img in (find . -type f -name "*.JPG") set original_size (stat -f %z "$img") magick convert "$img" -resize "$percentage%" "$img" set new_size (stat -f %z "$img") echo "Processed $img" echo "Original size: $original_size bytes" echo "New size: $new_size bytes" echo "---" end ''; localip = "ifconfig | grep \"inet \" | grep -v 127.0.0.1 | awk '{print $2}' | head -n 1"; publicip = "curl -4 ifconfig.me"; fzf = '' set -Ux FZF_DEFAULT_OPTS " --color=fg:#ffffff,bg:#0d0e1c,hl:#ef8386 --color=fg+:#ffffff,bg+:#1d2235,hl+:#ef8386 --color=border:#61647a,header:#88ca9f,gutter:#0d0e1c --color=spinner:#fec43f,info:#00bcff --color=pointer:#feacd0,marker:#ff5f59,prompt:#9ac8e0" command fzf ''; vterm_printf = '' printf "\e]%s\e\\" "$argv" ''; setup_gpg = '' set -x GPG_TTY (tty) if not test -d $HOME/.gnupg mkdir -p $HOME/.gnupg chmod 700 $HOME/.gnupg end set pinentry_line "pinentry-program "(which pinentry-mac) if test -f $HOME/.gnupg/gpg-agent.conf if not grep -Fxq $pinentry_line $HOME/.gnupg/gpg-agent.conf echo $pinentry_line >> $HOME/.gnupg/gpg-agent.conf end else echo $pinentry_line > $HOME/.gnupg/gpg-agent.conf end if pgrep gpg-agent > /dev/null killall gpg-agent end echo "gpg + pinentry-mac installed and configured." ''; }; interactiveShellInit = '' set hn (prompt_hostname) set fish_cursor_default block blink set -x GPG_TTY (tty) if test "$INSIDE_EMACS" != "vterm" set fish_cursor_insert line blink set fish_cursor_replace_one underscore blink set fish_cursor_visual block set fish_vi_force_cursor 1 fish_vi_key_bindings end fish_add_path /run/current-system/sw/bin fish_add_path /opt/homebrew/bin envsource ~/.env zoxide init fish | source fnm env --use-on-cd --shell fish | source if test -d (brew --prefix)"/share/fish/completions" set -p fish_complete_path (brew --prefix)/share/fish/completions end if test -d (brew --prefix)"/share/fish/vendor_completions.d" set -p fish_complete_path (brew --prefix)/share/fish/vendor_completions.d end ''; shellAbbrs = { lg = "lazygit"; g = "git"; frc = "source ~/.config/fish/**/*.fish"; }; }; home.file.".config/fish/themes".source = ./themes; }