1
0
mirror of https://github.com/frebib/dotfiles.git synced 2024-06-14 12:57:23 +00:00

systemd: replace profile.service with systemd-environment.d generator

This moves loading of the environment variables out of the normal
service startup flow and has systemd load the variables early.
Shim ZSH to load the environment.d configuration when running without
systemd.

Signed-off-by: Joe Groocock <me@frebib.net>
This commit is contained in:
Joe Groocock 2020-08-11 11:45:48 +01:00
parent 322adb478a
commit 521f462141
Signed by: frebib
GPG Key ID: E0B16BEACFBB6A86
12 changed files with 48 additions and 81 deletions

View File

@ -4,7 +4,8 @@
To get started, clone this repo and link the relevant files/directories To get started, clone this repo and link the relevant files/directories
```shell ```shell
git clone https://github.com/frebib/dotfiles.git ~/.config/dotfiles git clone https://github.com/frebib/dotfiles.git ~/.config
ln -sfv .config/dotfiles/* .config/ ln -sfv .config/zsh/.zshenv ~
ln -sfv .config/dotfiles/profile .zprofile # if it is not already "enabled", make sure the systemd-environment.d generator is active
sudo ln -sfv /lib/systemd/user-environment-generators/30-systemd-environment-d-generator /lib/systemd/user-generators/
``` ```

View File

@ -0,0 +1,34 @@
LC_ALL="en_GB.UTF-8"
LANG="en_GB.UTF-8"
LC_NUMERIC="en_GB"
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
EDITOR="vim"
VISUAL="vim"
# Override paths for non-compliant programs
# https://wiki.archlinux.org/index.php/XDG_Base_Directory_support
ADOTDIR="$XDG_DATA_HOME/zsh/antigen"
CARGO_HOME="$XDG_DATA_HOME/cargo"
GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
GOPATH="$XDG_DATA_HOME/go"
NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
#PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
PYTHONHISTFILE="$XDG_DATA_HOME/python/histfile"
RUSTUP_HOME="$XDG_DATA_HOME/rustup"
TERMINFO="$XDG_DATA_HOME/terminfo"
TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo"
VIMDIR="$XDG_CONFIG_HOME/vim"
VIMRC="$VIMDIR/vimrc"
VIMINIT=":so $VIMRC"
WEECHAT_HOME="$XDG_CONFIG_HOME/weechat"
XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
ZDOTDIR="$XDG_CONFIG_HOME/zsh"
PATH="${PATH}:/sbin:/usr/sbin:${XDG_CONFIG_HOME}/scripts:${GOPATH}/bin"
# vim: ft=sh

56
profile
View File

@ -1,56 +0,0 @@
export LC_ALL=en_GB.UTF-8
export LANG=en_GB.UTF-8
export LC_NUMERIC=en_GB
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
export XDG_LOCAL_HOME="$HOME/.local"
mkdir -p "$XDG_CONFIG_HOME" "$XDG_CACHE_HOME" "$XDG_DATA_HOME" "$XDG_LOCAL_HOME"
case "$(basename "$(readlink -f /proc/$$/exe)")" in
zsh) thisfile="$(readlink -f "${(%):-%N}")";;
bash) thisfile="$(readlink -f "${BASH_SOURCE[0]}")";;
*) thisfile="$(find /proc/$$/fd/ | xargs -n1 -r readlink -f | grep profile | head -n1)";;
esac
export EDITOR="vim"
export VISUAL="vim"
# Override paths for non-compliant programs
# https://wiki.archlinux.org/index.php/XDG_Base_Directory_support
export ADOTDIR="$XDG_DATA_HOME/zsh/antigen"
export CARGO_HOME="$XDG_DATA_HOME/cargo"
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
export GOPATH="$XDG_DATA_HOME/go"
export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
export PYTHONHISTFILE="$XDG_DATA_HOME/python/histfile"
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export TERMINFO="$XDG_DATA_HOME/terminfo"
export TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo"
export VIMDIR="$XDG_CONFIG_HOME/vim"
export VIMRC="$VIMDIR/vimrc"
export VIMINIT=":so $VIMRC"
export WEECHAT_HOME="$XDG_CONFIG_HOME/weechat"
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
export DOTFILES="$(dirname "${thisfile:-$XDG_CONFIG_HOME/dotfiles/.profile}")"
export PATH="${PATH}:/sbin:/usr/sbin:$DOTFILES/scripts:$GOPATH/bin"
exists() { which $@ 0<&- 1>/dev/null 2>/dev/null; }
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && exists dbus-launch; then
eval $(dbus-launch --sh-syntax --exit-with-session)
fi
# Execute this after updating dbus/systemd environment
# Source secret keys and values into environment
if [ -f "$XDG_CONFIG_HOME/secrets" ]; then
set -o allexport
source $XDG_CONFIG_HOME/secrets
set +o allexport
fi

View File

@ -1 +0,0 @@
/home/frebib/.config/systemd/user/profile.service

View File

@ -2,7 +2,7 @@
Description=i3 - an improved dynamic, tiling window manager Description=i3 - an improved dynamic, tiling window manager
Requires=xorg.target Requires=xorg.target
Before=graphical-session.target Before=graphical-session.target
After=profile.service xprofile.service xorg.target After=xprofile.service xorg.target
[Service] [Service]
ExecStart=/usr/bin/i3 ExecStart=/usr/bin/i3

View File

@ -1,10 +0,0 @@
[Unit]
Description=Load profile environment into session
Before=graphical-session-pre.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c '. $HOME/.config/dotfiles/profile && systemctl --user import-environment'
[Install]
WantedBy=basic.target

View File

@ -1,7 +1,5 @@
[Unit] [Unit]
Description=XBindKeys Description=XBindKeys
Requires=profile.service
After=profile.service
[Service] [Service]
ExecStart=/usr/bin/xbindkeys -n -f $XDG_CONFIG_HOME/X11/xbindkeysrc ExecStart=/usr/bin/xbindkeys -n -f $XDG_CONFIG_HOME/X11/xbindkeysrc

View File

@ -1,13 +1,12 @@
[Unit] [Unit]
Description=Load Xorg configuration Description=Load Xorg configuration
PartOf=xorg.target PartOf=xorg.target
Requires=profile.service After=xorg.target
After=xorg.target profile.service
[Service] [Service]
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes
ExecStart=/usr/bin/bash -c '. $XDG_CONFIG_HOME/X11/xprofile; systemctl --user import-environment' ExecStart=/bin/sh -c '. $XDG_CONFIG_HOME/X11/xprofile; systemctl --user import-environment'
[Install] [Install]
WantedBy=xorg.target WantedBy=xorg.target

View File

@ -1,7 +1,7 @@
[Unit] [Unit]
Description=xsettingsd - provide settings to X11 applications Description=xsettingsd - provide settings to X11 applications
Requires=xorg.target Requires=xorg.target
After=xorg.target profile.service After=xorg.target
[Service] [Service]
ExecStart=/bin/sh -c 'xsettingsd -c $XDG_CONFIG_HOME/xsettingsd/xsettingsd.local' ExecStart=/bin/sh -c 'xsettingsd -c $XDG_CONFIG_HOME/xsettingsd/xsettingsd.local'

3
zsh/.gitignore vendored
View File

@ -1,4 +1 @@
/antigen/
/log/
/histfile
/.zcompdump* /.zcompdump*

5
zsh/.zshenv Normal file
View File

@ -0,0 +1,5 @@
set -o allexport
. ~/.config/environment.d/*.conf
set +o allexport
# vim: ft=sh

View File

@ -149,7 +149,7 @@ ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[assign]='fg=green' ZSH_HIGHLIGHT_STYLES[assign]='fg=green'
ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan,bold' ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan,bold'
source "$DOTFILES/aliases" source "$XDG_CONFIG_HOME/aliases"
# Source secret keys and values into environment # Source secret keys and values into environment
if [ -f "$XDG_CONFIG_HOME/secrets" ]; then if [ -f "$XDG_CONFIG_HOME/secrets" ]; then