Add basic XDG compliant sh architecture
The only file left in $HOME is .zshenv, which sets up zsh to source everything from XDG_CONFIG_HOME/zsh.
Shell files are split into sh and zsh directories, for global assignments (which should be posix compliant, work on any posix shell) like environemnt variables, xdg vars, and global aliases. zsh contains zsh specific customization (prompt customization, plugin loading, zsh completions).
Zsh initialization will pull from sh directory first, loading the respective mirror to its startup file (`.zprofile` loads `sh/profile` and `profile.d/*`, `.zshenv` loads `sh/env` and `sh/env.d/*` and `zsh/env.d/*`, `.zshrc` loads `sh/alias`, `sh/alias.d/*` and `zsh/alias.d/*`)
Once all is done, it will have loaded both global variables, aliases and settings, and zsh-only specifications. Other stow modules, if they want to add shell functionality, can include their aliases and functions in one of the above directories to automatically be picked up by zsh.
2020-02-02 15:08:40 +00:00
|
|
|
#!/usr/bin/env sh
|
|
|
|
# XDG Base Directory Specification
|
|
|
|
#
|
|
|
|
# Sets up necessary environment variables for XDG convention,
|
|
|
|
# and those that applications obey for their environments.
|
|
|
|
#
|
|
|
|
# Thank you remeberYou for the idea
|
|
|
|
# see: https://github.com/rememberYou/dotfiles/blob/master/sh/.config/sh/xdg
|
|
|
|
#
|
|
|
|
# Additionally, home directories are set using the XDG specification,
|
|
|
|
# if the xdg-user-dirs module is enabled.
|
|
|
|
#
|
|
|
|
# Shellcheck will complain about setting permissions for the directories
|
|
|
|
# unless it is ignored https://github.com/koalaman/shellcheck/wiki/SC2174
|
|
|
|
# shellcheck disable=SC2174
|
|
|
|
|
|
|
|
# http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
|
|
|
test "$XDG_CACHE_HOME" || export XDG_CACHE_HOME="$HOME/.cache"
|
|
|
|
test "$XDG_CONFIG_HOME" || export XDG_CONFIG_HOME="$HOME/.config"
|
|
|
|
test "$XDG_DATA_HOME" || export XDG_DATA_HOME="$HOME/.local/share"
|
|
|
|
|
|
|
|
## Non-Standard additions
|
|
|
|
# non-standard, is added to path to enable execution of any files herein
|
|
|
|
test "$XDG_BIN_HOME" || export XDG_BIN_HOME="$HOME/.local/bin"
|
|
|
|
|
|
|
|
## ensure directories exist
|
|
|
|
test -d "$XDG_BIN_HOME" || mkdir -p -m 0700 "$XDG_BIN_HOME"
|
|
|
|
test -d "$XDG_CACHE_HOME" || mkdir -p -m 0700 "$XDG_CACHE_HOME"
|
|
|
|
test -d "$XDG_CONFIG_HOME" || mkdir -p -m 0700 "$XDG_CONFIG_HOME"
|
|
|
|
test -d "$XDG_DATA_HOME" || mkdir -p -m 0700 "$XDG_DATA_HOME"
|
|
|
|
|
|
|
|
## Applications that can be set through environment variables
|
2020-02-06 19:30:35 +00:00
|
|
|
export NVM_DIR="$XDG_DATA_HOME/nvm"
|
|
|
|
export TMUX_PLUGIN_MANAGER_PATH="$XDG_DATA_HOME/tmux"
|
Add basic XDG compliant sh architecture
The only file left in $HOME is .zshenv, which sets up zsh to source everything from XDG_CONFIG_HOME/zsh.
Shell files are split into sh and zsh directories, for global assignments (which should be posix compliant, work on any posix shell) like environemnt variables, xdg vars, and global aliases. zsh contains zsh specific customization (prompt customization, plugin loading, zsh completions).
Zsh initialization will pull from sh directory first, loading the respective mirror to its startup file (`.zprofile` loads `sh/profile` and `profile.d/*`, `.zshenv` loads `sh/env` and `sh/env.d/*` and `zsh/env.d/*`, `.zshrc` loads `sh/alias`, `sh/alias.d/*` and `zsh/alias.d/*`)
Once all is done, it will have loaded both global variables, aliases and settings, and zsh-only specifications. Other stow modules, if they want to add shell functionality, can include their aliases and functions in one of the above directories to automatically be picked up by zsh.
2020-02-02 15:08:40 +00:00
|
|
|
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|