mirror of
https://github.com/Xevion/dotfiles.git
synced 2025-12-06 03:14:52 -06:00
- Batch Fish PATH additions into single operation (reduces startup by ~13ms) - Cache Homebrew shellenv output for 7 days (reduces startup by ~14ms) - Update CLAUDE.md with TODO list update workflow guidelines - Change default chezmoi cd shell from bash to fish - Remove redundant bun completion sourcing in bash Performance improvements measured through shell startup profiling.
110 lines
3.0 KiB
Bash
110 lines
3.0 KiB
Bash
# This template's argument is the shell as a string (bash, ...).
|
|
|
|
# general configuration
|
|
export EDITOR="micro"
|
|
export GPG_TTY=$(tty)
|
|
export MICRO_TRUECOLOR=1
|
|
export TERM=xterm-256color # fixes terminal colors when ssh'ing into laptop
|
|
|
|
# authentication
|
|
|
|
export OPENAI_API_KEY="{{ dopplerProjectJson.OPENAI_CHATGPT_CLI }}"
|
|
|
|
# hishtory
|
|
export HISHTORY_SERVER="https://hsh.{{ dopplerProjectJson.PRIVATE_DOMAIN }}"
|
|
export PATH="$PATH:$HOME/.hishtory"
|
|
{{ if eq .shell "bash" -}}
|
|
source $HOME/.hishtory/config.sh
|
|
{{- else -}}
|
|
{{ fail "Unexpected shell." }}
|
|
{{- end }}
|
|
|
|
export PATH=$HOME/bin:/usr/local/bin:$PATH
|
|
export PATH=$PATH:~/.local/bin
|
|
export PATH=$PATH:/usr/local/go/bin # Go
|
|
export PATH="$HOME/go/bin/:$PATH" # Go-installed tools
|
|
export PATH="$HOME/.local/share/bob/nvim-bin:$PATH" # Bob, the Neovim package manager
|
|
if [ -d "$HOME/.deno" ]; then
|
|
. "$HOME/.deno/env" # Deno
|
|
fi
|
|
. "$HOME/.cargo/env" # Rustup + Cargo + Cargo-installed tools
|
|
|
|
# Homebrew (cached for performance - reduces startup time by ~14ms)
|
|
if [ -f /home/linuxbrew/.linuxbrew/bin/brew ]; then
|
|
BREW_CACHE="$HOME/.cache/brew_env.sh"
|
|
BREW_BIN="/home/linuxbrew/.linuxbrew/bin/brew"
|
|
|
|
# Regenerate cache if: doesn't exist, >7 days old, or brew binary is newer
|
|
if [ ! -f "$BREW_CACHE" ] || \
|
|
[ $(( $(date +%s) - $(stat -c %Y "$BREW_CACHE" 2>/dev/null || echo 0) )) -gt 604800 ] || \
|
|
[ "$BREW_BIN" -nt "$BREW_CACHE" ]; then
|
|
mkdir -p "$(dirname "$BREW_CACHE")"
|
|
"$BREW_BIN" shellenv > "$BREW_CACHE" 2>/dev/null
|
|
fi
|
|
|
|
[ -f "$BREW_CACHE" ] && . "$BREW_CACHE"
|
|
fi
|
|
|
|
command -v rbenv &> /dev/null && eval "$(rbenv init -)" # rbenv for Ruby
|
|
command -v chatgpt &> /dev/null && . <(chatgpt --set-completions {{ .shell -}}) # chatgpt completions
|
|
{{ if eq .shell "bash" -}}
|
|
. "$HOME/.asdf/asdf.sh"
|
|
. "$HOME/.asdf/completions/asdf.bash"
|
|
{{- end }}
|
|
|
|
# pyenv, python version manager
|
|
export PYENV_ROOT="$HOME/.pyenv"
|
|
if [[ -d $PYENV_ROOT/bin ]]; then
|
|
export PATH="$PYENV_ROOT/bin:$PATH"
|
|
if command -v pyenv &> /dev/null; then
|
|
eval "$(pyenv init -)"
|
|
# pyenv virtual-env
|
|
eval "$(pyenv virtualenv-init -)"
|
|
fi
|
|
fi
|
|
|
|
# bun
|
|
export BUN_INSTALL="$HOME/.bun"
|
|
export PATH="$BUN_INSTALL/bin:$PATH"
|
|
|
|
# java version manager
|
|
if [ -d $HOME/.jenv/bin ]; then
|
|
export PATH="$HOME/.jenv/bin:$PATH"
|
|
if command -v jenv &> /dev/null
|
|
then
|
|
eval "$(jenv init -)"
|
|
fi
|
|
fi
|
|
|
|
# pnpm
|
|
export PNPM_HOME="$HOME/.local/share/pnpm"
|
|
case ":$PATH:" in
|
|
*":$PNPM_HOME:"*) ;;
|
|
*) export PATH="$PNPM_HOME:$PATH" ;;
|
|
esac
|
|
|
|
# spicetify
|
|
if [ -d "$HOME/.spicetify" ]; then
|
|
export PATH=$PATH:$HOME/.spicetify
|
|
fi
|
|
|
|
# pulumi
|
|
if [ -d "$HOME/.pulumi/bin" ]; then
|
|
export PATH=$PATH:$HOME/.pulumi/bin
|
|
fi
|
|
|
|
. $HOME/.bash_aliases
|
|
|
|
|
|
{{- /* WSL-specific settings */ -}}
|
|
{{- if .data.wsl }}
|
|
|
|
## Ensures CLI apps open URLs in the default Windows browser (Chrome/Firefox/etc) instead of a CLI browser
|
|
export BROWSER='powershell.exe /c start'
|
|
{{- end }}
|
|
|
|
# dotnet
|
|
if [ -d "$HOME/.dotnet" ]; then
|
|
export DOTNET_ROOT="$HOME/.dotnet"
|
|
export PATH="$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools"
|
|
fi |