103 lines
2.5 KiB
Bash
Executable file
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"
|
|
|