From 7711d3d6db92143f0df463e23a7bd95744d1dea6 Mon Sep 17 00:00:00 2001 From: Robert Morrison Date: Mon, 19 Feb 2024 17:24:04 +0000 Subject: [PATCH] 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. --- Readme.md | 3 +++ XDG_shenanigans.sh | 66 +++++++++++++++++++++++----------------------- shelly.sh | 2 +- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/Readme.md b/Readme.md index 98b5773..2edcad4 100644 --- a/Readme.md +++ b/Readme.md @@ -30,6 +30,9 @@ must have the extension `.sh` to be detected. After this the XDG shenanigans are performed, again inspect the file to see what it does. 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. diff --git a/XDG_shenanigans.sh b/XDG_shenanigans.sh index 60c2a76..ed7a1bb 100644 --- a/XDG_shenanigans.sh +++ b/XDG_shenanigans.sh @@ -24,63 +24,63 @@ export XDG_STATE_HOME="$HOME"/.local/state # - I will also attempt to keep this in alphabetical order # android-studio -export ANDROID_HOME="$XDG_DATA_HOME"/android -export ANDROID_USER_HOME="$ANDROID_HOME" -export ANDROID_AVD_HOME="$ANDROID_HOME/avd" +[ -z "$ANDROID_HOME" ] && export ANDROID_HOME="$XDG_DATA_HOME"/android +[ -z "$ANDROID_USER_HOME" ] && export ANDROID_USER_HOME="$ANDROID_HOME" +[ -z "$ANDROID_AVD_HOME" ] && export ANDROID_AVD_HOME="$ANDROID_HOME/avd" # Cabal -export CABAL_CONFIG="$XDG_CONFIG_HOME"/cabal/config -export CABAL_DIR="$XDG_DATA_HOME"/cabal +[ -z "$CABAL_CONFIG" ] && export CABAL_CONFIG="$XDG_CONFIG_HOME"/cabal/config +[ -z "$CABAL_DIR" ] && export CABAL_DIR="$XDG_DATA_HOME"/cabal # cargo -export CARGO_HOME="$XDG_DATA_HOME"/cargo +[ -z "$CARGO_HOME" ] && export CARGO_HOME="$XDG_DATA_HOME"/cargo # 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? -## Provided by PORTAGE -# export DOTNET_ROOT="$HOME/.local/opt/dotnet" +[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT="$HOME/.local/opt/dotnet" # 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 -export GEM_HOME="${XDG_DATA_HOME}"/gem +[ -z "$GEM_HOME" ] && export GEM_HOME="${XDG_DATA_HOME}"/gem # GHCUP -export GHCUP_USE_XDG_DIRS=1 +[ -z "$GHCUP_USE_XDG_DIRS" ] && export GHCUP_USE_XDG_DIRS=1 # GNUPG -export GNUPGHOME="$XDG_DATA_HOME"/gnupg +[ -z "$GNUPGHOME" ] && export GNUPGHOME="$XDG_DATA_HOME"/gnupg # go -export GOPATH="$XDG_DATA_HOME"/go +[ -z "$GOPATH" ] && export GOPATH="$XDG_DATA_HOME"/go # Gradle -export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle +[ -z "$GRADLE_USER_HOME" ] && export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle # 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 -export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter +[ -z "$JUPYTER_CONFIG_DIR" ] && export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter # kde -export KDEHOME="$XDG_DATA_HOME"/kde +[ -z "$KDEHOME" ] && export KDEHOME="$XDG_DATA_HOME"/kde # Kodi -export KODI_DATA="$XDG_DATA_HOME"/kodi +[ -z "$KODI_DATA" ] && export KODI_DATA="$XDG_DATA_HOME"/kodi # Less History -export LESSHISTFILE="$XDG_CACHE_HOME"/less/history +[ -z "$LESSHISTFILE" ] && export LESSHISTFILE="$XDG_CACHE_HOME"/less/history # npm -export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc +[ -z "$NPM_CONFIG_USERCONFIG" ] && export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc # NuGet -export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages +[ -z "$NUGET_PACKAGES" ] && export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages # OPAM -export OPAMROOT="$XDG_DATA_HOME/opam" +[ -z "$OPAMROOT" ] && export OPAMROOT="$XDG_DATA_HOME/opam" # Parallel -export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel +[ -z "$PARALLEL_HOME" ] && export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel # Pass -export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass +[ -z "$PASSWORD_STORE_DIR" ] && export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass # pylint -export PYLINTHOME="${XDG_CACHE_HOME}"/pylint +[ -z "$PYLINTHOME" ] && export PYLINTHOME="${XDG_CACHE_HOME}"/pylint # Python history -export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc" +[ -z "$PYTHONSTARTUP" ] && export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc" # Rustup -export RUSTUP_HOME="$XDG_DATA_HOME"/rustup +[ -z "$RUSTUP_HOME" ] && export RUSTUP_HOME="$XDG_DATA_HOME"/rustup # Stack -export STACK_ROOT="$XDG_DATA_HOME"/stack +[ -z "$STACK_ROOT" ] && export STACK_ROOT="$XDG_DATA_HOME"/stack # TERMINFO -export TERMINFO="$XDG_DATA_HOME"/terminfo -export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo +[ -z "$TERMINFO" ] && export TERMINFO="$XDG_DATA_HOME"/terminfo +[ -z "$TERMINFO_DIRS" ] && export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo # wine -export WINEPREFIX="$XDG_DATA_HOME"/wine +[ -z "$WINEPREFIX" ] && export WINEPREFIX="$XDG_DATA_HOME"/wine # XCURSOR -export XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons +[ -z "$XCURSOR_PATH" ] && export XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons diff --git a/shelly.sh b/shelly.sh index e3de3cb..99de203 100644 --- a/shelly.sh +++ b/shelly.sh @@ -15,13 +15,13 @@ if [ -d "${SHELLY}/overrides.d/programs" ]; then done fi -. "${SHELLY}/XDG_shenanigans.sh" if [ -d "${SHELLY}/overrides.d/XDG" ]; then for file in "${SHELLY}"/overrides.d/XDG/*.sh ; do # shellcheck disable=SC1090 [ -f "$file" ] && . "$file" done fi +. "${SHELLY}/XDG_shenanigans.sh" . "${SHELLY}/program_config.sh" if [ -d "${SHELLY}/overrides.d/program_config" ]; then