Environment
System wide
Load user environment from profile
#+begin_src sh :tangle (if noninteractive "no" "/sudo::/etc/profile.d/env.sh") # User specified environment if [ -d ~/.config/environment.d ]; then for rc in ~/.config/environment.d/*; do if [ -f "$rc" ]; then . "$rc" fi done fi unset rc
Environment.d
Systemd’s environment.d(5) will read all variables from
~/.config/environment.d/*.conf
. This section writes variables to that file.
Define XDG Home dirs
Make sure the XDG_
variables are set:
XDG_DATA_HOME="$HOME/.local/share" XDG_CONFIG_HOME="$HOME/.config" XDG_CACHE_HOME="$HOME/.cache"
Extend $PATH
PATH="$HOME/.local/bin":$PATH
Default tools
Editor
Emacs is the $EDITOR
.
EDITOR="emacsclient"
Terminal
Set the preferred terminal emulator.
TERMINAL=/usr/bin/alacritty
Zsh
Make zsh find it’s RC files. Although zsh will not find the environments file automagically.
ZDOTDIR="$XDG_CONFIG_HOME/zsh"
Tools
Docker
DOCKER_CONFIG="$XDG_CONFIG_HOME/docker" MACHINE_STORAGE_PATH="$XDG_DATA_HOME/docker-machine"
Golang
GOPATH="$XDG_DATA_HOME/go"
And add it to the PATH
.
PATH=$GOPATH/bin:$PATH
Rust
CARGO_HOME="$XDG_DATA_HOME/cargo"
And add it to the PATH
.
PATH=$CARGO_HOME/bin:$PATH
- Rustup
RUSTUP_HOME="$XDG_CONFIG_HOME/rustup"
Yarn
Add Yarn bin dir to PATH
.
command -v yarn > /dev/null && export PATH=$(yarn global bin):$PATH
GnuPG
GNUPGHOME="$XDG_DATA_HOME/gnupg"
Gem
No longer needed, because mise
handles that.
GEM_HOME="${XDG_DATA_HOME}"/gem GEM_SPEC_CACHE="$XDG_CACHE_HOME/gem"
IRB ruby
IRBRC="$XDG_CONFIG_HOME/irb/irbrc"
Bundler ruby
BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME/bundle" BUNDLE_USER_CACHE="$XDG_CACHE_HOME/bundle" BUNDLE_USER_PLUGIN="$XDG_DATA_HOME/bundle" BUNDLE_PATH="vendor/bundle"
Solargraph
SOLARGRAPH_CACHE="$XDG_CACHE_HOME/solargraph"
Less
LESSKEY="$XDG_CONFIG_HOME/less/lesskey" LESSHISTFILE="$XDG_CACHE_HOME/less/history"
Vim
VIMINIT="set viminfo+='1000,n$XDG_DATA_HOME/vim/viminfo'"
PostgreSQL
PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc" PSQL_HISTORY="$XDG_CACHE_HOME/pg/psql_history" PGPASSFILE="$XDG_CONFIG_HOME/pg/pgpass" #PGSERVICEFILE="$XDG_CONFIG_HOME/pg/pg_service.conf"
Asdf
asdf
is used by the gitlab-development-kit.
ASDF_CONFIG_FILE="$XDG_CONFIG_HOME/asdf/asdfrc" ASDF_DATA_DIR="$XDG_DATA_HOME/asdf"
Ansible
ANSIBLE_HOME="$XDG_DATA_HOME/ansible"
Lolcommits
Tell lolcommits which device to use: HD Pro Webcam C920.
Check which devices are available with:
v4l2-ctl --list-devices
LOLCOMMITS_DEVICE=$(v4l2-ctl --list-devices | grep -A1 C920 | tail -n1 | tr -d "\s\t")
Qt & KDE
Make sure the icons are shown:
[ "$XDG_CURRENT_DESKTOP" = "KDE" ] || [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] || export QT_QPA_PLATFORMTHEME="qt5ct"
And that they are not too big:
#XDG_CURRENT_DESKTOP=KDE KDE_SESSION_VERSION=5 QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_FONT_DPI=120
Password store
Encrypt the passwords in password store ASCII armored.
PASSWORD_STORE_GPG_OPTS=--armor
Notmuch
Locate notmuch
config:
NOTMUCH_CONFIG=$XDG_CONFIG_HOME/notmuch/config
Wayland
From: https://github.com/swaywm/sway/issues/5008#issuecomment-665972776
# Needed for xdg-desktop-portal XDG_CURRENT_DESKTOP=sway
# this may fix external monitor problem WLR_DRM_NO_MODIFIERS=1 # force wayland backend for bemenu BEMENU_BACKEND=wayland # Force Wayland backend for qt5 apps QT_QPA_PLATFORM=wayland QT_WAYLAND_DISABLE_WINDOWDECORATION=1 # general XDG_SESSION_TYPE=wayland
Firefox
Force Firefox to use Wayland.
MOZ_DBUS_REMOTE=1 MOZ_ENABLE_WAYLAND=1