#!/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/environment" 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