Compare commits

...

5 commits

Author SHA1 Message Date
Danielle McLean 3eec157285
Shift lots of shells' history into XDG_DATA_HOME 2022-07-12 11:05:15 +10:00
Danielle McLean efb24fc3f6
Push Ruby Bundler directories into XDG dirs 2022-07-12 11:05:14 +10:00
Danielle McLean 8bbc4bd3f2
Push Docker config into XDG_CONFIG_HOME 2022-07-12 11:05:13 +10:00
Danielle McLean c55664cce3
Move GOPATH into XDG_DATA_HOME 2022-07-12 11:05:12 +10:00
Danielle McLean 690df57f00
Set compromise XDG_RUNTIME_DIR if necessary
It's not ideal to set XDG_RUNTIME_DIR in your shell environment,
rather than from your session manager (or systemd, or whatever), since
then you can't reliably provide the same lifetime guarantees that
XDG_RUNTIME_DIR is supposed to have? But this is still preferable to not
having an XDG_RUNTIME_DIR at all, so I'm gonna go with it.
2022-07-12 11:05:11 +10:00
2 changed files with 44 additions and 2 deletions

View file

@ -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)

20
zshenv
View file

@ -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