Files
dotfiles/fish/files/config.fish
Thomas G. Lopes 9bad10d2fd fish changes
2026-02-20 17:42:37 +00:00

173 lines
4.6 KiB
Fish

# Only execute this file once per shell.
set -q __fish_home_manager_config_sourced; and exit
set -g __fish_home_manager_config_sourced 1
# Add ROCm bin directory to PATH
set -gx PATH "/opt/rocm/bin" $PATH
set --export VOLTA_HOME "$HOME/.volta"
set --export PATH "$VOLTA_HOME/bin" $PATH
set --export EDITOR "nvim"
status is-login; and begin
# Login shell initialisation
end
status is-interactive; and begin
# Abbreviations
# Aliases
alias che chezmoi
alias gb 'git branch'
alias gca 'git commit --amend'
alias gchd 'git checkout develop'
alias gchm 'git checkout main'
alias gcho 'git checkout'
alias gcnv 'git commit --no-verify'
alias gd 'git diff'
alias gdc 'git diff --cached'
alias gdt 'git diff-tree --no-commit-id --name-only -r'
alias gf 'git fetch'
alias gl 'git pull'
alias gm 'git merge'
alias gp 'git push'
alias gpuoh 'git push --set-upstream origin HEAD'
alias gr 'git remote'
alias gra 'git remote add'
alias grr 'git remote remove'
alias grv 'git remote -v'
alias gs 'git status'
alias nv nvim
# alias yay paru
alias wo 'pomodoro work'
alias br 'pomodoro break'
# Interactive shell initialisation
fish_config theme choose rose-pine-moon
set fish_greeting # Disable greeting
test -f /run/current-system/sw/share/autojump/autojump.fish; and source /run/current-system/sw/share/autojump/autojump.fish
[ -f /opt/homebrew/share/autojump/autojump.fish ]; and source /opt/homebrew/share/autojump/autojump.fish
test -f ~/.env; and source ~/.env
test -f ~/.config/myvars; and source ~/.config/myvars
nerdfetch
if test "$TERM" != dumb
eval (starship init fish)
fzf --fish | source
end
# add completions generated by Home Manager to $fish_complete_path
begin
set -l joined (string join " " $fish_complete_path)
set -l prev_joined (string replace --regex "[^\s]*generated_completions.*" "" $joined)
set -l post_joined (string replace $prev_joined "" $joined)
set -l prev (string split " " (string trim $prev_joined))
set -l post (string split " " (string trim $post_joined))
set fish_complete_path $prev "/home/thomasgl/.local/share/fish/home-manager_generated_completions" $post
end
end
# Add user local bin to PATH
if test -d "$HOME/.local/bin"
fish_add_path "$HOME/.local/bin"
end
# pnpm
switch (uname)
case Linux
set -gx PNPM_HOME "/home/thomasgl/.local/share/pnpm"
case Darwin
set -gx PNPM_HOME "/Users/thomasglopes/.local/share/pnpm"
end
if not string match -q -- $PNPM_HOME $PATH
set -gx PATH "$PNPM_HOME" $PATH
end
# pnpm end
set -Ux ENV ~/.config/fish/config.fish
if not set -q SSH_AUTH_SOCK
# Check if ssh-agent is already running and accessible
set -l agent_pid (pgrep ssh-agent | head -n 1)
if test -n "$agent_pid"
# Try to find existing socket
set -l sock_path (find /tmp -name "ssh-*" -type d 2>/dev/null | \
xargs -I {} find {} -name "agent.*" 2>/dev/null | head -n 1)
if test -n "$sock_path"
set -gx SSH_AUTH_SOCK "$sock_path"
set -gx SSH_AGENT_PID "$agent_pid"
# Test if agent is responsive
if ssh-add -l >/dev/null 2>&1
# echo "Connected to existing ssh-agent (PID: $agent_pid)"
return 0
else
# Clean up stale variables
set -e SSH_AUTH_SOCK SSH_AGENT_PID
end
end
end
# Start new ssh-agent
# echo "Starting new ssh-agent..."
set -l agent_output (ssh-agent -c)
# Parse output and set variables
for line in $agent_output
if string match -qr '^setenv SSH_AUTH_SOCK' "$line"
set -gx SSH_AUTH_SOCK (string replace -r '^setenv SSH_AUTH_SOCK (.+);$' '$1' "$line" | string trim -c '"')
else if string match -qr '^setenv SSH_AGENT_PID' "$line"
set -gx SSH_AGENT_PID (string replace -r '^setenv SSH_AGENT_PID (.+);$' '$1' "$line" | string trim -c '"')
end
end
# Verify agent started successfully
if test -z "$SSH_AUTH_SOCK" -o -z "$SSH_AGENT_PID"
# echo "Error: Failed to start ssh-agent" >&2
return 1
end
# echo "ssh-agent started (PID: $SSH_AGENT_PID)"
end
# bun
set --export BUN_INSTALL "$HOME/.bun"
set --export PATH $BUN_INSTALL/bin $PATH
# opencode
fish_add_path ~/.opencode/bin
if test (uname) = Darwin
if test -f ~/.safe-chain/scripts/init-fish.fish
source ~/.safe-chain/scripts/init-fish.fish
end
# Google Cloud SDK
if test -f /Users/thomasglopes/google-cloud-sdk/path.fish.inc
source /Users/thomasglopes/google-cloud-sdk/path.fish.inc
end
set -gx PATH /Users/thomasglopes/.local/bin /Users/thomasglopes/google-cloud-sdk/bin $PATH
# opencode
fish_add_path /Users/thomasglopes/.opencode/bin
end