diff --git a/config/zsh/login/langs b/config/zsh/login/langs index 4a123b7..24e9141 100644 --- a/config/zsh/login/langs +++ b/config/zsh/login/langs @@ -2,14 +2,24 @@ local -a newbins +# docker +export DOCKER_CONFIG=$XDG_CONFIG_HOME/docker + # go -[[ -z $GOPATH ]] && export GOPATH=~/.go -newbins+=(~/.go/bin) +[[ -z $GOPATH ]] && export GOPATH=$XDG_DATA_HOME/go +newbins+=($XDG_DATA_HOME/go/bin) # haskell newbins+=(~/.cabal/bin ~/Library/Haskell/bin) export STACK_ROOT=$XDG_DATA_HOME/stack +# less +# not exactly a 'lang' but still +export LESSHISTFILE=$XDG_DATA_HOME/less/history + +# mysql +export MYSQL_HISTFILE=$XDG_DATA_HOME/mysql/history + # o'caml export OPAMROOT=$XDG_DATA_HOME/opam [[ -f $OPAMROOT/opam-init/init.zsh ]] && source $OPAMROOT/opam-init/init.zsh @@ -23,6 +33,9 @@ fi # ruby newbins+=(~/.gem/ruby/*/bin(N) /usr/local/opt/ruby/bin /usr/local/lib/ruby/gems/*/bin(N)) +export BUNDLE_USER_CONFIG=$XDG_CONFIG_HOME/bundle +export BUNDLE_USER_CACHE=$XDG_CACHE_HOME/bundle +export BUNDLE_USER_PLUGIN=$XDG_DATA_HOME/bundle # rust export CARGO_HOME=$XDG_DATA_HOME/cargo @@ -45,6 +58,9 @@ export PHIVE_HOME=$XDG_DATA_HOME/phive # there you go, I guess. newbins+=($XDG_CONFIG_HOME/composer/vendor/bin) +# postgres +export PSQL_HISTORY=$XDG_DATA_HOME/psql/history + # python export -UT PYTHONPATH pythonpath newbins+=(~/Library/Python/*/bin(N)) @@ -54,4 +70,10 @@ export PYENV_ROOT=$XDG_DATA_HOME/pyenv export PYENV_SHELL=zsh newbins+=($XDG_DATA_HOME/pyenv/shims $HOME/.poetry/bin) +# redis +export REDISCLI_HISTFILE=$XDG_DATA_HOME/redis/rediscli_history + +# sqlite +export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite/history + path=($newbins $path) diff --git a/zshenv b/zshenv index a156484..fa2dd21 100644 --- a/zshenv +++ b/zshenv @@ -6,6 +6,26 @@ export XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_STATE_HOME +# The other four XDG directories are very easy, but XDG_RUNTIME_DIR is +# complicated. It kinda needs to be managed by a systemwide supervisor, like +# systemd, in order to meet all of the XDG Base Directory specification's +# requirements? In particular, the directory is supposed to come into being +# when you log in, live as long as you have any active sessions, and be +# destroyed when you log out - none of this can easily be done from the shell +# environment alone, especially on an operating system like macOS where your +# graphical session wasn't spawned from a shell using something like .xinitrc. +# +# We're going to assume XDG_RUNTIME_DIR will have already be set by a +# systemwide supervisor if it can possibly have been. If it hasn't - say, +# because we're on macOS - we'll compromise by using TMPDIR. Since TMPDIR has +# a different lifetime than XDG_RUNTIME_DIR is supposed to, this is an +# imperfect solution, but it's the best we can do. +if [[ ! -d $XDG_RUNTIME_DIR ]] && [[ -d $TMPDIR ]]; then + export XDG_RUNTIME_DIR=${TMPDIR}xdg-$UID + mkdir -p $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR +fi + # The real zsh config lives in XDG_CONFIG_HOME! ;) : ${ZDOTDIR:=$XDG_CONFIG_HOME/zsh} source $ZDOTDIR/zshenv