shelly/XDG_shenanigans.sh
Robert Morrison 7711d3d6db
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.
2024-02-19 17:24:04 +00:00

87 lines
3.7 KiB
Bash

#!/bin/sh
###########################
# XDG shenanigans
###########################
# - The XDG basedirs standard sets out where programs should put their
# - files. Unfortunately there are programs that ignore this and just dump shit
# - inside your home directory. This SUCKS so bad.
# - Luckily you can actually configure a lot of those programs with Environment variables
# - Here I do the best I can for what I have installed. (you may want to change things here)
# - You can use the tool xdg-ninja https://github.com/b3nj5m1n/xdg-ninja to scan your home folder
# - and find things to add here.
# XDG Folders.
# - First we need to explicitly place where these folders are on our system
# - They can go anywhere (in your home directory). but these are the standard paths.
export XDG_CONFIG_HOME="$HOME"/.config
export XDG_DATA_HOME="$HOME"/.local/share
export XDG_CACHE_HOME="$HOME"/.cache
export XDG_STATE_HOME="$HOME"/.local/state
# Applications
# - This section is likely to be _VERY_ ugly looking.
# - Generally the only comment will be saying what is being moved.
# - I will also attempt to keep this in alphabetical order
# android-studio
[ -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
[ -z "$CABAL_CONFIG" ] && export CABAL_CONFIG="$XDG_CONFIG_HOME"/cabal/config
[ -z "$CABAL_DIR" ] && export CABAL_DIR="$XDG_DATA_HOME"/cabal
# cargo
[ -z "$CARGO_HOME" ] && export CARGO_HOME="$XDG_DATA_HOME"/cargo
# Cuda cache
[ -z "$CUDA_CACHE_PATH" ] && export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
# dotnet snap - this might be a me-only thing?
[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT="$HOME/.local/opt/dotnet"
# gem cache
[ -z "$GEM_SPEC_CACHE" ] && export GEM_SPEC_CACHE"${XDG_CACHE_HOME}"/gem
## Provided by PORTAGE
# gem
[ -z "$GEM_HOME" ] && export GEM_HOME="${XDG_DATA_HOME}"/gem
# GHCUP
[ -z "$GHCUP_USE_XDG_DIRS" ] && export GHCUP_USE_XDG_DIRS=1
# GNUPG
[ -z "$GNUPGHOME" ] && export GNUPGHOME="$XDG_DATA_HOME"/gnupg
# go
[ -z "$GOPATH" ] && export GOPATH="$XDG_DATA_HOME"/go
# Gradle
[ -z "$GRADLE_USER_HOME" ] && export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
# GTK 2
[ -z "$GTK2_RC_FILES" ] && export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
# jupyter
[ -z "$JUPYTER_CONFIG_DIR" ] && export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter
# kde
[ -z "$KDEHOME" ] && export KDEHOME="$XDG_DATA_HOME"/kde
# Kodi
[ -z "$KODI_DATA" ] && export KODI_DATA="$XDG_DATA_HOME"/kodi
# Less History
[ -z "$LESSHISTFILE" ] && export LESSHISTFILE="$XDG_CACHE_HOME"/less/history
# npm
[ -z "$NPM_CONFIG_USERCONFIG" ] && export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
# NuGet
[ -z "$NUGET_PACKAGES" ] && export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
# OPAM
[ -z "$OPAMROOT" ] && export OPAMROOT="$XDG_DATA_HOME/opam"
# Parallel
[ -z "$PARALLEL_HOME" ] && export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
# Pass
[ -z "$PASSWORD_STORE_DIR" ] && export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
# pylint
[ -z "$PYLINTHOME" ] && export PYLINTHOME="${XDG_CACHE_HOME}"/pylint
# Python history
[ -z "$PYTHONSTARTUP" ] && export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc"
# Rustup
[ -z "$RUSTUP_HOME" ] && export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
# Stack
[ -z "$STACK_ROOT" ] && export STACK_ROOT="$XDG_DATA_HOME"/stack
# TERMINFO
[ -z "$TERMINFO" ] && export TERMINFO="$XDG_DATA_HOME"/terminfo
[ -z "$TERMINFO_DIRS" ] && export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
# wine
[ -z "$WINEPREFIX" ] && export WINEPREFIX="$XDG_DATA_HOME"/wine
# XCURSOR
[ -z "$XCURSOR_PATH" ] && export XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons