# ~/.zshrc — managed by chezmoi # History HISTFILE="$HOME/.zsh_history" HISTSIZE=10000 SAVEHIST=10000 setopt SHARE_HISTORY HIST_IGNORE_DUPS # Completion autoload -Uz compinit && compinit # PATH extras / tool envs (machine-optional, guarded) case ":$PATH:" in *":$HOME/.local/bin:"*) ;; *) PATH="$HOME/.local/bin:$PATH" ;; esac [ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env" [ -d "$HOME/.maestro/bin" ] && PATH="$PATH:$HOME/.maestro/bin" # 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 # 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" # 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 # 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 # Shared aliases (same set as fish/bash; source of truth: .chezmoidata/aliases.yaml) [ -f "$HOME/.config/shell/aliases.sh" ] && . "$HOME/.config/shell/aliases.sh" # 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 # ZLE keybinds — zsh ports of fish_user_key_bindings.fish [ -f "$HOME/.config/zsh/keybinds.zsh" ] && . "$HOME/.config/zsh/keybinds.zsh" # suvadu shell history command -v suv >/dev/null 2>&1 && eval "$(suv init zsh)" # Generated for envman. Do not edit. [ -s "$HOME/.config/envman/load.sh" ] && . "$HOME/.config/envman/load.sh" # Prompt — starship, consistent with fish 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 # television: ctrl-t smart autocomplete (its ctrl-r is taken over by atuin # below, as in fish) command -v tv >/dev/null 2>&1 && eval "$(tv init zsh)" # 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 # atuin comes from the package manager (/usr/bin); see ~/.bashrc. command -v atuin >/dev/null 2>&1 && eval "$(atuin init zsh)" # >>> termium >>> case ":$PATH:" in *:'/home/prad/.local/bin':*) ;; *) export PATH='/home/prad/.local/bin':"$PATH" ;; esac # <<< termium <<< # Added by LM Studio CLI (lms) export PATH="$PATH:/home/prad/.lmstudio/bin" # End of LM Studio CLI section if command -v wt >/dev/null 2>&1; then eval "$(command wt config shell init zsh)"; fi # >>> open-knowledge cli >>> # ! Contents within this block are managed by OpenKnowledge. Do not edit. # ! Delete this whole block to opt out — OpenKnowledge will not re-add it. [ -f "$HOME/.ok/env.sh" ] && . "$HOME/.ok/env.sh" # <<< open-knowledge cli <<<