68 lines
1.5 KiB
Bash
68 lines
1.5 KiB
Bash
function remove_from_path() {
|
|
local a
|
|
local p
|
|
local s
|
|
local r
|
|
eval "p=\$$1"
|
|
a=( ${(s/:/)p} )
|
|
if [[ ${a[(i)${2}]} -gt ${#a} ]] && return
|
|
for s in $a; do
|
|
if [[ ! $s == $2 ]]; then
|
|
[[ -z "$r" ]] && r=$s || r="$r:$s"
|
|
fi
|
|
done
|
|
eval $1="$r"
|
|
}
|
|
|
|
function prepend_path() {
|
|
[[ ! -d "$2" ]] && return
|
|
local p
|
|
remove_from_path "$1" "$2"
|
|
eval "p=\$$1"
|
|
eval export $1="$2:$p"
|
|
}
|
|
|
|
function append_path() {
|
|
[[ ! -d "$2" ]] && return
|
|
local p
|
|
remove_from_path "$1" "$2"
|
|
eval "p=\$$1"
|
|
eval export $1="$p:$2"
|
|
}
|
|
|
|
export EDITOR=nvim
|
|
export VISUAL=nvim
|
|
export READER=mupdf
|
|
|
|
export XDG_CONFIG_HOME="${HOME}/.config"
|
|
export XDG_CACHE_HOME="${HOME}/.cache"
|
|
export XDG_DATA_HOME="${HOME}/.local/share"
|
|
export XDG_STATE_HOME="${HOME}/.local/state"
|
|
export XDG_RUNTIME_DIR=/tmp
|
|
|
|
export GOPATH="$HOME/go"
|
|
export GOBIN="$GOPATH/bin"
|
|
|
|
# OS-specific exports
|
|
if [[ $(uname) == "Darwin" ]]; then
|
|
export JAVA_HOME=$(/usr/libexec/java_home)
|
|
export GEM_HOME=$HOME/.gem
|
|
prepend_path PATH "/opt/homebrew/bin"
|
|
prepend_path PATH "/opt/homebrew/opt/texlive/bin"
|
|
append_path PATH $GEM_HOME/bin
|
|
fi
|
|
|
|
#BOTH
|
|
append_path PATH "/usr/sbin:/sbin"
|
|
append_path PATH "$HOME/.local/share/nvim/mason/bin"
|
|
append_path PATH "$HOME/.local/bin"
|
|
append_path PATH "$HOME/go/bin"
|
|
append_path PATH "$HOME/.ghcup/bin"
|
|
append_path PATH "$HOME/.cabal/bin"
|
|
append_path PATH "$HOME/.cargo/bin"
|
|
for bindir in ~/opt/*/bin(N); do
|
|
if [[ -d "$bindir" ]]; then
|
|
prepend_path PATH "$bindir"
|
|
fi
|
|
done
|
|
|