mirror of https://gitlab.com/dabruh/dotfiles.git
120 lines
3.1 KiB
Bash
120 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Default programs:
|
|
export BROWSER=firefox
|
|
export EDITOR=vim
|
|
export FILE=ranger
|
|
export IMAGES=feh
|
|
export PAGER=less
|
|
export TERMINAL=kitty
|
|
export VISUAL=code
|
|
|
|
# Misc vars
|
|
export CHROME_EXECUTABLE=chromium # For Flutter
|
|
|
|
# Set XDG directories:
|
|
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}"
|
|
|
|
# Clean home:
|
|
export ANDROID_HOME="$XDG_DATA_HOME/Android/Sdk"
|
|
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
|
export KREW_ROOT="$XDG_DATA_HOME/krew"
|
|
export FLUTTER_HOME="$XDG_DATA_HOME/flutter"
|
|
export GOPATH="$XDG_DATA_HOME/go"
|
|
export HISTFILE="$XDG_DATA_HOME/history"
|
|
export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
|
|
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
|
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
|
|
export NUGET_PACKAGES="$XDG_DATA_HOME/nuget"
|
|
|
|
# Color man pages:
|
|
export LESS=-r
|
|
export LESS_TERMCAP_mb=$'\E[01;32m'
|
|
export LESS_TERMCAP_md=$'\E[01;32m'
|
|
export LESS_TERMCAP_me=$'\E[0m'
|
|
export LESS_TERMCAP_se=$'\E[0m'
|
|
export LESS_TERMCAP_so=$'\E[01;47;34m'
|
|
export LESS_TERMCAP_ue=$'\E[0m'
|
|
export LESS_TERMCAP_us=$'\E[01;36m'
|
|
|
|
# Other program settings:
|
|
export DISPLAY_DPI=96
|
|
|
|
# Remove an entry from PATH
|
|
rm_path_entry() {
|
|
local shell="${SHELL##*/}" rm_entry="${1:?Entry not set}" new_path path_arr
|
|
|
|
if [[ "$shell" == "zsh" ]]; then
|
|
IFS=" " read -A path_arr <<<"${PATH//:/ }"
|
|
else
|
|
IFS=" " read -a path_arr <<<"${PATH//:/ }"
|
|
fi
|
|
|
|
for path_entry in "${path_arr[@]}"; do
|
|
grep -Eq "^$rm_entry$" <<<"$path_entry" && continue
|
|
new_path="$new_path:$path_entry"
|
|
done
|
|
|
|
PATH="${new_path#:}"
|
|
}
|
|
|
|
# Remove one or more entries from PATH
|
|
rm_path_entries() {
|
|
local rm_entry
|
|
|
|
for rm_entry in "$@"; do
|
|
rm_path_entry "$rm_entry"
|
|
done
|
|
}
|
|
|
|
# Prepend one or more entries to PATH.
|
|
# The order of the supplied args will be kept, e.g. PATH="$1:$2:$PATH"
|
|
prepend_path_with_entries() {
|
|
local addl_paths entry
|
|
|
|
for entry in "$@"; do
|
|
! [ -d "$entry" ] && continue
|
|
addl_paths="$addl_paths:$entry"
|
|
done
|
|
|
|
PATH="${addl_paths#:}:$PATH"
|
|
}
|
|
|
|
# Append one or more entries to PATH.
|
|
# The order of the supplied args will be kept, e.g. PATH="$PATH:$1:$2"
|
|
append_path_with_entries() {
|
|
local addl_paths entry
|
|
|
|
for entry in "$@"; do
|
|
! [ -d "$entry" ] && continue
|
|
addl_paths="$addl_paths:$entry"
|
|
done
|
|
|
|
PATH="$PATH:${addl_paths#:}"
|
|
}
|
|
|
|
prepend_paths=(
|
|
"$HOME/.local/bin"
|
|
"$HOME/.cargo/bin"
|
|
"$FLUTTER_HOME/bin"
|
|
"$GOPATH/bin"
|
|
"$KREW_ROOT/bin"
|
|
)
|
|
append_paths=()
|
|
|
|
HOMEBREW_PREFIX="$XDG_DATA_HOME/homebrew"
|
|
if [ -x "$HOMEBREW_PREFIX/bin/brew" ]; then
|
|
eval "$("$HOMEBREW_PREFIX/bin/brew" shellenv)"
|
|
prepend_paths+=("$HOMEBREW_PREFIX/bin" "$HOMEBREW_PREFIX/sbin")
|
|
fi
|
|
|
|
rm_path_entries "${prepend_paths[@]}" "${append_paths[@]}" # Ensure we clean up first
|
|
prepend_path_with_entries "${prepend_paths[@]}"
|
|
append_path_with_entries "${append_paths[@]}"
|
|
|
|
# Add the profile-extras file yourself if you wish to override anything:
|
|
PROFILE_EXTRAS="$XDG_CONFIG_HOME/shell/profile-extras"
|
|
[ -f "$PROFILE_EXTRAS" ] && . "$PROFILE_EXTRAS"
|