fix(XDG): Make XDG respect system

Allow the system variables to override the ones set here, this is
important for linux distros such as Gentoo which provide multiple
versions of some packges and their own mechanism to switch between them.
This commit is contained in:
Robert Morrison 2024-02-19 17:24:04 +00:00
parent 9eb9dd90f7
commit 7711d3d6db
Signed by: robert
GPG Key ID: 73E012EB3F4EC696
3 changed files with 37 additions and 34 deletions

View File

@ -30,6 +30,9 @@ must have the extension `.sh` to be detected.
After this the XDG shenanigans are performed, again inspect the file to After this the XDG shenanigans are performed, again inspect the file to
see what it does. see what it does.
Overrides go in `overrides.d/XDG` Overrides go in `overrides.d/XDG`
They will be loaded before the XDG_shenanigans so that overrides can work,
and system variables can be pulled in. To disable a system variable you
just need to `unset VARIABLE` in your override file
Next is program_config, same rules. Next is program_config, same rules.

View File

@ -24,63 +24,63 @@ export XDG_STATE_HOME="$HOME"/.local/state
# - I will also attempt to keep this in alphabetical order # - I will also attempt to keep this in alphabetical order
# android-studio # android-studio
export ANDROID_HOME="$XDG_DATA_HOME"/android [ -z "$ANDROID_HOME" ] && export ANDROID_HOME="$XDG_DATA_HOME"/android
export ANDROID_USER_HOME="$ANDROID_HOME" [ -z "$ANDROID_USER_HOME" ] && export ANDROID_USER_HOME="$ANDROID_HOME"
export ANDROID_AVD_HOME="$ANDROID_HOME/avd" [ -z "$ANDROID_AVD_HOME" ] && export ANDROID_AVD_HOME="$ANDROID_HOME/avd"
# Cabal # Cabal
export CABAL_CONFIG="$XDG_CONFIG_HOME"/cabal/config [ -z "$CABAL_CONFIG" ] && export CABAL_CONFIG="$XDG_CONFIG_HOME"/cabal/config
export CABAL_DIR="$XDG_DATA_HOME"/cabal [ -z "$CABAL_DIR" ] && export CABAL_DIR="$XDG_DATA_HOME"/cabal
# cargo # cargo
export CARGO_HOME="$XDG_DATA_HOME"/cargo [ -z "$CARGO_HOME" ] && export CARGO_HOME="$XDG_DATA_HOME"/cargo
# Cuda cache # Cuda cache
export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv [ -z "$CUDA_CACHE_PATH" ] && export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
# dotnet snap - this might be a me-only thing? # dotnet snap - this might be a me-only thing?
## Provided by PORTAGE [ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT="$HOME/.local/opt/dotnet"
# export DOTNET_ROOT="$HOME/.local/opt/dotnet"
# gem cache # gem cache
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem [ -z "$GEM_SPEC_CACHE" ] && export GEM_SPEC_CACHE"${XDG_CACHE_HOME}"/gem
## Provided by PORTAGE
# gem # gem
export GEM_HOME="${XDG_DATA_HOME}"/gem [ -z "$GEM_HOME" ] && export GEM_HOME="${XDG_DATA_HOME}"/gem
# GHCUP # GHCUP
export GHCUP_USE_XDG_DIRS=1 [ -z "$GHCUP_USE_XDG_DIRS" ] && export GHCUP_USE_XDG_DIRS=1
# GNUPG # GNUPG
export GNUPGHOME="$XDG_DATA_HOME"/gnupg [ -z "$GNUPGHOME" ] && export GNUPGHOME="$XDG_DATA_HOME"/gnupg
# go # go
export GOPATH="$XDG_DATA_HOME"/go [ -z "$GOPATH" ] && export GOPATH="$XDG_DATA_HOME"/go
# Gradle # Gradle
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle [ -z "$GRADLE_USER_HOME" ] && export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
# GTK 2 # GTK 2
export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc [ -z "$GTK2_RC_FILES" ] && export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
# jupyter # jupyter
export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter [ -z "$JUPYTER_CONFIG_DIR" ] && export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter
# kde # kde
export KDEHOME="$XDG_DATA_HOME"/kde [ -z "$KDEHOME" ] && export KDEHOME="$XDG_DATA_HOME"/kde
# Kodi # Kodi
export KODI_DATA="$XDG_DATA_HOME"/kodi [ -z "$KODI_DATA" ] && export KODI_DATA="$XDG_DATA_HOME"/kodi
# Less History # Less History
export LESSHISTFILE="$XDG_CACHE_HOME"/less/history [ -z "$LESSHISTFILE" ] && export LESSHISTFILE="$XDG_CACHE_HOME"/less/history
# npm # npm
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc [ -z "$NPM_CONFIG_USERCONFIG" ] && export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
# NuGet # NuGet
export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages [ -z "$NUGET_PACKAGES" ] && export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
# OPAM # OPAM
export OPAMROOT="$XDG_DATA_HOME/opam" [ -z "$OPAMROOT" ] && export OPAMROOT="$XDG_DATA_HOME/opam"
# Parallel # Parallel
export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel [ -z "$PARALLEL_HOME" ] && export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
# Pass # Pass
export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass [ -z "$PASSWORD_STORE_DIR" ] && export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
# pylint # pylint
export PYLINTHOME="${XDG_CACHE_HOME}"/pylint [ -z "$PYLINTHOME" ] && export PYLINTHOME="${XDG_CACHE_HOME}"/pylint
# Python history # Python history
export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc" [ -z "$PYTHONSTARTUP" ] && export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc"
# Rustup # Rustup
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup [ -z "$RUSTUP_HOME" ] && export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
# Stack # Stack
export STACK_ROOT="$XDG_DATA_HOME"/stack [ -z "$STACK_ROOT" ] && export STACK_ROOT="$XDG_DATA_HOME"/stack
# TERMINFO # TERMINFO
export TERMINFO="$XDG_DATA_HOME"/terminfo [ -z "$TERMINFO" ] && export TERMINFO="$XDG_DATA_HOME"/terminfo
export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo [ -z "$TERMINFO_DIRS" ] && export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
# wine # wine
export WINEPREFIX="$XDG_DATA_HOME"/wine [ -z "$WINEPREFIX" ] && export WINEPREFIX="$XDG_DATA_HOME"/wine
# XCURSOR # XCURSOR
export XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons [ -z "$XCURSOR_PATH" ] && export XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons

View File

@ -15,13 +15,13 @@ if [ -d "${SHELLY}/overrides.d/programs" ]; then
done done
fi fi
. "${SHELLY}/XDG_shenanigans.sh"
if [ -d "${SHELLY}/overrides.d/XDG" ]; then if [ -d "${SHELLY}/overrides.d/XDG" ]; then
for file in "${SHELLY}"/overrides.d/XDG/*.sh ; do for file in "${SHELLY}"/overrides.d/XDG/*.sh ; do
# shellcheck disable=SC1090 # shellcheck disable=SC1090
[ -f "$file" ] && . "$file" [ -f "$file" ] && . "$file"
done done
fi fi
. "${SHELLY}/XDG_shenanigans.sh"
. "${SHELLY}/program_config.sh" . "${SHELLY}/program_config.sh"
if [ -d "${SHELLY}/overrides.d/program_config" ]; then if [ -d "${SHELLY}/overrides.d/program_config" ]; then