# Always-on env for every zsh (interactive, login, agents, zsh -c). # Safe to re-source: macOS login shells run this again from ~/.zprofile after # path_helper reorders PATH. Machine-local overrides: ~/.config/zsh/local.zsh. typeset -U path # Homebrew (macOS). cd /tmp so TCC-protected CWDs do not break brew shellenv. # Skip when already initialized (login re-apply, nested zsh). if [[ -z "$HOMEBREW_PREFIX" ]]; then if [[ -x /opt/homebrew/bin/brew ]]; then eval "$(cd /tmp && /opt/homebrew/bin/brew shellenv)" elif [[ -x /usr/local/bin/brew ]]; then eval "$(cd /tmp && /usr/local/bin/brew shellenv)" fi fi # User-local binaries (pipx, uv tools, grok shim, …). # Do not put vendor trees like ~/.grok/bin on PATH wholesale (names like `agent` shadow tools). if [[ -d "$HOME/.local/bin" ]]; then path=("$HOME/.local/bin" ${path:#$HOME/.local/bin}) export PATH fi # Always-on tool fragments (~/.config/zsh/*.zsh). local.zsh is sourced last so it wins. ZSH_ALWAYS_ON_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh" if [[ -d "$ZSH_ALWAYS_ON_DIR" ]]; then for f in "$ZSH_ALWAYS_ON_DIR"/*.zsh(N); do [[ ${f:t} == local.zsh ]] && continue # shellcheck disable=SC1090 . "$f" done fi # Cursor owns `agent` when installed. Grok is only ~/.local/bin/grok. # Grok's installer also writes ~/.local/bin/agent and may prepend ~/.grok/bin. _easyzsh_agent= [[ -L $HOME/.local/bin/agent ]] && _easyzsh_agent=$(readlink $HOME/.local/bin/agent) if [[ -x $HOME/.local/bin/cursor-agent ]]; then if [[ ! -e $HOME/.local/bin/agent || $_easyzsh_agent == *'/.grok/'* ]]; then ln -sfn $HOME/.local/bin/cursor-agent $HOME/.local/bin/agent fi elif [[ -L $HOME/.local/bin/agent && $_easyzsh_agent == *'/.grok/'* ]]; then rm -f $HOME/.local/bin/agent fi unset _easyzsh_agent path=(${path:#$HOME/.grok/bin}) if [[ -f "$ZSH_ALWAYS_ON_DIR/local.zsh" ]]; then # shellcheck disable=SC1090 . "$ZSH_ALWAYS_ON_DIR/local.zsh" fi