# Fish shell common configuration # This template provides environment setup for Fish shell # General configuration set -gx EDITOR "micro" set -gx GPG_TTY (tty) set -gx MICRO_TRUECOLOR 1 set -gx TERM xterm-256color # fixes terminal colors when ssh'ing into laptop # Authentication set -gx OPENAI_API_KEY "{{ dopplerProjectJson.OPENAI_CHATGPT_CLI }}" # PATH setup (batched for performance - reduces startup time by ~13ms) set -l paths_to_add # Collect paths with conditional checks test -d $HOME/.hishtory && set -a paths_to_add $HOME/.hishtory test -d $HOME/bin && set -a paths_to_add $HOME/bin set -a paths_to_add /usr/local/bin $HOME/.local/bin test -d /usr/local/go/bin && set -a paths_to_add /usr/local/go/bin # Go test -d $HOME/go/bin && set -a paths_to_add $HOME/go/bin # Go-installed tools test -d $HOME/.local/share/bob/nvim-bin && set -a paths_to_add $HOME/.local/share/bob/nvim-bin # Bob, Neovim package manager # Deno (conditionally source env file or add to path list) if test -d $HOME/.deno if not source $HOME/.deno/env.fish 2>/dev/null set -gx DENO_INSTALL $HOME/.deno set -a paths_to_add $DENO_INSTALL/bin end end # Rust/Cargo (source env file or add to path list) if test -f $HOME/.cargo/env.fish source $HOME/.cargo/env.fish else if test -f $HOME/.cargo/env # Fallback: parse bash env file set -gx CARGO_HOME $HOME/.cargo set -a paths_to_add $CARGO_HOME/bin end # Homebrew (cached for performance - reduces startup time by ~14ms) if test -f /home/linuxbrew/.linuxbrew/bin/brew set -l brew_cache "$HOME/.cache/brew_env.fish" set -l brew_bin "/home/linuxbrew/.linuxbrew/bin/brew" # Regenerate cache if: doesn't exist, >7 days old, or brew binary is newer if not test -f "$brew_cache"; \ or test (math (date +%s) - (stat -c %Y "$brew_cache" 2>/dev/null || echo 0)) -gt 604800; \ or test (stat -c %Y "$brew_bin" 2>/dev/null || echo 0) -gt (stat -c %Y "$brew_cache" 2>/dev/null || echo 0) mkdir -p (dirname "$brew_cache") $brew_bin shellenv > "$brew_cache" 2>/dev/null end test -f "$brew_cache" && source "$brew_cache" end set -gx PYENV_ROOT $HOME/.pyenv # bun set -gx BUN_INSTALL $HOME/.bun set -a paths_to_add $BUN_INSTALL/bin # Note: Bun's _bun file is bash-specific, Fish completions handled separately # jenv (add to path list for later batch add) if test -d $HOME/.jenv/bin set -a paths_to_add $HOME/.jenv/bin end # pnpm set -gx PNPM_HOME $HOME/.local/share/pnpm set -a paths_to_add $PNPM_HOME # spicetify test -d $HOME/.spicetify && set -a paths_to_add $HOME/.spicetify # pulumi test -d $HOME/.pulumi/bin && set -a paths_to_add $HOME/.pulumi/bin # dotnet if test -d $HOME/.dotnet set -gx DOTNET_ROOT $HOME/.dotnet set -a paths_to_add $DOTNET_ROOT $DOTNET_ROOT/tools end # Batch add all collected paths (single PATH reconstruction instead of 17+ calls) test -n "$paths_to_add[1]" && fish_add_path $paths_to_add # Post-PATH initialization for tools that need commands available if test -d $HOME/.jenv/bin; and command -q jenv jenv init - fish | source end # Note: Aliases are defined in Fish-native format in ~/.config/fish/conf.d/abbr.fish # The bash_aliases file contains bash-specific syntax and is not sourced here {{- /* WSL-specific settings */ -}} {{- if .data.wsl }} ## Ensures CLI apps open URLs in the default Windows browser set -gx BROWSER 'powershell.exe /c start' # Cursor IDE CLI (Windows installation accessible from WSL) test -x /mnt/c/Users/Xevion/AppData/Local/Programs/cursor/resources/app/bin/cursor && \ fish_add_path /mnt/c/Users/Xevion/AppData/Local/Programs/cursor/resources/app/bin # Zed Editor CLI (Windows installation accessible from WSL) test -x /mnt/c/Users/Xevion/AppData/Local/Programs/Zed/bin/zed && \ fish_add_path /mnt/c/Users/Xevion/AppData/Local/Programs/Zed/bin # Launch Windows Terminal in current directory function wt if test (count $argv) -eq 0 wt.exe -w 0 sp wsl --cd (pwd) else wt.exe -w 0 $argv wsl --cd (pwd) end end {{- end }} # atuin (magical shell history) if command -q atuin atuin init fish | source end