diff --git a/systemd/.config/systemd/user/emacs.service b/systemd/.config/systemd/user/emacs.service new file mode 100644 index 0000000..9d47b67 --- /dev/null +++ b/systemd/.config/systemd/user/emacs.service @@ -0,0 +1,13 @@ +[Unit] +Description=Emacs: the extensible, self-documenting text editor +After=save-environment-variables@emacs.service +Requires=save-environment-variables@emacs.service + +[Service] +Type=forking +ExecStart=/usr/bin/emacs --daemon +ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)" +Restart=always + +[Install] +WantedBy=default.target diff --git a/systemd/.config/systemd/user/save-environment-variables@.service b/systemd/.config/systemd/user/save-environment-variables@.service new file mode 100644 index 0000000..67a03a7 --- /dev/null +++ b/systemd/.config/systemd/user/save-environment-variables@.service @@ -0,0 +1,9 @@ +[Unit] +Description=Save specific environment variables + +[Service] +Type=oneshot +ExecStart=/home/chelys/usr/bin/save-environment-variables %h/.config/systemd/user/%i.service.d/env.conf PATH XDG_CONFIG_HOME XDG_DATA_HOME + +[Install] +WantedBy=default.target diff --git a/systemd/usr/bin/save-environment-variables b/systemd/usr/bin/save-environment-variables new file mode 100755 index 0000000..9735151 --- /dev/null +++ b/systemd/usr/bin/save-environment-variables @@ -0,0 +1,18 @@ +#!/usr/bin/env zsh + +output=$1 +shift + +source $HOME/.profile + +# Make sure the output directory exists. +[[ -d "$(dirname $output)" ]] || mkdir -p "$(dirname $output)" + +echo "[Service]" > "$output" + +# Write down all the environment variables. +for env in $@; do + echo "Environment=\"${env}=${(P)env}\"" +done >> "$output" + +systemctl --user daemon-reload