# .zshrc # Zsh Configuration export ZSH="$HOME/.oh-my-zsh" export ZSH_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/oh-my-zsh" export ZSH_COMPDUMP="${ZSH_CACHE_DIR}/.zcompdump-${HOST}-${ZSH_VERSION}" mkdir -p "$ZSH_CACHE_DIR" export DOTZSH_GIT_PLUGIN="$ZSH/plugins/git/git.plugin.zsh" export DOTZSH_SUDO_PLUGIN="$ZSH/plugins/sudo/sudo.plugin.zsh" export DOTZSH_RCLONE_PLUGIN="$ZSH/plugins/rclone/rclone.plugin.zsh" export DOTZSH_AUTOSUGGESTIONS_PLUGIN="$ZSH/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" export DOTZSH_SYNTAX_HIGHLIGHTING_PLUGIN="$ZSH/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh" # Programming Languages Root export PROG_DIR="$HOME/.programming" # Go and GVM (Black Box) export GOPATH="$PROG_DIR/go" export GVM_ROOT="$GOPATH" gvm_load() { unset -f gvm go gofmt [[ -s "$GVM_ROOT/scripts/gvm" ]] && source "$GVM_ROOT/scripts/gvm" "$@" } gvm() { gvm_load gvm "$@"; } go() { gvm_load go "$@"; } gofmt() { gvm_load gofmt "$@"; } # Node and NVM (Lazy Load) export NVM_DIR="$PROG_DIR/node" nvm_load() { unset -f nvm node npm npx [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" "$@" } nvm() { nvm_load "nvm" "$@"; } node() { nvm_load "node" "$@"; } npm() { nvm_load "npm" "$@"; } npx() { nvm_load "npx" "$@"; } # Rust and Cargo export RUSTUP_HOME="$PROG_DIR/rust/multirust" export CARGO_HOME="$PROG_DIR/rust/cargo" # Python (Pyenv + Miniconda) export PYENV_ROOT="$PROG_DIR/python/pyenv" export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH" export CONDA_ROOT="$PYENV_ROOT/versions/miniforge3-latest" pyenv_load() { unset -f pyenv eval "$(command pyenv init -)" pyenv "$@" } pyenv() { pyenv_load "$@"; } conda_load() { unset -f conda mamba [ -f "$CONDA_ROOT/etc/profile.d/conda.sh" ] && source "$CONDA_ROOT/etc/profile.d/conda.sh" "$@" } conda() { conda_load conda "$@"; } mamba() { conda_load mamba "$@"; } # R and Rig export RIG_HOME="$PROG_DIR/r" if [ -d "$RIG_HOME/bin" ]; then export PATH="$RIG_HOME/bin:$PATH" fi if [ -n "${WSL_DISTRO_NAME:-}" ] || [ -n "${WSL_INTEROP:-}" ]; then typeset -gr DOTZSH_IS_WSL=1 elif [ -r /proc/sys/kernel/osrelease ] && grep -qiE '(microsoft|wsl)' /proc/sys/kernel/osrelease 2>/dev/null; then typeset -gr DOTZSH_IS_WSL=1 else typeset -gr DOTZSH_IS_WSL=0 fi # Zoxide if command -v zoxide >/dev/null 2>&1; then eval "$(zoxide init --cmd cd zsh)" fi # Source Aliases & Secrets [ -f ~/.zsh_aliases ] && source ~/.zsh_aliases [ -f ~/.zsh_secrets ] && source ~/.zsh_secrets # Add to PATH export PATH="$HOME/.local/bin:$CARGO_HOME/bin:$GOPATH/bin:$PATH" # opencode if [ "$DOTZSH_IS_WSL" -eq 1 ] && command -v openchamber >/dev/null 2>&1 && ! pgrep -f "openchamber.*7891" >/dev/null 2>&1; then openchamber --port 7891 >/dev/null 2>&1 &! fi # direnv if command -v direnv >/dev/null 2>&1; then eval "$(direnv hook zsh)" fi # Completion Styling [ -f ~/.zsh_completion ] && source ~/.zsh_completion # Plugin Scripts (lighter than loading full Oh My Zsh) [ -f "$DOTZSH_GIT_PLUGIN" ] && source "$DOTZSH_GIT_PLUGIN" [ -f "$DOTZSH_SUDO_PLUGIN" ] && source "$DOTZSH_SUDO_PLUGIN" [ -f "$DOTZSH_RCLONE_PLUGIN" ] && source "$DOTZSH_RCLONE_PLUGIN" # Prompt Styling [ -f ~/.zsh_prompt ] && source ~/.zsh_prompt # Interactive Enhancements [ -f "$DOTZSH_AUTOSUGGESTIONS_PLUGIN" ] && source "$DOTZSH_AUTOSUGGESTIONS_PLUGIN" [ -f "$DOTZSH_SYNTAX_HIGHLIGHTING_PLUGIN" ] && source "$DOTZSH_SYNTAX_HIGHLIGHTING_PLUGIN"