Files
Dot-Zsh/Zsh/.zshrc
2026-06-01 15:39:04 +01:00

106 lines
2.3 KiB
Bash

# .zshrc
# Zsh Configuration
export ZSH="$HOME/.oh-my-zsh"
# Programming Languages Root
export PROG_DIR="$HOME/.programming"
# Plugins
plugins=(git zsh-syntax-highlighting zsh-autosuggestions sudo rclone)
source $ZSH/oh-my-zsh.sh
# 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() {
echo "💤 Waking up NVM..."
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
is_wsl() {
[ -f /proc/version ] && grep -qEi "(Microsoft|WSL)" /proc/version
}
# 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 is_wsl && command -v openchamber >/dev/null 2>&1 && ! pgrep -f "openchamber.*7891" > /dev/null; 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
# Prompt Styling
[ -f ~/.zsh_prompt ] && source ~/.zsh_prompt