.dotfiles/zsh/.zshenv
2024-12-18 21:24:09 -05:00

103 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
# ------------- Environment Setup -------------
# XDG configuration defaults
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
# Default tools
export PAGER="less -i -N -S -R"
export EDITOR="nvim"
export BROWSER="firefox"
# ------------- Platform-Specific Setup -------------
# Determine Homebrew prefix dynamically
if [[ "$(uname -s)" == "Darwin" ]]; then
HOMEBREW_PREFIX=$(
if [[ -d "/nix/store" ]]; then
echo "/run/current-system/sw"
elif [[ "$(uname -m)" == "arm64" ]]; then
echo "/opt/homebrew"
else
echo "/usr/local"
fi
)
else
HOMEBREW_PREFIX="/usr/local"
fi
# Helper function to safely add directories to PATH
safe_path_add() {
local dir="$1"
[[ -d "$dir" && ! "$PATH" =~ (^|:)$dir(:|$) ]] && export PATH="$dir:$PATH"
}
# Add Homebrew binaries
safe_path_add "${HOMEBREW_PREFIX}/bin"
safe_path_add "${HOMEBREW_PREFIX}/sbin"
# ------------- PATH and Tools Setup -------------
# Directories to potentially add to PATH
POTENTIAL_PATHS=(
"$HOME/.local/bin"
"$HOME/.rvm/bin"
"$HOME/.cargo/bin"
)
# Add potential paths
for dir in "${POTENTIAL_PATHS[@]}"; do
safe_path_add "$dir"
done
# Ensure PYENV_ROOT is in PATH if set
[[ -n "$PYENV_ROOT" ]] && safe_path_add "$PYENV_ROOT/bin"
# Go path setup
if command -v go &> /dev/null; then
export GOPATH="${GOPATH:-$HOME/.go}"
safe_path_add "$GOPATH/bin"
fi
# NVM setup
if [[ -d "$HOME/.nvm" ]]; then
export NVM_DIR="$HOME/.nvm"
for script in nvm.sh bash_completion; do
[[ -s "$NVM_DIR/$script" ]] && . "$NVM_DIR/$script"
done
fi
# ------------- Conda / Mamba Setup -------------
CONDA_PATHS=(
"/opt/homebrew/Caskroom/miniforge/base"
"/usr/local/Caskroom/miniforge/base"
)
for CONDA_PATH in "${CONDA_PATHS[@]}"; do
if [[ -d "$CONDA_PATH" ]]; then
for profile_script in conda.sh mamba.sh; do
[[ -f "$CONDA_PATH/etc/profile.d/$profile_script" ]] && . "$CONDA_PATH/etc/profile.d/$profile_script" 2>/dev/null
done
safe_path_add "$CONDA_PATH/bin"
break
fi
done
# macOS-specific additional paths
if [[ "$(uname -s)" == "Darwin" ]]; then
MACOS_PATHS=(
"${HOMEBREW_PREFIX}/opt/coreutils/libexec/gnubin"
"/usr/local/opt/openssl@1.1/bin"
"/usr/local/opt/llvm/bin"
"/Library/TeX/texbin"
)
for dir in "${MACOS_PATHS[@]}"; do
safe_path_add "$dir"
done
fi
# Optional architecture flags (uncomment if needed)
# export ARCHFLAGS="-arch x86_64 -arch arm64"