Skip to content

Instantly share code, notes, and snippets.

@AfroThundr3007730
Last active March 30, 2024 23:20
Show Gist options
  • Save AfroThundr3007730/6d22462d3c1b468945d729061b47b051 to your computer and use it in GitHub Desktop.
Save AfroThundr3007730/6d22462d3c1b468945d729061b47b051 to your computer and use it in GitHub Desktop.
Profile snippet to redirect $HOME clutter to the proper XDG directory
#!/bin/sh
#/etc/profile.d/xdg_dirs.sh
# SPDX-License-Identifier: GPL-3.0-or-later
###############################################################################
# XDG variables
###############################################################################
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-${HOME}/.cache}"
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${HOME}/.config}"
export XDG_DATA_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}"
export XDG_STATE_HOME="${XDG_STATE_HOME:-${HOME}/.local/state}"
###############################################################################
# XDG workarounds
###############################################################################
# Rust
export CARGO_HOME="${XDG_DATA_HOME}/cargo"
export RUST_HOME="${XDG_DATA_HOME}/rustup"
# Go
export GOPATH="${XDG_DATA_HOME}/go"
# Python
export PYTHONSTARTUP=/etc/pythonrc
export PYENV_ROOT="${XDG_DATA_HOME}/pyenv"
export PYLINTHOME="${XDG_CACHE_HOME}/pylint"
# Ruby
export GEM_HOME="${XDG_DATA_HOME}/gem"
export GEM_SPEC_CACHE="${GEM_HOME}/specs"
# NodeJS
export NPM_CONFIG_USERCONFIG="${XDG_CONFIG_HOME}/npm/npmrc"
export NPM_PACKAGES="${HOME}/.local"
export NODE_PATH="${NPM_PACKAGES}/lib/node_modules:${NODE_PATH:-}"
export npm_config_cache="${XDG_CACHE_HOME}/npm"
# Vim
export VIMINIT="if filereadable('${XDG_CONFIG_HOME}/vim/vimrc') | source ${XDG_CONFIG_HOME}/vim/vimrc | endif"
# General
export ANDROID_HOME="${XDG_DATA_HOME}/android"
export AWS_CONFIG_FILE="${XDG_CONFIG_HOME}/aws/config"
export AWS_SHARED_CREDENTIALS_FILE="${XDG_CONFIG_HOME}/aws/credentials"
export DOCKER_CONFIG="${XDG_CONFIG_HOME}/docker"
export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
export GRADLE_USER_HOME="${XDG_DATA_HOME}/gradle"
export GTK2_RC_FILES="${XDG_CONFIG_HOME}/gtk-2.0/gtkrc"
export INPUTRC="${XDG_CONFIG_HOME}/inputrc"
export IPYTHONDIR="${XDG_CONFIG_HOME}/ipython"
export LESSHISTFILE="${XDG_STATE_HOME}/lesshst"
export LESSKEY="${XDG_CONFIG_HOME}/lesskey"
export MINIKUBE_HOME="${XDG_DATA_HOME}"
export NODE_REPL_HISTORY="${XDG_STATE_HOME}/node_repl_history"
export WGETRC="${XDG_CONFIG_HOME}/wgetrc"
export ZDOTDIR="${XDG_CONFIG_HOME}/zsh"
# History
[ -n "${BASH_VERSION:-}" ] && export HISTFILE="${XDG_STATE_HOME}/bash/history"
[ -n "${ZSH_VERSION:-}" ] && export HISTFILE="${XDG_STATE_HOME}/zsh/history"
return 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment