diff --git a/home/server.nix b/home/server.nix index 3a16f6c..dc55a39 100644 --- a/home/server.nix +++ b/home/server.nix @@ -22,10 +22,11 @@ mmv-go lazygit fish + zoxide ]; imports = [ - ../modules/fish + ../modules/fish/server.nix ../modules/lazygit ]; diff --git a/modules/fish/server.nix b/modules/fish/server.nix new file mode 100644 index 0000000..83a2b79 --- /dev/null +++ b/modules/fish/server.nix @@ -0,0 +1,78 @@ +{ config, pkgs, ... }: + +{ programs.fish = { + enable = true; + + functions = { + ff = '' + set RG_PREFIX "rg --column --line-number --no-heading --color=always --smart-case " + set INITIAL_QUERY "$argv" + fzf --ansi --disabled --query "$INITIAL_QUERY" \ + --bind "start:reload:$RG_PREFIX {q}" \ + --bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \ + --delimiter : \ + --preview 'bat --color=always {1} --highlight-line {2}' \ + --preview-window 'up,60%,border-bottom,+{2}+3/3,~3' \ + --bind 'enter:become(nvim {1} +{2})' + ''; + 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:#908caa,bg:#191724,hl:#ebbcba + --color=fg+:#e0def4,bg+:#26233a,hl+:#ebbcba + --color=border:#403d52,header:#31748f,gutter:#191724 + --color=spinner:#f6c177,info:#9ccfd8 + --color=pointer:#c4a7e7,marker:#eb6f92,prompt:#908caa" + + command fzf + ''; + }; + + interactiveShellInit = '' + fish_config theme choose "Rosé Pine" + + set hn (prompt_hostname) + set fish_cursor_default block blink + 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 + + fish_add_path /run/current-system/sw/bin + fish_add_path $HOME/.config/fish/plugins + ''; + + shellAbbrs = { + lg = "lazygit"; + g = "git"; + gco = "git checkout"; + frc = "source ~/.config/fish/**/*.fish"; + }; + }; + + home.file.".config/fish/themes".source = ./themes; +}