mirror of
https://github.com/gaschz/dotfiles.git
synced 2025-06-06 18:08:31 +02:00
170 lines
5.4 KiB
Bash
170 lines
5.4 KiB
Bash
#!/bin/sh
|
|
|
|
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
##
|
|
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
## Not so invasive because it only assigns a value if it is empty.
|
|
: "${HOME:=$(cd ~ && pwd)}"
|
|
: "${USER:=$(id -un || printf %s "${HOME##*/}")}"
|
|
: "${UID:=$(id -u || awk -F ":" -v user="$USER" '/^user:/{print $3}' \
|
|
/etc/passwd)}"
|
|
: "${HOSTNAME:=$(hostname)}"
|
|
export HOME USER UID HOSTNAME
|
|
|
|
## Set XDG_*_HOME variables.
|
|
XDG_CONFIG_HOME="$HOME/.config"
|
|
XDG_CACHE_HOME="$HOME/.cache"
|
|
XDG_DATA_HOME="$HOME/.local/share"
|
|
XDG_STATE_HOME="$HOME/.local/state"
|
|
export XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_STATE_HOME
|
|
mkdir -p \
|
|
"$XDG_CONFIG_HOME" "$XDG_CACHE_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME"
|
|
## Set XDG_*_DIR variables.
|
|
eval "$(grep "^[ ]*XDG_[A-Z].*_DIR=" "$XDG_CONFIG_HOME/user-dirs.dirs" |
|
|
sed "s/^/export /")"
|
|
|
|
## Set directory to be used for coding.
|
|
CODEDIR="$HOME/src"
|
|
export CODEDIR
|
|
|
|
## Set shell configuration directories.
|
|
SHDIR="$XDG_CONFIG_HOME/sh"
|
|
BASHDIR="$XDG_CONFIG_HOME/bash"
|
|
ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
|
export SHDIR BASHDIR ZDOTDIR
|
|
|
|
## Set general variables.
|
|
PATH="$HOME/bin:$HOME/.local/bin/$HOSTNAME:$HOME/.local/bin"
|
|
PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
PATH="$PATH:/usr/local/games:/usr/games"
|
|
INFOPATH="$HOME/.local/share/info:/usr/local/share/info:/usr/local/info"
|
|
INFOPATH="$INFOPATH:/usr/share/info:/usr/info"
|
|
MANPATH="$HOME/.local/share/man:/usr/local/man:/usr/local/share/man"
|
|
MANPATH="$MANPATH:/usr/X11R6/man:/opt/man:/snap/man:/usr/man:/usr/share/man"
|
|
ENV="$SHDIR/shrc"
|
|
BASH_ENV="$BASHDIR/bash_env"
|
|
TMPDIR="/tmp"
|
|
LANG="en_US.UTF-8"
|
|
LANGUAGE="${LANG%.*}"
|
|
LC_ALL="$LANG"
|
|
GNUPGHOME="$HOME/.gnupg"
|
|
export PATH INFOPATH MANPATH ENV TMPDIR LANG LANGUAGE LC_ALL GNUPGHOME
|
|
|
|
## Set interactive shell variables.
|
|
HISTSIZE=10000
|
|
EDITOR="$(has -s vim vim.tiny vi)"
|
|
test -n "$EDITOR" && VISUAL="$EDITOR"
|
|
TERMINAL="x-terminal-emulator"
|
|
BROWSER="chromium"
|
|
PAGER="less"
|
|
LESS="FRq#10"
|
|
GPG_TTY="$(tty)"
|
|
BLOCKSIZE="K"
|
|
RSYNC_RSH="ssh -ax"
|
|
SYSTEMD_PAGER=""
|
|
if test -s /rw/config/gpg-split-domain; then
|
|
read -r QUBES_GPG_DOMAIN < /rw/config/gpg-split-domain
|
|
else
|
|
QUBES_GPG_DOMAIN="@default"
|
|
fi
|
|
export HISTSIZE EDITOR VISUAL TERMINAL BROWSER PAGER LESS GPG_TTY BLOCKSIZE
|
|
export RSYNC_RSH SYSTEMD_PAGER QUBES_GPG_DOMAIN
|
|
|
|
if has fd; then
|
|
FZF_DEFAULT_COMMAND='fd --type=f --hidden --exclude=.git'
|
|
elif has fdind; then
|
|
FZF_DEFAULT_COMMAND='fdfind --type=f --hidden --exclude=.git'
|
|
fi
|
|
FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
|
FZF_TMUX=1
|
|
export FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS FZF_TMUX
|
|
|
|
## 'vim.tiny' and 'vi' fails if VIMINIT is set to our vimrc.
|
|
if has vim; then
|
|
if test -f "$XDG_CONFIG_HOME/vim/vimrc"; then
|
|
# shellcheck disable=SC2016,SC2089
|
|
VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | so $MYVIMRC'
|
|
# shellcheck disable=SC2090
|
|
export VIMINIT
|
|
fi
|
|
fi
|
|
|
|
## XDG_CONFIG_HOME: user-specific configuration files
|
|
GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
|
|
KDEHOME="$XDG_CONFIG_HOME/kde"
|
|
INPUTRC="$BASHDIR/inputrc"
|
|
if has less; then
|
|
lesskey_src=0
|
|
less_version="$(less -V | awk -F '[ .]' 'NR==1 {print $2}')"
|
|
case "${less_version}" in
|
|
""|*[!0-9]*) ;;
|
|
*) if test "${less_version}" -ge 582; then lesskey_src=1; fi;;
|
|
esac
|
|
if test "${lesskey_src}" = "1"; then
|
|
LESSKEY="$XDG_CONFIG_HOME/less/lesskey"
|
|
elif has lesskey; then
|
|
LESSKEY="$XDG_CONFIG_HOME/less/lesskey-old"
|
|
lesskey -o "$LESSKEY" "$XDG_CONFIG_HOME/less/lesskey"
|
|
fi
|
|
unset lesskey_src less_version
|
|
fi
|
|
export GTK2_RC_FILES KDEHOME INPUTRC LESSKEY
|
|
|
|
## XDG_DATA_HOME: user-specific data files
|
|
RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
|
CARGO_HOME="$XDG_DATA_HOME/cargo"
|
|
GOPATH="$XDG_DATA_HOME/go"
|
|
WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
|
ELECTRUMDIR="$XDG_DATA_HOME/electrum"
|
|
TERMINFO="$XDG_DATA_HOME/terminfo"
|
|
export RUSTUP_HOME CARGO_HOME GOPATH WORKON_HOME ELECTRUMDIR TERMINFO
|
|
|
|
## XDG_STATE_HOME: user-specific state files, persists application restarts
|
|
LESSHISTFILE="$XDG_STATE_HOME/history-less"
|
|
HISTFILE="$XDG_STATE_HOME/history-shell"
|
|
export LESSHISTFILE HISTFILE
|
|
|
|
## XDG_CACHE_HOME: user-specific non-essential data files
|
|
GOCACHE="$XDG_CACHE_HOME/go-build"
|
|
GOMODCACHE="$XDG_CACHE_HOME/go/mod"
|
|
export GOCACHE GOMODCACHE
|
|
|
|
## Start agents
|
|
ssh_agent_dir="$TMPDIR/ssh-agent-$USER"
|
|
ssh_agent_sock="$ssh_agent_dir/agent.sock"
|
|
ssh_agent_pid="$ssh_agent_dir/agent.pid"
|
|
if test -z "${SSH_AUTH_SOCK-}" && has ssh-agent; then
|
|
test -d "$ssh_agent_dir" || mkdir -p "$ssh_agent_dir"
|
|
if test -S "$ssh_agent_sock" &&
|
|
test -r "$ssh_agent_sock" &&
|
|
test -w "$ssh_agent_sock" &&
|
|
test -f "$ssh_agent_pid" &&
|
|
test -r "$ssh_agent_pid" &&
|
|
test -s "$ssh_agent_pid"
|
|
then
|
|
SSH_AUTH_SOCK="$ssh_agent_sock"
|
|
read -r SSH_AGENT_PID < "$ssh_agent_pid"
|
|
export SSH_AUTH_SOCK SSH_AGENT_PID
|
|
else
|
|
rm -f "$ssh_agent_sock" "$ssh_agent_pid"
|
|
eval "$(ssh-agent -s -a "$ssh_agent_sock")" >/dev/null
|
|
echo "$SSH_AGENT_PID" | tee "$ssh_agent_pid" >/dev/null
|
|
fi
|
|
fi
|
|
unset ssh_agent_dir ssh_agent_sock ssh_agent_pid
|
|
|
|
## Zsh sources this shell profile before no_nomatch is set in zshrc, thus
|
|
## fails with "no matches found" when the glob can't be expanded.
|
|
if test -n "${ZSH_VERSION:-}"; then
|
|
setopt no_nomatch
|
|
fi
|
|
for f in "$XDG_CONFIG_HOME/sh/profile.d"/*.sh; do
|
|
# shellcheck disable=SC1090,SC1091
|
|
! test -r "$f" || . "$f"
|
|
done
|
|
|
|
## Source local profile.
|
|
# shellcheck disable=SC1090,SC1091
|
|
! test -r "$HOME/.profile.local" || . "$HOME/.profile.local"
|