|
|
@@ -1,24 +1,17 @@
|
|
|
################################################################################
|
|
|
# ZSH Configuration
|
|
|
-#
|
|
|
-# Note: in order for files in `~/.config` to be picked up, be sure to set the
|
|
|
-# global `XDG_*` and `ZDOTDIR` paths. On macOS, these are set at `/etc/zshenv`
|
|
|
-# or `~/.zshenv`), and look something like the following block:
|
|
|
-#
|
|
|
-# ```zsh
|
|
|
-# export XDG_CONFIG_HOME=$HOME/.config
|
|
|
-# 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 ZDOTDIR=$XDG_CONFIG_HOME/zsh
|
|
|
-# if [ -f $ZDOTDIR/.zshenv ]; then source $ZDOTDIR/.zshenv; fi
|
|
|
-# ```
|
|
|
-#
|
|
|
################################################################################
|
|
|
|
|
|
+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
|
|
|
################################################################################
|
|
|
@@ -40,7 +33,7 @@ PATH="${PATH}:/usr/sbin"
|
|
|
PATH="${PATH}:/opt/homebrew/opt/ruby/bin"
|
|
|
PATH="${PATH}:/opt/homebrew/opt/libpq/bin"
|
|
|
|
|
|
-PATH="${PATH}:${HOME}/.scripts"
|
|
|
+PATH="${PATH}:${DOTFILES_DIR}/.scripts"
|
|
|
|
|
|
export GOPATH="${HOME}/.go"
|
|
|
|
|
|
@@ -133,6 +126,39 @@ 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 [[ ! "$(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
|
|
|
+
|
|
|
################################################################################
|
|
|
# Private or system-specific environment variables
|
|
|
################################################################################
|