################################################################################ # ZSH Configuration ################################################################################ export XDG_CACHE_HOME=$HOME/.cache export XDG_DATA_HOME=$HOME/.local/share export XDG_STATE_HOME=$HOME/.local/state export XDG_RUNTIME_DIR=$HOME/.run export XDG_DATA_DIRS=/usr/local/share:/usr/share export XDG_CONFIG_DIRS=/etc/xdg export DOTFILES_DIR=$HOME/ export XDG_CONFIG_HOME=$DOTFILES_DIR/.config export ZDOTDIR=$XDG_CONFIG_HOME/zsh ################################################################################ # Disable /etc/zprofile, /etc/zshrc, /etc/zlogin and /etc/zlogout ################################################################################ unsetopt GLOBAL_RCS ################################################################################ # $PATH and similar ################################################################################ PATH="/bin:/sbin" PATH="${PATH}:/usr/local/bin" PATH="${PATH}:/opt/homebrew/sbin" PATH="${PATH}:/opt/homebrew/bin" PATH="${PATH}:/usr/bin" PATH="${PATH}:/usr/sbin" # Additional Homebrew items that aren't linked by default PATH="${PATH}:/opt/homebrew/opt/ruby/bin" PATH="${PATH}:/opt/homebrew/opt/libpq/bin" PATH="${PATH}:${DOTFILES_DIR}/.scripts" export GOPATH="${HOME}/.go" PATH="${PATH}:${GOPATH}/bin" PATH="${PATH}:${HOME}/.gem/bin" PATH="${PATH}:${HOME}/.cargo/bin" PATH="${PATH}:${HOME}/.poetry/bin" PATH="${PATH}:${HOME}/.rvm/bin" # Run `path_helper`, and make its entries appear last, to preserve path ordering if [ -x /usr/libexec/path_helper ]; then oldpath="${PATH}" eval `/usr/libexec/path_helper -s` PATH="${oldpath}:${PATH}" fi # Remove duplicate entries typeset -U PATH export PATH ################################################################################ # Miscellaneous configuration options ################################################################################ export HOMEBREW_NO_ANALYTICS=1 ################################################################################ # Color palette and dark mode ################################################################################ source $XDG_CONFIG_HOME/jonathandarker/palette.sh export LIGHTMODE_TOGGLE_FLAG_FILE="$XDG_RUNTIME_DIR/lightmode.toggled.flag" if [ -f $LIGHTMODE_TOGGLE_FLAG_FILE ]; then export JONATHANDARKER_COLOR_BG="$JONATHANDARKER_COLOR_15" export JONATHANDARKER_COLOR_BA="$JONATHANDARKER_COLOR_07" export JONATHANDARKER_COLOR_FG="$JONATHANDARKER_COLOR_00" export JONATHANDARKER_COLOR_FA="$JONATHANDARKER_COLOR_08" fi ################################################################################ # Ports ################################################################################ export SURFINGKEYS_SETTINGS_SERVER_PORT="21212" ################################################################################ # Aliases ################################################################################ # python _is_ python3 alias python="python3" alias py="python3" ################################################################################ # nvm # Lazy-loaded, using logic from https://github.com/undg/zsh-nvm-lazy-load ################################################################################ export NVM_DIR="$HOME/.nvm" load-nvm() { [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" } nvm() { unset -f nvm; load-nvm; nvm "$@" } node() { unset -f node; load-nvm; node "$@"; } npm() { unset -f npm; load-nvm; npm "$@"; } pnpm() { unset -f pnpm; load-nvm; pnpm "$@"; } yarn() { unset -f yarn; load-nvm; yarn "$@"; } ################################################################################ # On macOS, set relevant environment variables to newly-launched programs ################################################################################ lctl_env_label="LAUNCHCTL_CHECK_INSTANTIATED_$HOST_$USER" if (command -v launchctl &> /dev/null) && \ [[ ! "$(launchctl getenv $lctl_env_label)" == "TRUE" ]]; then launchctl setenv XDG_CACHE_HOME $XDG_CACHE_HOME launchctl setenv XDG_DATA_HOME $XDG_DATA_HOME launchctl setenv XDG_STATE_HOME $XDG_STATE_HOME launchctl setenv XDG_RUNTIME_DIR $XDG_RUNTIME_DIR launchctl setenv XDG_DATA_DIRS $XDG_DATA_DIRS launchctl setenv XDG_CONFIG_DIRS $XDG_CONFIG_DIRS launchctl setenv DOTFILES_DIR $DOTFILES_DIR launchctl setenv XDG_CONFIG_HOME $XDG_CONFIG_HOME launchctl setenv ZDOTDIR $ZDOTDIR if [[ -o login ]]; then lctl_service_label="local.$HOST.$USER.launchctlenvsetter" launchd_file="/etc/launchd.conf" if [[ ! $( cat $launchd_file | grep "$lctl_service_label" > /dev/null 2>&1 ) ]]; then >&2 echo "No \`launchctl\` service \`$lctl_service_label\` found;" >&2 echo "- Environment variables may not be set correctly" >&2 echo "- Run \`add_launchctl_item\` to create the service." function add_launchctl_item { printf "submit -l $lctl_service_label -- zsh"| sudo tee -a $file printf "-c \"source $ZDOTDIR/.zshenv\" \n"| sudo tee -a $file } fi; fi launchctl setenv $lctl_env_label TRUE fi ################################################################################ # Activate Python virtual environments ################################################################################ if [[ -n $VIRTUAL_ENV && \ $VIRTUAL_ENV = "$HOME"* && \ -e "${VIRTUAL_ENV}/bin/activate" ]]; then source "${VIRTUAL_ENV}/bin/activate" fi ################################################################################ # Private or system-specific environment variables ################################################################################ if [ -f $ZDOTDIR/.zshenv.private ]; then source $ZDOTDIR/.zshenv.private fi