2026-08-10 14:09:40 -04:00
|
|
|
|
# ~/.zshrc — managed by chezmoi
|
|
|
|
|
|
|
|
|
|
|
|
# History
|
|
|
|
|
|
HISTFILE="$HOME/.zsh_history"
|
|
|
|
|
|
HISTSIZE=10000
|
|
|
|
|
|
SAVEHIST=10000
|
2026-10-05 10:41:51 -04:00
|
|
|
|
setopt SHARE_HISTORY HIST_IGNORE_DUPS
|
2026-08-10 14:09:40 -04:00
|
|
|
|
|
|
|
|
|
|
# Completion
|
|
|
|
|
|
autoload -Uz compinit && compinit
|
|
|
|
|
|
|
|
|
|
|
|
# PATH extras / tool envs (machine-optional, guarded)
|
2026-08-10 15:15:06 -04:00
|
|
|
|
case ":$PATH:" in *":$HOME/.local/bin:"*) ;; *) PATH="$HOME/.local/bin:$PATH" ;; esac
|
2026-08-10 14:09:40 -04:00
|
|
|
|
[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
|
|
|
|
|
|
[ -d "$HOME/.maestro/bin" ] && PATH="$PATH:$HOME/.maestro/bin"
|
|
|
|
|
|
|
2026-08-28 11:52:08 -04:00
|
|
|
|
# Go — GOPATH/GOBIN under ~/.local/share to keep $HOME clean.
|
|
|
|
|
|
# GOROOT is provided by mise (toolchain lives under ~/.local/share/mise).
|
|
|
|
|
|
export GOPATH="$HOME/.local/share/go"
|
|
|
|
|
|
export GOBIN="$GOPATH/bin"
|
|
|
|
|
|
case ":$PATH:" in *":$GOBIN:"*) ;; *) PATH="$GOBIN:$PATH" ;; esac
|
|
|
|
|
|
|
2026-09-30 11:14:14 -04:00
|
|
|
|
# Repo roots (ghq) — same as fish's conf.d/10-env.fish; the ghq-repos tv
|
|
|
|
|
|
# cable (ctrl-o) lists this root.
|
|
|
|
|
|
export GHQ_ROOT="$HOME/Code"
|
|
|
|
|
|
export CODE_ROOT="$HOME/Code"
|
|
|
|
|
|
|
2026-08-28 11:52:08 -04:00
|
|
|
|
# Android SDK — relocated under ~/.local/share/android.
|
|
|
|
|
|
export ANDROID_HOME="$HOME/.local/share/android"
|
|
|
|
|
|
export ANDROID_SDK_ROOT="$ANDROID_HOME"
|
|
|
|
|
|
for _adir in "$ANDROID_HOME/platform-tools" "$ANDROID_HOME/cmdline-tools/latest/bin" "$ANDROID_HOME/emulator"; do
|
|
|
|
|
|
case ":$PATH:" in *":$_adir:"*) ;; *) [ -d "$_adir" ] && PATH="$PATH:$_adir" ;; esac
|
|
|
|
|
|
done
|
|
|
|
|
|
unset _adir
|
|
|
|
|
|
|
2026-09-30 15:02:23 -04:00
|
|
|
|
# GITHUB_TOKEN from gh's keyring login — never stored on disk. An inherited
|
|
|
|
|
|
# value wins, so nested shells skip the gh call.
|
|
|
|
|
|
if [ -z "${GITHUB_TOKEN:-}" ] && command -v gh >/dev/null 2>&1; then
|
|
|
|
|
|
_gh_token="$(gh auth token 2>/dev/null)"
|
|
|
|
|
|
[ -n "$_gh_token" ] && export GITHUB_TOKEN="$_gh_token"
|
|
|
|
|
|
unset _gh_token
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-08-10 14:09:40 -04:00
|
|
|
|
# Shared aliases (same set as fish/bash; source of truth: .chezmoidata/aliases.yaml)
|
|
|
|
|
|
[ -f "$HOME/.config/shell/aliases.sh" ] && . "$HOME/.config/shell/aliases.sh"
|
|
|
|
|
|
|
2026-08-10 15:15:06 -04:00
|
|
|
|
# Shell functions — one file per function, zsh ports of the fish ones
|
|
|
|
|
|
# (cwd/history-touching helpers; standalone tools live in ~/.local/bin)
|
|
|
|
|
|
if [ -d "$HOME/.config/zsh/functions" ]; then
|
|
|
|
|
|
for _f in "$HOME/.config/zsh/functions"/*.zsh; do
|
|
|
|
|
|
[ -r "$_f" ] && . "$_f"
|
|
|
|
|
|
done
|
|
|
|
|
|
unset _f
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-08-13 19:45:39 -04:00
|
|
|
|
# ZLE keybinds — zsh ports of fish_user_key_bindings.fish
|
|
|
|
|
|
[ -f "$HOME/.config/zsh/keybinds.zsh" ] && . "$HOME/.config/zsh/keybinds.zsh"
|
|
|
|
|
|
|
2026-08-14 13:53:55 -04:00
|
|
|
|
# suvadu shell history
|
2026-08-13 19:49:09 -04:00
|
|
|
|
command -v suv >/dev/null 2>&1 && eval "$(suv init zsh)"
|
2026-08-10 14:09:40 -04:00
|
|
|
|
|
|
|
|
|
|
# Generated for envman. Do not edit.
|
|
|
|
|
|
[ -s "$HOME/.config/envman/load.sh" ] && . "$HOME/.config/envman/load.sh"
|
|
|
|
|
|
|
|
|
|
|
|
# Prompt — starship, consistent with fish
|
2026-10-08 11:29:07 -04:00
|
|
|
|
if command -v starship >/dev/null 2>&1; then
|
|
|
|
|
|
eval "$(starship init zsh)"
|
|
|
|
|
|
ZLE_RPROMPT_INDENT=0 # right_format ($time) flush with the edge
|
|
|
|
|
|
|
|
|
|
|
|
# Transient prompt (fish has enable_transience; zsh has no starship
|
|
|
|
|
|
# built-in): on Enter, collapse the prompt to ❯ + time, restore it next
|
|
|
|
|
|
# precmd. Must be registered before zsh-syntax-highlighting below.
|
|
|
|
|
|
# Profiles live in starship.toml; strip add_newline's leading \n.
|
|
|
|
|
|
_starship_prompt=$PROMPT _starship_rprompt=$RPROMPT
|
|
|
|
|
|
_starship_profile() {
|
|
|
|
|
|
local s
|
|
|
|
|
|
s=$(starship prompt --profile "$1" --status="${STARSHIP_CMD_STATUS:-}")
|
|
|
|
|
|
print -rn -- "${s#$'\n'}"
|
|
|
|
|
|
}
|
|
|
|
|
|
_starship_transient() {
|
|
|
|
|
|
PROMPT='$(_starship_profile transient)' RPROMPT='$(_starship_profile transient_right)'
|
|
|
|
|
|
zle .reset-prompt
|
|
|
|
|
|
}
|
|
|
|
|
|
_starship_restore() { PROMPT=$_starship_prompt RPROMPT=$_starship_rprompt; }
|
|
|
|
|
|
autoload -Uz add-zle-hook-widget && add-zle-hook-widget line-finish _starship_transient
|
|
|
|
|
|
add-zsh-hook precmd _starship_restore
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Window title — port of fish_title.fish (+ tmux window name, as in
|
|
|
|
|
|
# fish's conf.d/50-terminal-title.fish)
|
|
|
|
|
|
_set_win_title() {
|
|
|
|
|
|
local t=${(%):-%~}
|
|
|
|
|
|
[[ -n $SSH_TTY ]] && t="${${(%):-%m}[1,10]}:$t"
|
|
|
|
|
|
printf '\e]0;%s\a' "$t"
|
|
|
|
|
|
[[ -n $TMUX ]] && printf '\ek%s\e\\' "$t"
|
|
|
|
|
|
}
|
|
|
|
|
|
autoload -Uz add-zsh-hook && add-zsh-hook precmd _set_win_title
|
2026-08-13 19:49:09 -04:00
|
|
|
|
|
2026-10-05 10:41:51 -04:00
|
|
|
|
# television: ctrl-t smart autocomplete (its ctrl-r is taken over by atuin
|
|
|
|
|
|
# below, as in fish)
|
2026-09-30 11:14:14 -04:00
|
|
|
|
command -v tv >/dev/null 2>&1 && eval "$(tv init zsh)"
|
|
|
|
|
|
|
2026-08-13 19:49:09 -04:00
|
|
|
|
# Fish-style syntax highlighting (zsh-users/zsh-syntax-highlighting).
|
|
|
|
|
|
# MUST stay last in .zshrc: it wraps every zle widget defined above
|
|
|
|
|
|
# (keybinds, compinit, suv/starship hooks).
|
|
|
|
|
|
for _zsh_hl in \
|
|
|
|
|
|
/usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh \
|
|
|
|
|
|
/opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh \
|
|
|
|
|
|
/usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh; do
|
|
|
|
|
|
[ -r "$_zsh_hl" ] && . "$_zsh_hl" && break
|
|
|
|
|
|
done
|
|
|
|
|
|
unset _zsh_hl
|
2026-08-14 13:53:55 -04:00
|
|
|
|
|
2026-10-05 11:00:15 -04:00
|
|
|
|
# atuin comes from the package manager (/usr/bin); see ~/.bashrc.
|
|
|
|
|
|
command -v atuin >/dev/null 2>&1 && eval "$(atuin init zsh)"
|
2026-10-05 10:41:51 -04:00
|
|
|
|
|
2026-10-02 13:06:54 -04:00
|
|
|
|
# >>> termium >>>
|
|
|
|
|
|
case ":$PATH:" in *:'/home/prad/.local/bin':*) ;; *) export PATH='/home/prad/.local/bin':"$PATH" ;; esac
|
|
|
|
|
|
# <<< termium <<<
|
2026-10-14 13:31:37 -04:00
|
|
|
|
|
|
|
|
|
|
# Added by LM Studio CLI (lms)
|
|
|
|
|
|
export PATH="$PATH:/home/prad/.lmstudio/bin"
|
|
|
|
|
|
# End of LM Studio CLI section
|
|
|
|
|
|
|