refactor(shell): modularize shell config into per-shell profiles and conf.d

Split bash config into dedicated aliases and profile files. Extract
fish shell init from config.fish into composable conf.d fragments
(setup, environment, ssh-auth-sock). Remove the generic profile in
favor of the bash-specific one. Add a static SSH_AUTH_SOCK symlink
so tmux sessions always see the current socket regardless of which
shell spawned them.
This commit is contained in:
2026-07-24 14:53:30 -04:00
parent 5db0ff0011
commit 98f809dfe5
9 changed files with 90 additions and 42 deletions
+20
View File
@@ -0,0 +1,20 @@
if command -q mise
mise activate fish | source
end
if command -q direnv
direnv hook fish | source
end
if command -q zoxide;
zoxide init fish | source
end
if command -q fzf
fzf --fish | source
end
if command -q jj
jj util completion fish | source
end
+11
View File
@@ -0,0 +1,11 @@
fish_add_path "$HOME/.local/bin"
fish_add_path "$HOME/.cargo/bin"
set -gx npm_config_prefix "$HOME/.local"
if command -q nvim
set -gx EDITOR nvim
end
set -gx VISUAL $EDITOR
+9
View File
@@ -0,0 +1,9 @@
# Create a predictable symlink to the current SSH auth socket.
# tmux forces SSH_AUTH_SOCK to ~/.ssh/ssh_auth_sock globally
# (see config/tmux/tmux.conf), so this symlink must exist for every
# interactive shell -- not just bash login shells.
set -l auth_sock "$HOME/.ssh/ssh_auth_sock"
if set -q SSH_AUTH_SOCK; and test "$SSH_AUTH_SOCK" != "$auth_sock"; and test -S "$SSH_AUTH_SOCK"
mkdir -p "$HOME/.ssh"
ln -sf "$SSH_AUTH_SOCK" "$auth_sock"
end
-24
View File
@@ -12,27 +12,6 @@ if status is-interactive
fish_config prompt choose default
fish_hybrid_key_bindings
fish_add_path "$HOME/.local/bin"
fish_add_path "$HOME/.cargo/bin"
set -gx npm_config_prefix "$HOME/.local"
if command -q mise
/usr/bin/mise activate fish | source
end
if command -q direnv
/usr/bin/direnv hook fish | source
end
if command -q zoxide
/usr/bin/zoxide init fish | source
end
if command -q fzf
/usr/bin/fzf --fish | source
end
command -q nmcli && alias nmlist "nmcli device wifi list"
if command -q tree
@@ -51,7 +30,6 @@ if status is-interactive
command -q zero.js && alias zero 'zero.js'
if command -q nvim
set -gx EDITOR nvim
alias oo "cd $SECOND_BRAIN"
alias on "nvim '+Obsidian new'"
alias os "nvim '+Obsidian search'"
@@ -83,8 +61,6 @@ if status is-interactive
command -q bat && alias cat "bat"
command -q git && alias g git
set -gx VISUAL $EDITOR
if command -q jj
/usr/bin/jj util completion fish | source
end