.dotfiles/zsh/.zshrc
2024-10-18 14:34:43 -04:00

146 lines
3.8 KiB
Bash
Executable file

# Enable profiling
# zmodload zsh/zprof
# Path to your oh-my-zsh installation
# export ZSH="$HOME/.oh-my-zsh"
# export ZSH_CUSTOM="$HOME/.oh-my-zsh/custom"
# export UPDATE_ZSH_DAYS=1
# Disable auto title
DISABLE_AUTO_TITLE="true"
# Auto-update and other zsh settings
# DISABLE_UPDATE_PROMPT=true
# zstyle ':omz:update' mode reminder # remind to update
# Uncomment to use case-sensitive completion
# CASE_SENSITIVE="true"
# Uncomment to use hyphen-insensitive completion
# HYPHEN_INSENSITIVE="true"
# Miscellaneous configurations
# DISABLE_MAGIC_FUNCTIONS="true"
# DISABLE_LS_COLORS="true"
# ENABLE_CORRECTION="true"
# COMPLETION_WAITING_DOTS="true"
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Load zsh hooks
# autoload -Uz add-zsh-hook
#
# Load zsh completions
autoload -Uz compinit
# Fix: Ensure correct completion directory for Apple Silicon
fpath=(/opt/homebrew/share/zsh/site-functions $fpath)
compinit
# Plugins to load
# plugins=(
# git
# docker
# zsh-syntax-highlighting
# zsh-autosuggestions
# colored-man-pages
# macos
# autoupdate
# zoxide
# )
# export ZSH_AUTOSUGGEST_STRATEGY=(
# history
# completion
# )
# Source oh-my-zsh.sh
# . $ZSH/oh-my-zsh.sh
# Load Zinit
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
if [ ! -d "$ZINIT_HOME" ]; then
mkdir -p "$(dirname "$ZINIT_HOME")"
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
fi
source "${ZINIT_HOME}/zinit.zsh"
# Ensure compinit is loaded after zinit
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# Load plugins with zinit
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-history-substring-search
# Lazy load zsh-syntax-highlighting
zinit ice wait lucid atinit"ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)"
zinit load zsh-users/zsh-syntax-highlighting
# Load async auto-suggestions
zinit ice wait lucid atload"zle-line-init() { zle autosuggest-enable }; zle -N zle-line-init"
zinit load zsh-users/zsh-autosuggestions
# zoxide
zinit ice from"gh-r" as"program" pick"bin/zoxide"
zinit load ajeetdsouza/zoxide
# Load eza completions if needed
[[ ! "$FPATH" =~ (^|:)${HOME}/.local/bin/eza/completions/zsh(:|$) ]] && export FPATH="$HOME/.local/bin/eza/completions/zsh:$FPATH"
# Initialize direnv
eval "$(direnv hook zsh)"
# Initialize zoxide
eval "$(zoxide init --cmd cd zsh)"
# Initialize Starship
eval "$(starship init zsh)"
export STARSHIP_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/starship.toml"
# ----------------- Conda & Mamba Setup -----------------
# Conda paths where Miniforge is installed (for Apple Silicon)
CONDA_PATHS=("/opt/homebrew/Caskroom/miniforge/base" "/usr/local/Caskroom/miniforge/base")
for CONDA_PATH in "${CONDA_PATHS[@]}"; do
if [ -d "$CONDA_PATH" ]; then
# Manually set up Conda if available
if [ -f "$CONDA_PATH/etc/profile.d/conda.sh" ]; then
. "$CONDA_PATH/etc/profile.d/conda.sh"
else
# Fall back to adding Conda's bin directory to PATH if the profile.d script isn't found
export PATH="$CONDA_PATH/bin:$PATH"
fi
# Initialize Mamba if available
if [ -f "$CONDA_PATH/etc/profile.d/mamba.sh" ]; then
. "$CONDA_PATH/etc/profile.d/mamba.sh"
fi
# Break after initializing the first found Conda path
break
fi
done
# ----------------- Skip Conda Init -----------------
# Prevent 'conda init' from running again to avoid resetting setup
# conda init "$(basename "${SHELL}")" >/dev/null 2>&1
# Compilation flags
# export ARCHFLAGS="-arch x86_64 -arch arm64"
# Custom aliases
alias python="python3"
alias grep="grep --color=auto"
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
if [[ -f ~/.local/bin/scripts/check_aliases ]]; then
. ~/.local/bin/scripts/check_aliases
fi
# zprof (commented out for speed)
# zprof