144 lines
3.9 KiB
Bash
144 lines
3.9 KiB
Bash
#!/usr/bin/env sh
|
|
|
|
#
|
|
# Shell common environment variables and functions (BusyBox compatible)
|
|
#
|
|
|
|
# Favourite commands
|
|
export PAGER=less
|
|
export EDITOR=nvim
|
|
export VISUAL=nvim
|
|
export BROWSER=qutebrowser
|
|
|
|
direnv() { # environment variable name, path
|
|
export "$1"="$2"
|
|
mkdir -p "$2"
|
|
}
|
|
|
|
# Program-specific
|
|
|
|
export JAVA_FONTS=/usr/share/fonts/TTF # 2019-04-25 Attempt to remove .java/fonts remove if it didn't work
|
|
# export ANDROID_HOME=/opt/android-sdk
|
|
# export ARDUINO=/usr/share/arduino
|
|
# export ARDUINO_DIR=$ARDUINO
|
|
# export ARDMK_VENDOR=archlinux-arduino
|
|
|
|
# Get out of my $HOME!
|
|
export BOOT9_PATH="$HOME/.local/share/citra-emu/sysdata/boot9.bin"
|
|
direnv CARGOHOME "$HOME/.cache/cargo" # There are config in there that we can version if one want
|
|
export CCACHE_CONFIGPATH="$HOME/.config/ccache.conf"
|
|
direnv CCACHE_DIR "$HOME/.cache/ccache" # The config file alone seems to be not enough
|
|
direnv DASHT_DOCSETS_DIR "$HOME/.cache/dash_docsets"
|
|
direnv GNUPGHOME "$HOME/.config/gnupg"
|
|
direnv GOPATH "$HOME/.cache/go"
|
|
direnv GRADLE_USER_HOME "$HOME/.cache/gradle"
|
|
export INPUTRC="$HOME/.config/inputrc"
|
|
export LESSHISTFILE="$HOME/.cache/lesshst"
|
|
direnv MIX_ARCHIVES "$HOME/.cache/mix/archives"
|
|
direnv MONO_GAC_PREFIX "$HOME/.cache/mono"
|
|
export NODE_REPL_HISTORY="$HOME/.cache/node_repl_history"
|
|
direnv npm_config_cache "$HOME/.cache/npm"
|
|
direnv PARALLEL_HOME "$HOME/.cache/parallel"
|
|
export PYTHONSTARTUP="$HOME/.config/pythonstartup.py"
|
|
export SCREENRC="$HOME/.config/screenrc"
|
|
export SQLITE_HISTFILE="$HOME/.cache/sqlite_history"
|
|
direnv TERMINFO "$HOME/.config/terminfo"
|
|
export RXVT_SOCKET="$HOME/.cache/urxvtd-$HOST"
|
|
export VIMINIT="source $HOME/.config/vim/loader.vim"
|
|
direnv WINEPREFIX "$HOME/.cache/wineprefix/default"
|
|
direnv YARN_CACHE_FOLDER "$HOME/.cache/yarn"
|
|
export YARN_DISABLE_SELF_UPDATE_CHECK=true # This also disable the creation of a ~/.yarnrc file
|
|
# Disabled since this causes lockups with DMs
|
|
# export XAUTHORITY="$HOME/.config/Xauthority"
|
|
|
|
# And for the rest, see aliases
|
|
direnv JUNKHOME "$HOME/.cache/junkhome"
|
|
|
|
# For software that did not understand that XDG variables have defaults
|
|
direnv XDG_DATA_HOME "$HOME/.local/share"
|
|
direnv XDG_CONFIG_HOME "$HOME/.config"
|
|
export XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
|
|
export XDG_CONFIG_DIRS="/etc/xdg"
|
|
direnv XDG_CACHE_HOME "$HOME/.cache"
|
|
# Please don't set XDG_RUNTIME_DIR as it
|
|
# screw with user daemons such as PulseAudio
|
|
|
|
# Path
|
|
|
|
# Function stolen from Arch Linux /etc/profile
|
|
appendpath() {
|
|
if [ ! -d "$1" ]; then
|
|
return
|
|
fi
|
|
case ":$PATH:" in
|
|
*:"$1":*) ;;
|
|
|
|
*)
|
|
export PATH="${PATH:+$PATH:}$1"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
prependpath() {
|
|
if [ ! -d "$1" ]; then
|
|
return
|
|
fi
|
|
case ":$PATH:" in
|
|
*:"$1":*) ;;
|
|
|
|
*)
|
|
export PATH="$1${PATH:+:$PATH}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
prependpath '/usr/lib/ccache/bin'
|
|
prependpath "${GOPATH}/bin"
|
|
prependpath "$HOME/.local/bin"
|
|
prependpath "$HOME/.config/scripts"
|
|
|
|
# If running on termux, load those extra scripts
|
|
[ -d /data/data/com.termux/ ] && (
|
|
prependpath "$HOME/.termux/scripts"
|
|
prependpath "$HOME/.termux/bin"
|
|
)
|
|
|
|
# For superseding commands with better ones if they are present
|
|
|
|
# SSH Agent
|
|
|
|
|
|
# If GPG agent is configured for SSH
|
|
if grep -q ^enable-ssh-support$ $GNUPGHOME/gpg-agent.conf 2> /dev/null
|
|
then
|
|
# Load GPG agent
|
|
unset SSH_AGENT_PID
|
|
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
|
|
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
|
|
fi
|
|
|
|
else
|
|
# Start regular SSH agent if not already started
|
|
SSH_ENV="$HOME/.ssh/agent"
|
|
|
|
start_agent() {
|
|
ssh-agent > "${SSH_ENV}"
|
|
chmod 600 "${SSH_ENV}"
|
|
. "${SSH_ENV}" > /dev/null
|
|
}
|
|
|
|
if [ -f "${SSH_ENV}" ]
|
|
then
|
|
. "${SSH_ENV}" > /dev/null
|
|
if [ ! -d "/proc/${SSH_AGENT_PID}" ] || [ "$(cat "/proc/${SSH_AGENT_PID}/comm")" != "ssh-agent" ]
|
|
then
|
|
start_agent
|
|
fi
|
|
else
|
|
start_agent
|
|
fi
|
|
fi
|
|
|
|
# TODO Service sytem that works without systemd,
|
|
# and can stop processes on logout
|