summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/bin/compile-db27
-rwxr-xr-xsrc/bin/longrun-make36
-rwxr-xr-xsrc/bin/oneshot-make22
-rwxr-xr-xsrc/bin/prepare-svscan37
-rwxr-xr-xsrc/bin/system-db7
-rwxr-xr-xsrc/bin/system-ml31
-rwxr-xr-xsrc/bin/system-rc5
-rwxr-xr-xsrc/bin/system-run6
-rwxr-xr-xsrc/bin/system-shutdown-daemon31
-rwxr-xr-xsrc/bin/user-db13
-rwxr-xr-xsrc/bin/user-init26
-rwxr-xr-xsrc/bin/user-ml33
-rwxr-xr-xsrc/bin/user-rc11
-rwxr-xr-xsrc/bin/user-run12
-rwxr-xr-xsrc/bin/user-shutdown23
-rwxr-xr-xsrc/bin/user-tmpfs17
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGINT5
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGPWR5
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGQUIT2
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGTERM2
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGUSR15
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGUSR25
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/SIGWINCH2
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/crash10
-rwxr-xr-xsrc/lib/service/system/.s6-svscan/finish9
-rw-r--r--src/lib/service/system/goetia-runner/notification-fd1
-rwxr-xr-xsrc/lib/service/system/goetia-runner/run10
-rw-r--r--src/lib/service/system/s6-svscan-log-console/notification-fd1
-rwxr-xr-xsrc/lib/service/system/s6-svscan-log-console/run16
-rw-r--r--src/lib/service/system/s6-svscan-log/notification-fd1
-rwxr-xr-xsrc/lib/service/system/s6-svscan-log/run15
-rwxr-xr-xsrc/lib/service/user/.s6-svscan/SIGTERM5
-rw-r--r--src/lib/service/user/goetia-runner/notification-fd1
-rwxr-xr-xsrc/lib/service/user/goetia-runner/run10
-rw-r--r--src/lib/service/user/s6-svscan-log/notification-fd1
-rwxr-xr-xsrc/lib/service/user/s6-svscan-log/run17
-rw-r--r--src/lib/source/system/admin/greetd-srv/dependencies.d/mount-run0
-rw-r--r--src/lib/source/system/admin/greetd-srv/dependencies.d/seat-manager0
-rw-r--r--src/lib/source/system/admin/greetd-srv/dependencies.d/udev0
-rw-r--r--src/lib/source/system/admin/greetd-srv/producer-for1
-rw-r--r--src/lib/source/system/admin/greetd-srv/run8
-rw-r--r--src/lib/source/system/admin/greetd-srv/type1
-rw-r--r--src/lib/source/system/admin/seatd-srv/dependencies.d/mount-dev0
-rw-r--r--src/lib/source/system/admin/seatd-srv/dependencies.d/mount-run0
-rw-r--r--src/lib/source/system/admin/seatd-srv/notification-fd1
-rw-r--r--src/lib/source/system/admin/seatd-srv/producer-for1
-rw-r--r--src/lib/source/system/admin/seatd-srv/run13
-rw-r--r--src/lib/source/system/admin/seatd-srv/type1
-rw-r--r--src/lib/source/system/bundle/default/type1
-rw-r--r--src/lib/source/system/bundle/firewall/type1
-rw-r--r--src/lib/source/system/bundle/mount/type1
-rw-r--r--src/lib/source/system/bundle/networking/type1
-rw-r--r--src/lib/source/system/bundle/seat-manager/type1
-rw-r--r--src/lib/source/system/bundle/system-bus/type1
-rw-r--r--src/lib/source/system/bundle/udev/type1
-rw-r--r--src/lib/source/system/cron/dcron-srv/producer-for1
-rw-r--r--src/lib/source/system/cron/dcron-srv/run13
-rw-r--r--src/lib/source/system/cron/dcron-srv/type1
-rw-r--r--src/lib/source/system/db/mariadbd-srv/producer-for1
-rw-r--r--src/lib/source/system/db/mariadbd-srv/run8
-rw-r--r--src/lib/source/system/db/mariadbd-srv/type1
-rw-r--r--src/lib/source/system/db/mysqld-srv/producer-for1
-rw-r--r--src/lib/source/system/db/mysqld-srv/run8
-rw-r--r--src/lib/source/system/db/mysqld-srv/type1
-rw-r--r--src/lib/source/system/net/dhcpcd-srv/dependencies.d/udev0
-rw-r--r--src/lib/source/system/net/dhcpcd-srv/producer-for1
-rw-r--r--src/lib/source/system/net/dhcpcd-srv/run9
-rw-r--r--src/lib/source/system/net/dhcpcd-srv/type1
-rw-r--r--src/lib/source/system/net/wpa_supplicant-srv/dependencies.d/system-bus0
-rw-r--r--src/lib/source/system/net/wpa_supplicant-srv/producer-for1
-rw-r--r--src/lib/source/system/net/wpa_supplicant-srv/run10
-rw-r--r--src/lib/source/system/net/wpa_supplicant-srv/type1
-rw-r--r--src/lib/source/system/ntp/chronyd-srv/dependencies.d/networking0
-rw-r--r--src/lib/source/system/ntp/chronyd-srv/producer-for1
-rw-r--r--src/lib/source/system/ntp/chronyd-srv/run12
-rw-r--r--src/lib/source/system/ntp/chronyd-srv/type1
-rw-r--r--src/lib/source/system/other/cupsd-srv/producer-for1
-rw-r--r--src/lib/source/system/other/cupsd-srv/run11
-rw-r--r--src/lib/source/system/other/cupsd-srv/type1
-rw-r--r--src/lib/source/system/other/dbus-daemon-srv/notification-fd1
-rw-r--r--src/lib/source/system/other/dbus-daemon-srv/producer-for1
-rw-r--r--src/lib/source/system/other/dbus-daemon-srv/run15
-rw-r--r--src/lib/source/system/other/dbus-daemon-srv/type1
-rw-r--r--src/lib/source/system/other/sshd-srv/dependencies.d/networking0
-rw-r--r--src/lib/source/system/other/sshd-srv/producer-for1
-rw-r--r--src/lib/source/system/other/sshd-srv/run17
-rw-r--r--src/lib/source/system/other/sshd-srv/type1
-rw-r--r--src/lib/source/system/web/gate-srv/dependencies.d/udev0
-rw-r--r--src/lib/source/system/web/gate-srv/producer-for1
-rw-r--r--src/lib/source/system/web/gate-srv/run9
-rw-r--r--src/lib/source/system/web/gate-srv/type1
-rw-r--r--src/lib/source/system/web/nginx-srv/producer-for1
-rw-r--r--src/lib/source/system/web/nginx-srv/run9
-rw-r--r--src/lib/source/system/web/nginx-srv/type1
-rw-r--r--src/lib/source/system/web/radicale-srv/dependencies.d/mount0
-rw-r--r--src/lib/source/system/web/radicale-srv/producer-for1
-rw-r--r--src/lib/source/system/web/radicale-srv/run10
-rw-r--r--src/lib/source/system/web/radicale-srv/type1
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/pipewire0
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/xdg-runtime-dir0
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-pulse-srv/producer-for1
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-pulse-srv/run10
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-pulse-srv/type1
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/xdg-runtime-dir0
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-srv/notification-fd1
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-srv/producer-for1
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-srv/run10
-rw-r--r--src/lib/source/user/audio-daemon/pipewire-srv/type1
-rw-r--r--src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/pipewire0
-rw-r--r--src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/audio-daemon/wireplumber-srv/producer-for1
-rw-r--r--src/lib/source/user/audio-daemon/wireplumber-srv/run8
-rw-r--r--src/lib/source/user/audio-daemon/wireplumber-srv/type1
-rw-r--r--src/lib/source/user/bundle/audio/type1
-rw-r--r--src/lib/source/user/bundle/compositor/type1
-rw-r--r--src/lib/source/user/bundle/default/type1
-rw-r--r--src/lib/source/user/bundle/session-bus/type1
-rw-r--r--src/lib/source/user/clipboard-manager/wl-clip-persist-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/clipboard-manager/wl-clip-persist-srv/producer-for1
-rw-r--r--src/lib/source/user/clipboard-manager/wl-clip-persist-srv/run9
-rw-r--r--src/lib/source/user/clipboard-manager/wl-clip-persist-srv/type1
-rw-r--r--src/lib/source/user/compositor/Hyprland-srv/dependencies.d/xdg-runtime-dir0
-rw-r--r--src/lib/source/user/compositor/Hyprland-srv/finish8
-rw-r--r--src/lib/source/user/compositor/Hyprland-srv/producer-for1
-rw-r--r--src/lib/source/user/compositor/Hyprland-srv/run8
-rw-r--r--src/lib/source/user/compositor/Hyprland-srv/type1
-rw-r--r--src/lib/source/user/desktop-widget/waybar-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/desktop-widget/waybar-srv/notification-fd1
-rw-r--r--src/lib/source/user/desktop-widget/waybar-srv/producer-for1
-rw-r--r--src/lib/source/user/desktop-widget/waybar-srv/run8
-rw-r--r--src/lib/source/user/desktop-widget/waybar-srv/type1
-rw-r--r--src/lib/source/user/desktop-widget/yambar-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/desktop-widget/yambar-srv/notification-fd1
-rw-r--r--src/lib/source/user/desktop-widget/yambar-srv/producer-for1
-rw-r--r--src/lib/source/user/desktop-widget/yambar-srv/run10
-rw-r--r--src/lib/source/user/desktop-widget/yambar-srv/type1
-rw-r--r--src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/notification-daemon/dunst-srv/notification-fd1
-rw-r--r--src/lib/source/user/notification-daemon/dunst-srv/producer-for1
-rw-r--r--src/lib/source/user/notification-daemon/dunst-srv/run8
-rw-r--r--src/lib/source/user/notification-daemon/dunst-srv/type1
-rw-r--r--src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/notification-daemon/fnott-srv/notification-fd1
-rw-r--r--src/lib/source/user/notification-daemon/fnott-srv/producer-for1
-rw-r--r--src/lib/source/user/notification-daemon/fnott-srv/run10
-rw-r--r--src/lib/source/user/notification-daemon/fnott-srv/type1
-rw-r--r--src/lib/source/user/notification-daemon/mako-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/notification-daemon/mako-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/notification-daemon/mako-srv/notification-fd1
-rw-r--r--src/lib/source/user/notification-daemon/mako-srv/producer-for1
-rw-r--r--src/lib/source/user/notification-daemon/mako-srv/run8
-rw-r--r--src/lib/source/user/notification-daemon/mako-srv/type1
-rw-r--r--src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/notification-daemon/swaync-srv/notification-fd1
-rw-r--r--src/lib/source/user/notification-daemon/swaync-srv/producer-for1
-rw-r--r--src/lib/source/user/notification-daemon/swaync-srv/run8
-rw-r--r--src/lib/source/user/notification-daemon/swaync-srv/type1
-rw-r--r--src/lib/source/user/other/at-spi-bus-launcher-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/other/at-spi-bus-launcher-srv/producer-for1
-rw-r--r--src/lib/source/user/other/at-spi-bus-launcher-srv/run8
-rw-r--r--src/lib/source/user/other/at-spi-bus-launcher-srv/type1
-rw-r--r--src/lib/source/user/other/at-spi2-registryd-srv/producer-for1
-rw-r--r--src/lib/source/user/other/at-spi2-registryd-srv/run8
-rw-r--r--src/lib/source/user/other/at-spi2-registryd-srv/type1
-rw-r--r--src/lib/source/user/other/dbus-daemon-srv/dependencies.d/xdg-runtime-dir0
-rw-r--r--src/lib/source/user/other/dbus-daemon-srv/notification-fd1
-rw-r--r--src/lib/source/user/other/dbus-daemon-srv/producer-for1
-rw-r--r--src/lib/source/user/other/dbus-daemon-srv/run16
-rw-r--r--src/lib/source/user/other/dbus-daemon-srv/type1
-rw-r--r--src/lib/source/user/other/dconf-service-srv/producer-for1
-rw-r--r--src/lib/source/user/other/dconf-service-srv/run8
-rw-r--r--src/lib/source/user/other/dconf-service-srv/type1
-rw-r--r--src/lib/source/user/other/foot-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/other/foot-srv/notification-fd1
-rw-r--r--src/lib/source/user/other/foot-srv/producer-for1
-rw-r--r--src/lib/source/user/other/foot-srv/run11
-rw-r--r--src/lib/source/user/other/foot-srv/type1
-rw-r--r--src/lib/source/user/other/mpd-srv/dependencies.d/audio0
-rw-r--r--src/lib/source/user/other/mpd-srv/producer-for1
-rw-r--r--src/lib/source/user/other/mpd-srv/run10
-rw-r--r--src/lib/source/user/other/mpd-srv/type1
-rw-r--r--src/lib/source/user/wallpaper-daemon/hyprpaper-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/wallpaper-daemon/hyprpaper-srv/producer-for1
-rw-r--r--src/lib/source/user/wallpaper-daemon/hyprpaper-srv/run8
-rw-r--r--src/lib/source/user/wallpaper-daemon/hyprpaper-srv/type1
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/producer-for1
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/run8
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/type1
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-srv/dependencies.d/compositor0
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-srv/producer-for1
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-srv/run8
-rw-r--r--src/lib/source/user/xdg/xdg-desktop-portal-srv/type1
-rw-r--r--src/lib/source/user/xdg/xdg-document-portal-srv/dependencies.d/session-bus0
-rw-r--r--src/lib/source/user/xdg/xdg-document-portal-srv/producer-for1
-rw-r--r--src/lib/source/user/xdg/xdg-document-portal-srv/run8
-rw-r--r--src/lib/source/user/xdg/xdg-document-portal-srv/type1
-rw-r--r--src/lib/source/user/xdg/xdg-permission-store-srv/producer-for1
-rw-r--r--src/lib/source/user/xdg/xdg-permission-store-srv/run8
-rw-r--r--src/lib/source/user/xdg/xdg-permission-store-srv/type1
-rw-r--r--src/lib/source/user/xdg/xdg-runtime-dir/down10
-rw-r--r--src/lib/source/user/xdg/xdg-runtime-dir/type1
-rw-r--r--src/lib/source/user/xdg/xdg-runtime-dir/up10
208 files changed, 933 insertions, 0 deletions
diff --git a/src/bin/compile-db b/src/bin/compile-db
new file mode 100755
index 0000000..22b63b4
--- /dev/null
+++ b/src/bin/compile-db
@@ -0,0 +1,27 @@
+#!@shebangdir@/execlineb -WS2
+
+# ISC license.
+
+multisubstitute {
+ define CONFIGDIR ${1}
+ define LIVEDIR ${2}
+}
+
+backtick -ED" " OLDDB { realpath ${CONFIGDIR}/compiled }
+backtick -E DATE { date +%s }
+elglob SOURCES ${CONFIGDIR}/src/*
+
+if { s6-rc-compile -v2 ${CONFIGDIR}/compiled-${DATE} ${SOURCES} }
+
+if {
+ if -x0 { eltest -d ${LIVEDIR} }
+ if -n -x0 { s6-rc-update -v2 -l ${LIVEDIR} ${CONFIGDIR}/compiled-${DATE} }
+ if { s6-rc-update -v2 -l ${LIVEDIR} ${CONFIGDIR}/compiled }
+ if { rm -Rf ${CONFIGDIR}/compiled-${DATE} }
+ exit 1
+}
+
+if { ln -sf compiled-${DATE} ${CONFIGDIR}/compiled/compiled }
+if { mv -f ${CONFIGDIR}/compiled/compiled ${CONFIGDIR}/ }
+
+rm -Rf ${OLDDB}
diff --git a/src/bin/longrun-make b/src/bin/longrun-make
new file mode 100755
index 0000000..2b5b433
--- /dev/null
+++ b/src/bin/longrun-make
@@ -0,0 +1,36 @@
+#!@shebangdir@/execlineb -WS5
+
+# ISC license.
+
+multisubstitute {
+ define WORKINGDIR ${1}
+ define NAME ${2}
+ define TYPE ${3}
+ define SCRIPT ${4}
+ define DEPENDENCIES ${5}
+}
+
+if { mkdir -p ${WORKINGDIR}/${NAME}-${TYPE} }
+
+background {
+ if { eltest ${TYPE} = log }
+ s6-setlock ${WORKINGDIR}/${NAME}-log/consumer-for
+ if -n { grep -Fq -- ${NAME}-srv ${WORKINGDIR}/${NAME}-log/consumer-for }
+ background { redirfd -a 1 ${WORKINGDIR}/${NAME}-log/consumer-for echo ${NAME}-srv }
+ background { redirfd -w 1 ${WORKINGDIR}/${NAME}-log/pipeline-name echo ${NAME} }
+}
+
+background {
+ if { eltest ${TYPE} = srv }
+ redirfd -w 1 ${WORKINGDIR}/${NAME}-srv/producer-for echo ${NAME}-log
+}
+
+background { redirfd -w 1 ${WORKINGDIR}/${NAME}-${TYPE}/type echo longrun }
+background { redirfd -w 1 ${WORKINGDIR}/${NAME}-${TYPE}/notification-fd echo 3 }
+background { redirfd -w 1 ${WORKINGDIR}/${NAME}-${TYPE}/run echo ${SCRIPT} }
+background {
+ if { eltest ${DEPENDENCIES} != none }
+ define -s SPLITDEPENDENCIES ${DEPENDENCIES}
+ if { mkdir -p ${WORKINGDIR}/${NAME}-${TYPE}/dependencies.d }
+ touch ${WORKINGDIR}/${NAME}-${TYPE}/dependencies.d/${SPLITDEPENDENCIES}
+}
diff --git a/src/bin/oneshot-make b/src/bin/oneshot-make
new file mode 100755
index 0000000..4d255b2
--- /dev/null
+++ b/src/bin/oneshot-make
@@ -0,0 +1,22 @@
+#!@shebangdir@/execlineb -WS5
+
+# ISC license.
+
+multisubstitute {
+ define WORKINGDIR ${1}
+ define NAME ${2}
+ define UPSCRIPT ${3}
+ define DOWNSCRIPT ${4}
+ define DEPENDENCIES ${5}
+}
+
+if { mkdir -p ${WORKINGDIR}/${NAME} }
+
+background { redirfd -w 1 ${WORKINGDIR}/${NAME}/type echo oneshot }
+background { redirfd -w 1 ${WORKINGDIR}/${NAME}/up echo ${UPSCRIPT} }
+background { redirfd -w 1 ${WORKINGDIR}/${NAME}/down echo ${DOWNSCRIPT} }
+background {
+ if { eltest -v 5 }
+ if { mkdir -p ${WORKINGDIR}/${NAME}/dependencies.d }
+ touch ${WORKINGDIR}/${NAME}/dependencies.d/${DEPENDENCIES}
+}
diff --git a/src/bin/prepare-svscan b/src/bin/prepare-svscan
new file mode 100755
index 0000000..9fe7f8d
--- /dev/null
+++ b/src/bin/prepare-svscan
@@ -0,0 +1,37 @@
+#!@shebangdir@/execlineb -Ws4
+
+# ISC license.
+
+multisubstitute {
+ define WORKINGDIR ${1}
+ define RUNDIR ${2}
+ define BUNDLE ${3}
+ define PROG ${4}
+}
+
+redirfd -r 0 /dev/null
+execline-umask 0022
+
+if { mkdir -p -m750 -- ${RUNDIR} }
+foreground { cp -RfpL -- ${WORKINGDIR}/run-image/. ${RUNDIR}/ }
+
+if { mkfifo -m700 ${RUNDIR}/service/s6-svscan-log/fifo }
+redirfd -wnb 1 ${RUNDIR}/service/s6-svscan-log/fifo
+
+background {
+ redirfd -w 2 ${RUNDIR}/service/s6-svscan-log/fifo
+ if -x0 -n { eltest -d ${RUNDIR}/s6-rc }
+ foreground { echo "\ninit!\n" }
+ if {
+ s6-rc-init
+ -c ${WORKINGDIR}/compiled
+ -l ${RUNDIR}/s6-rc
+ ${RUNDIR}/service
+ }
+ foreground { echo "\nStarting bundle ${BUNDLE}...\n" }
+ s6-rc -l ${RUNDIR}/s6-rc -v2 -b -t@timeout@ -up change ${BUNDLE}
+}
+fdmove -c 2 1
+
+s6-envdir -I ${WORKINGDIR}/env
+${PROG} ${@}
diff --git a/src/bin/system-db b/src/bin/system-db
new file mode 100755
index 0000000..add7d33
--- /dev/null
+++ b/src/bin/system-db
@@ -0,0 +1,7 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+compile-db
+ @sysconfdir@
+ @tmpfsdir@/@sysrundir@/s6-rc
diff --git a/src/bin/system-ml b/src/bin/system-ml
new file mode 100755
index 0000000..1937ac0
--- /dev/null
+++ b/src/bin/system-ml
@@ -0,0 +1,31 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+define LOGSCRIPT "#!@shebangdir@/execlineb -P
+
+# ISC license
+
+fdmove -c 1 2
+
+if { mkdir -p -m750 -- @syslogdir@/${NAME} }
+if { chown @loguser@:@loguser@ @syslogdir@/${NAME} }
+s6-setuidgid @loguser@
+s6-log -bd3 @logconfig@ @syslogdir@/${NAME}"
+
+if { rm -Rf @sysconfdir@/src/generated-logger }
+if { mkdir -p @sysconfdir@/src/generated-logger }
+
+elglob LONGRUNS @sysconfdir@/src/*/*
+forx -pE LONGRUN { ${LONGRUNS} }
+ if -x0 { eltest -f ${LONGRUN}/producer-for }
+ if -x0 -n { eltest -f ${LONGRUN}/no-ml }
+ if { echo Making the logger of ${LONGRUN} }
+ pipeline { sed -e s/-log$// -- ${LONGRUN}/producer-for }
+ withstdinas -E NAME
+ longrun-make
+ @sysconfdir@/src/generated-logger
+ ${NAME}
+ log
+ ${LOGSCRIPT}
+ @logdep@
diff --git a/src/bin/system-rc b/src/bin/system-rc
new file mode 100755
index 0000000..61230ab
--- /dev/null
+++ b/src/bin/system-rc
@@ -0,0 +1,5 @@
+#!@shebangdir@/execlineb -s0
+
+# ISC license.
+
+s6-rc -l @tmpfsdir@/@sysrundir@/s6-rc ${@}
diff --git a/src/bin/system-run b/src/bin/system-run
new file mode 100755
index 0000000..e5b9cec
--- /dev/null
+++ b/src/bin/system-run
@@ -0,0 +1,6 @@
+#!@shebangdir@/execlineb -s0
+
+# ISC license.
+
+s6-sudo @tmpfsdir@/@sysrundir@/service/goetia-runner/s
+ fdmove -c 1 2 ${@}
diff --git a/src/bin/system-shutdown-daemon b/src/bin/system-shutdown-daemon
new file mode 100755
index 0000000..6419bfb
--- /dev/null
+++ b/src/bin/system-shutdown-daemon
@@ -0,0 +1,31 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+tryexec { ./stage3b }
+
+if -n {
+ foreground { echo "\nsystem-shutdown!\n" }
+ foreground { s6-rc -l @tmpfsdir@/@sysrundir@/s6-rc -v2 -b -Da -t@timeout@ change }
+ foreground {
+ pipeline { ls -1 @tmpfsdir@/@sysrundir@/service/ }
+ pipeline {
+ sed
+ -e /s6-svscan-log/d
+ -e /.s6-svscan/d
+ -e /goetia-shutdown/d
+ -e /goetia-rescue/d
+ }
+ forstdin -pE SERVICE
+ s6-svc -T @timeout@ -D @tmpfsdir@/@sysrundir@/service/${SERVICE}
+ }
+
+ foreground { rm -Rf -- @syslogdir@/uncaught-logs }
+ foreground { cp -Rpf -- @tmpfsdir@/@sysrundir@/log/uncaught-logs @syslogdir@/ }
+
+ foreground { chmod u+x ./stage3b }
+ foreground { echo "sending all processes the TERM signal..." }
+ foreground { kill -SIGTERM -- -1 }
+}
+foreground { touch ./down }
+chmod a-x ./stage3b
diff --git a/src/bin/user-db b/src/bin/user-db
new file mode 100755
index 0000000..8c7fb4f
--- /dev/null
+++ b/src/bin/user-db
@@ -0,0 +1,13 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+multisubstitute {
+ importas -Si USER
+ importas -Si HOME
+ importas -Si USERTREE
+}
+
+compile-db
+ ${HOME}/@usrconfdir@/${USERTREE}
+ @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/s6-rc
diff --git a/src/bin/user-init b/src/bin/user-init
new file mode 100755
index 0000000..aa24f9d
--- /dev/null
+++ b/src/bin/user-init
@@ -0,0 +1,26 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+multisubstitute {
+ importas -Si USER
+ importas -Si USERTREE
+ importas -SD default BUNDLE
+ importas -SD
+ /command:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/libexec:/usr/local/libexec
+ PATH
+}
+
+backtick HOME { homeof ${USER} }
+importas -Si HOME
+
+export PATH ${HOME}/.local/bin:${PATH}
+
+s6-envuidgid ${USER}
+
+prepare-svscan
+ ${HOME}/@usrconfdir@/${USERTREE}
+ @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}
+ ${BUNDLE}
+
+s6-svscan @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/service
diff --git a/src/bin/user-ml b/src/bin/user-ml
new file mode 100755
index 0000000..60a01ab
--- /dev/null
+++ b/src/bin/user-ml
@@ -0,0 +1,33 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+multisubstitute {
+ importas -Si USER
+ importas -Si HOME
+ importas -Si USERTREE
+}
+
+define LOGSCRIPT "#!@shebangdir@/execlineb -P
+
+fdmove -c 1 2
+
+if { mkdir -p -m750 -- ${HOME}/@usrlogdir@/${USERTREE}/${NAME} }
+s6-log -bd3 @logconfig@ ${HOME}/@usrlogdir@/${USERTREE}/${NAME}"
+
+if { rm -Rf ${HOME}/@usrconfdir@/${USERTREE}/src/generated-logger }
+if { mkdir -p ${HOME}/@usrconfdir@/${USERTREE}/src/generated-logger }
+
+elglob LONGRUNS ${HOME}/@usrconfdir@/${USERTREE}/src/*/*
+forx -pE LONGRUN { ${LONGRUNS} }
+ if -x0 { eltest -f ${LONGRUN}/producer-for }
+ if -x0 -n { eltest -f ${LONGRUN}/no-ml }
+ if { echo Making the logger of ${LONGRUN} }
+ pipeline { sed -e s/-log$// -- ${LONGRUN}/producer-for }
+ withstdinas -E NAME
+ longrun-make
+ ${HOME}/@usrconfdir@/${USERTREE}/src/generated-logger
+ ${NAME}
+ log
+ ${LOGSCRIPT}
+ none
diff --git a/src/bin/user-rc b/src/bin/user-rc
new file mode 100755
index 0000000..bee9930
--- /dev/null
+++ b/src/bin/user-rc
@@ -0,0 +1,11 @@
+#!@shebangdir@/execlineb -s0
+
+# ISC license.
+
+multisubstitute {
+ importas -Si USER
+ importas -Si USERTREE
+}
+backtick -Ei HOME { homeof ${USER} }
+
+s6-rc -l @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/s6-rc ${@}
diff --git a/src/bin/user-run b/src/bin/user-run
new file mode 100755
index 0000000..e110115
--- /dev/null
+++ b/src/bin/user-run
@@ -0,0 +1,12 @@
+#!@shebangdir@/execlineb -s0
+
+# ISC license.
+
+multisubstitute {
+ importas -Si USER
+ importas -Si USERTREE
+}
+backtick -Ei HOME { homeof ${USER} }
+
+s6-sudo @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/service/goetia-runner/s
+ fdmove -c 1 2 ${@}
diff --git a/src/bin/user-shutdown b/src/bin/user-shutdown
new file mode 100755
index 0000000..9376f5b
--- /dev/null
+++ b/src/bin/user-shutdown
@@ -0,0 +1,23 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+multisubstitute {
+ importas -Si USER
+ importas -Si USERTREE
+}
+backtick -Ei HOME { homeof ${USER} }
+
+if -x0 { eltest -d @tmpfsdir@/@usrrundir@/${USER}/${USERTREE} }
+
+redirfd -wnb 1 @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/service/s6-svscan-log/fifo
+fdmove -c 2 1
+
+foreground {
+ foreground { echo "\nshutdown\n" }
+ s6-rc -l @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/s6-rc -v2 -b -da -t@timeout@ change
+}
+
+foreground { s6-svscanctl -t @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/service }
+foreground { s6-svc -h @tmpfsdir@/@usrrundir@/${USER}/${USERTREE}/service/s6-svscan-log }
+foreground { rm -Rf @tmpfsdir@/@usrrundir@/${USER}/${USERTREE} }
diff --git a/src/bin/user-tmpfs b/src/bin/user-tmpfs
new file mode 100755
index 0000000..02deb14
--- /dev/null
+++ b/src/bin/user-tmpfs
@@ -0,0 +1,17 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+importas -Si USER
+importas -SD 64m USER_TMPFSDIR_SIZE
+s6-envuidgid ${USER}
+importas -Si UID
+importas -Si GID
+
+if { mkdir -p @tmpfsdir@/@usrrundir@/${USER} }
+
+mount
+ -t tmpfs
+ -o mode=0755,size=${USER_TMPFSDIR_SIZE},uid=${UID},gid=${GID}
+ ${USER}-tmpfs
+ @tmpfsdir@/@usrrundir@/${USER}
diff --git a/src/lib/service/system/.s6-svscan/SIGINT b/src/lib/service/system/.s6-svscan/SIGINT
new file mode 100755
index 0000000..7b00dd5
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGINT
@@ -0,0 +1,5 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+system-shutdown -r
diff --git a/src/lib/service/system/.s6-svscan/SIGPWR b/src/lib/service/system/.s6-svscan/SIGPWR
new file mode 100755
index 0000000..b7e4956
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGPWR
@@ -0,0 +1,5 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+system-shutdown -p
diff --git a/src/lib/service/system/.s6-svscan/SIGQUIT b/src/lib/service/system/.s6-svscan/SIGQUIT
new file mode 100755
index 0000000..4d6fd2f
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGQUIT
@@ -0,0 +1,2 @@
+#!@shebangdir@/execlineb -P
+
diff --git a/src/lib/service/system/.s6-svscan/SIGTERM b/src/lib/service/system/.s6-svscan/SIGTERM
new file mode 100755
index 0000000..4d6fd2f
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGTERM
@@ -0,0 +1,2 @@
+#!@shebangdir@/execlineb -P
+
diff --git a/src/lib/service/system/.s6-svscan/SIGUSR1 b/src/lib/service/system/.s6-svscan/SIGUSR1
new file mode 100755
index 0000000..b7e4956
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGUSR1
@@ -0,0 +1,5 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+system-shutdown -p
diff --git a/src/lib/service/system/.s6-svscan/SIGUSR2 b/src/lib/service/system/.s6-svscan/SIGUSR2
new file mode 100755
index 0000000..cf21071
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGUSR2
@@ -0,0 +1,5 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+system-shutdown -h
diff --git a/src/lib/service/system/.s6-svscan/SIGWINCH b/src/lib/service/system/.s6-svscan/SIGWINCH
new file mode 100755
index 0000000..4d6fd2f
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/SIGWINCH
@@ -0,0 +1,2 @@
+#!@shebangdir@/execlineb -P
+
diff --git a/src/lib/service/system/.s6-svscan/crash b/src/lib/service/system/.s6-svscan/crash
new file mode 100755
index 0000000..9fa8bd4
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/crash
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+redirfd -w 2 /dev/console
+fdmove -c 1 2
+
+foreground { echo "s6-svscan crashed. Rebooting." }
+
+linux-powertool -r
diff --git a/src/lib/service/system/.s6-svscan/finish b/src/lib/service/system/.s6-svscan/finish
new file mode 100755
index 0000000..fa3654c
--- /dev/null
+++ b/src/lib/service/system/.s6-svscan/finish
@@ -0,0 +1,9 @@
+#!@shebangdir@/execlineb -P
+
+
+redirfd -w 2 /dev/console
+fdmove -c 1 2
+
+foreground { echo "s6-svscan exited. Rebooting." }
+
+linux-powertool -r
diff --git a/src/lib/service/system/goetia-runner/notification-fd b/src/lib/service/system/goetia-runner/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/service/system/goetia-runner/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/service/system/goetia-runner/run b/src/lib/service/system/goetia-runner/run
new file mode 100755
index 0000000..faf8623
--- /dev/null
+++ b/src/lib/service/system/goetia-runner/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+fdmove -c 2 1
+fdmove 1 3
+
+s6-ipcserver -1 -a 0700 -c 1 -- s
+
+s6-sudod -dt30000 --
diff --git a/src/lib/service/system/s6-svscan-log-console/notification-fd b/src/lib/service/system/s6-svscan-log-console/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/service/system/s6-svscan-log-console/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/service/system/s6-svscan-log-console/run b/src/lib/service/system/s6-svscan-log-console/run
new file mode 100755
index 0000000..63d32ba
--- /dev/null
+++ b/src/lib/service/system/s6-svscan-log-console/run
@@ -0,0 +1,16 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+fdmove -c 1 2
+redirfd -a 1 /dev/console
+
+if { mkdir -p -m750 -- @tmpfsdir@/@sysrundir@/log/uncaught-logs }
+# fifo is created in prepare-svscan
+if { chown -R @loguser@:@loguser@ @tmpfsdir@/@sysrundir@/log fifo }
+
+s6-setuidgid @loguser@
+
+redirfd -rnb 0 fifo
+
+s6-log -bpd3 -- 1 @logconfig@ @tmpfsdir@/@sysrundir@/log/uncaught-logs
diff --git a/src/lib/service/system/s6-svscan-log/notification-fd b/src/lib/service/system/s6-svscan-log/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/service/system/s6-svscan-log/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/service/system/s6-svscan-log/run b/src/lib/service/system/s6-svscan-log/run
new file mode 100755
index 0000000..e8c4022
--- /dev/null
+++ b/src/lib/service/system/s6-svscan-log/run
@@ -0,0 +1,15 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+fdmove -c 1 2
+
+if { mkdir -p -m750 -- @tmpfsdir@/@sysrundir@/log/uncaught-logs }
+# fifo is created in prepare-svscan
+if { chown -R @loguser@:@loguser@ @tmpfsdir@/@sysrundir@/log fifo }
+
+s6-setuidgid @loguser@
+
+redirfd -rnb 0 fifo
+
+s6-log -bpd3 -- @logconfig@ @tmpfsdir@/@sysrundir@/log/uncaught-logs
diff --git a/src/lib/service/user/.s6-svscan/SIGTERM b/src/lib/service/user/.s6-svscan/SIGTERM
new file mode 100755
index 0000000..2098c8c
--- /dev/null
+++ b/src/lib/service/user/.s6-svscan/SIGTERM
@@ -0,0 +1,5 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+user-shutdown
diff --git a/src/lib/service/user/goetia-runner/notification-fd b/src/lib/service/user/goetia-runner/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/service/user/goetia-runner/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/service/user/goetia-runner/run b/src/lib/service/user/goetia-runner/run
new file mode 100755
index 0000000..abbc6c0
--- /dev/null
+++ b/src/lib/service/user/goetia-runner/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+fdmove -c 2 1
+fdmove 1 3
+
+s6-ipcserver -1 -a 0700 -c 1 -- s
+
+s6-sudod -d -t30000 --
diff --git a/src/lib/service/user/s6-svscan-log/notification-fd b/src/lib/service/user/s6-svscan-log/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/service/user/s6-svscan-log/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/service/user/s6-svscan-log/run b/src/lib/service/user/s6-svscan-log/run
new file mode 100755
index 0000000..2c40369
--- /dev/null
+++ b/src/lib/service/user/s6-svscan-log/run
@@ -0,0 +1,17 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+
+fdmove -c 1 2
+
+multisubstitute {
+ importas -Si USER
+ importas -Si HOME
+ importas -Si USERTREE
+}
+
+if { mkdir -p -m 700 -- ${HOME}/@usrlogdir@/${USERTREE}/uncaught-logs }
+
+redirfd -rnb 0 fifo
+
+s6-log -bpd3 -- @logconfig@ ${HOME}/@usrlogdir@/${USERTREE}/uncaught-logs
diff --git a/src/lib/source/system/admin/greetd-srv/dependencies.d/mount-run b/src/lib/source/system/admin/greetd-srv/dependencies.d/mount-run
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/admin/greetd-srv/dependencies.d/mount-run
diff --git a/src/lib/source/system/admin/greetd-srv/dependencies.d/seat-manager b/src/lib/source/system/admin/greetd-srv/dependencies.d/seat-manager
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/admin/greetd-srv/dependencies.d/seat-manager
diff --git a/src/lib/source/system/admin/greetd-srv/dependencies.d/udev b/src/lib/source/system/admin/greetd-srv/dependencies.d/udev
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/admin/greetd-srv/dependencies.d/udev
diff --git a/src/lib/source/system/admin/greetd-srv/producer-for b/src/lib/source/system/admin/greetd-srv/producer-for
new file mode 100644
index 0000000..2c128e2
--- /dev/null
+++ b/src/lib/source/system/admin/greetd-srv/producer-for
@@ -0,0 +1 @@
+greetd-log
diff --git a/src/lib/source/system/admin/greetd-srv/run b/src/lib/source/system/admin/greetd-srv/run
new file mode 100644
index 0000000..e5411fc
--- /dev/null
+++ b/src/lib/source/system/admin/greetd-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://sr.ht/~kennylevinsen/greetd/
+
+fdmove -c 2 1
+
+greetd
diff --git a/src/lib/source/system/admin/greetd-srv/type b/src/lib/source/system/admin/greetd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/admin/greetd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/admin/seatd-srv/dependencies.d/mount-dev b/src/lib/source/system/admin/seatd-srv/dependencies.d/mount-dev
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/admin/seatd-srv/dependencies.d/mount-dev
diff --git a/src/lib/source/system/admin/seatd-srv/dependencies.d/mount-run b/src/lib/source/system/admin/seatd-srv/dependencies.d/mount-run
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/admin/seatd-srv/dependencies.d/mount-run
diff --git a/src/lib/source/system/admin/seatd-srv/notification-fd b/src/lib/source/system/admin/seatd-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/system/admin/seatd-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/system/admin/seatd-srv/producer-for b/src/lib/source/system/admin/seatd-srv/producer-for
new file mode 100644
index 0000000..c2c15c5
--- /dev/null
+++ b/src/lib/source/system/admin/seatd-srv/producer-for
@@ -0,0 +1 @@
+seatd-log
diff --git a/src/lib/source/system/admin/seatd-srv/run b/src/lib/source/system/admin/seatd-srv/run
new file mode 100644
index 0000000..a1101bf
--- /dev/null
+++ b/src/lib/source/system/admin/seatd-srv/run
@@ -0,0 +1,13 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://sr.ht/~kennylevinsen/seatd/
+
+fdmove -c 2 1
+
+if { s6-svperms -g video -E video . }
+
+seatd
+ -n3
+ -u root
+ -g seat
diff --git a/src/lib/source/system/admin/seatd-srv/type b/src/lib/source/system/admin/seatd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/admin/seatd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/bundle/default/type b/src/lib/source/system/bundle/default/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/default/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/bundle/firewall/type b/src/lib/source/system/bundle/firewall/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/firewall/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/bundle/mount/type b/src/lib/source/system/bundle/mount/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/mount/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/bundle/networking/type b/src/lib/source/system/bundle/networking/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/networking/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/bundle/seat-manager/type b/src/lib/source/system/bundle/seat-manager/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/seat-manager/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/bundle/system-bus/type b/src/lib/source/system/bundle/system-bus/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/system-bus/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/bundle/udev/type b/src/lib/source/system/bundle/udev/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/system/bundle/udev/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/system/cron/dcron-srv/producer-for b/src/lib/source/system/cron/dcron-srv/producer-for
new file mode 100644
index 0000000..742632d
--- /dev/null
+++ b/src/lib/source/system/cron/dcron-srv/producer-for
@@ -0,0 +1 @@
+dcron-log
diff --git a/src/lib/source/system/cron/dcron-srv/run b/src/lib/source/system/cron/dcron-srv/run
new file mode 100644
index 0000000..cd8101d
--- /dev/null
+++ b/src/lib/source/system/cron/dcron-srv/run
@@ -0,0 +1,13 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# http://www.jimpryor.net/linux/dcron.html
+
+# Will only work with the new fork (version 4.6 or newer)
+# https://github.com/ptchinster/dcron
+# See issue https://github.com/dubiousjim/dcron/issues/13
+
+fdmove -c 2 1
+
+crond
+ -f
diff --git a/src/lib/source/system/cron/dcron-srv/type b/src/lib/source/system/cron/dcron-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/cron/dcron-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/db/mariadbd-srv/producer-for b/src/lib/source/system/db/mariadbd-srv/producer-for
new file mode 100644
index 0000000..4e3f057
--- /dev/null
+++ b/src/lib/source/system/db/mariadbd-srv/producer-for
@@ -0,0 +1 @@
+mariadbd-log
diff --git a/src/lib/source/system/db/mariadbd-srv/run b/src/lib/source/system/db/mariadbd-srv/run
new file mode 100644
index 0000000..25408cf
--- /dev/null
+++ b/src/lib/source/system/db/mariadbd-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://mariadb.org/
+
+fdmove -c 2 1
+
+mariadbd
diff --git a/src/lib/source/system/db/mariadbd-srv/type b/src/lib/source/system/db/mariadbd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/db/mariadbd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/db/mysqld-srv/producer-for b/src/lib/source/system/db/mysqld-srv/producer-for
new file mode 100644
index 0000000..031e008
--- /dev/null
+++ b/src/lib/source/system/db/mysqld-srv/producer-for
@@ -0,0 +1 @@
+mysqld-log
diff --git a/src/lib/source/system/db/mysqld-srv/run b/src/lib/source/system/db/mysqld-srv/run
new file mode 100644
index 0000000..b3fe24f
--- /dev/null
+++ b/src/lib/source/system/db/mysqld-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.mysql.com/
+
+fdmove -c 2 1
+
+mysqld
diff --git a/src/lib/source/system/db/mysqld-srv/type b/src/lib/source/system/db/mysqld-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/db/mysqld-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/net/dhcpcd-srv/dependencies.d/udev b/src/lib/source/system/net/dhcpcd-srv/dependencies.d/udev
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/net/dhcpcd-srv/dependencies.d/udev
diff --git a/src/lib/source/system/net/dhcpcd-srv/producer-for b/src/lib/source/system/net/dhcpcd-srv/producer-for
new file mode 100644
index 0000000..a8b3dd1
--- /dev/null
+++ b/src/lib/source/system/net/dhcpcd-srv/producer-for
@@ -0,0 +1 @@
+dhcpcd-log
diff --git a/src/lib/source/system/net/dhcpcd-srv/run b/src/lib/source/system/net/dhcpcd-srv/run
new file mode 100644
index 0000000..1da5b0c
--- /dev/null
+++ b/src/lib/source/system/net/dhcpcd-srv/run
@@ -0,0 +1,9 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://roy.marples.name/projects/dhcpcd
+
+fdmove -c 2 1
+
+dhcpcd
+ -B
diff --git a/src/lib/source/system/net/dhcpcd-srv/type b/src/lib/source/system/net/dhcpcd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/net/dhcpcd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/net/wpa_supplicant-srv/dependencies.d/system-bus b/src/lib/source/system/net/wpa_supplicant-srv/dependencies.d/system-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/net/wpa_supplicant-srv/dependencies.d/system-bus
diff --git a/src/lib/source/system/net/wpa_supplicant-srv/producer-for b/src/lib/source/system/net/wpa_supplicant-srv/producer-for
new file mode 100644
index 0000000..17413d8
--- /dev/null
+++ b/src/lib/source/system/net/wpa_supplicant-srv/producer-for
@@ -0,0 +1 @@
+wpa_supplicant-log
diff --git a/src/lib/source/system/net/wpa_supplicant-srv/run b/src/lib/source/system/net/wpa_supplicant-srv/run
new file mode 100644
index 0000000..5585590
--- /dev/null
+++ b/src/lib/source/system/net/wpa_supplicant-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://w1.fi/wpa_supplicant/
+
+fdmove -c 2 1
+
+wpa_supplicant
+ -c /etc/wpa_supplicant/wpa_supplicant.conf
+ -g /run/wpa_supplicant
diff --git a/src/lib/source/system/net/wpa_supplicant-srv/type b/src/lib/source/system/net/wpa_supplicant-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/net/wpa_supplicant-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/ntp/chronyd-srv/dependencies.d/networking b/src/lib/source/system/ntp/chronyd-srv/dependencies.d/networking
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/ntp/chronyd-srv/dependencies.d/networking
diff --git a/src/lib/source/system/ntp/chronyd-srv/producer-for b/src/lib/source/system/ntp/chronyd-srv/producer-for
new file mode 100644
index 0000000..d1c93e7
--- /dev/null
+++ b/src/lib/source/system/ntp/chronyd-srv/producer-for
@@ -0,0 +1 @@
+chronyd-log
diff --git a/src/lib/source/system/ntp/chronyd-srv/run b/src/lib/source/system/ntp/chronyd-srv/run
new file mode 100644
index 0000000..5991339
--- /dev/null
+++ b/src/lib/source/system/ntp/chronyd-srv/run
@@ -0,0 +1,12 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://chrony-project.org/
+
+fdmove -c 2 1
+
+chronyd
+ -d
+ -u ntp
+ -f /etc/chrony/chrony.conf
+ -F 2
diff --git a/src/lib/source/system/ntp/chronyd-srv/type b/src/lib/source/system/ntp/chronyd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/ntp/chronyd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/other/cupsd-srv/producer-for b/src/lib/source/system/other/cupsd-srv/producer-for
new file mode 100644
index 0000000..7a53450
--- /dev/null
+++ b/src/lib/source/system/other/cupsd-srv/producer-for
@@ -0,0 +1 @@
+cupsd-log
diff --git a/src/lib/source/system/other/cupsd-srv/run b/src/lib/source/system/other/cupsd-srv/run
new file mode 100644
index 0000000..f9d84cd
--- /dev/null
+++ b/src/lib/source/system/other/cupsd-srv/run
@@ -0,0 +1,11 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.cups.org/
+
+fdmove -c 2 1
+
+cupsd
+ -f
+ -c /etc/cups/cupsd.conf
+ -s /etc/cups/cups-files.conf
diff --git a/src/lib/source/system/other/cupsd-srv/type b/src/lib/source/system/other/cupsd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/other/cupsd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/other/dbus-daemon-srv/notification-fd b/src/lib/source/system/other/dbus-daemon-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/system/other/dbus-daemon-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/system/other/dbus-daemon-srv/producer-for b/src/lib/source/system/other/dbus-daemon-srv/producer-for
new file mode 100644
index 0000000..f967dcb
--- /dev/null
+++ b/src/lib/source/system/other/dbus-daemon-srv/producer-for
@@ -0,0 +1 @@
+dbus-daemon-log
diff --git a/src/lib/source/system/other/dbus-daemon-srv/run b/src/lib/source/system/other/dbus-daemon-srv/run
new file mode 100644
index 0000000..73c44b6
--- /dev/null
+++ b/src/lib/source/system/other/dbus-daemon-srv/run
@@ -0,0 +1,15 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.freedesktop.org/wiki/Software/dbus/
+
+fdmove -c 2 1
+
+foreground { dbus-uuidgen --ensure=/etc/machine-id }
+foreground { install -m755 -g 81 -o 81 -d /run/dbus }
+
+dbus-daemon
+ --system
+ --nofork
+ --nopidfile
+ --print-pid=3
diff --git a/src/lib/source/system/other/dbus-daemon-srv/type b/src/lib/source/system/other/dbus-daemon-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/other/dbus-daemon-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/other/sshd-srv/dependencies.d/networking b/src/lib/source/system/other/sshd-srv/dependencies.d/networking
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/other/sshd-srv/dependencies.d/networking
diff --git a/src/lib/source/system/other/sshd-srv/producer-for b/src/lib/source/system/other/sshd-srv/producer-for
new file mode 100644
index 0000000..b8ef8c5
--- /dev/null
+++ b/src/lib/source/system/other/sshd-srv/producer-for
@@ -0,0 +1 @@
+sshd-log
diff --git a/src/lib/source/system/other/sshd-srv/run b/src/lib/source/system/other/sshd-srv/run
new file mode 100644
index 0000000..6282b83
--- /dev/null
+++ b/src/lib/source/system/other/sshd-srv/run
@@ -0,0 +1,17 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.openssh.com/
+
+fdmove -c 2 1
+
+foreground { /bin/ssh-keygen -A }
+
+ifelse -n { /bin/sshd -t }
+{
+ exit 125
+}
+
+/bin/sshd
+ -D
+ -e
diff --git a/src/lib/source/system/other/sshd-srv/type b/src/lib/source/system/other/sshd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/other/sshd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/web/gate-srv/dependencies.d/udev b/src/lib/source/system/web/gate-srv/dependencies.d/udev
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/web/gate-srv/dependencies.d/udev
diff --git a/src/lib/source/system/web/gate-srv/producer-for b/src/lib/source/system/web/gate-srv/producer-for
new file mode 100644
index 0000000..7679182
--- /dev/null
+++ b/src/lib/source/system/web/gate-srv/producer-for
@@ -0,0 +1 @@
+gate-log
diff --git a/src/lib/source/system/web/gate-srv/run b/src/lib/source/system/web/gate-srv/run
new file mode 100644
index 0000000..af410c2
--- /dev/null
+++ b/src/lib/source/system/web/gate-srv/run
@@ -0,0 +1,9 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://gate.minekube.com/
+
+fdmove -c 2 1
+
+gate
+ -c /etc/gate.yml
diff --git a/src/lib/source/system/web/gate-srv/type b/src/lib/source/system/web/gate-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/web/gate-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/web/nginx-srv/producer-for b/src/lib/source/system/web/nginx-srv/producer-for
new file mode 100644
index 0000000..307d740
--- /dev/null
+++ b/src/lib/source/system/web/nginx-srv/producer-for
@@ -0,0 +1 @@
+nginx-log
diff --git a/src/lib/source/system/web/nginx-srv/run b/src/lib/source/system/web/nginx-srv/run
new file mode 100644
index 0000000..6336aa7
--- /dev/null
+++ b/src/lib/source/system/web/nginx-srv/run
@@ -0,0 +1,9 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://nginx.org/
+
+fdmove -c 2 1
+
+nginx
+ -g "daemon off;error_log stderr info;user nginx;"
diff --git a/src/lib/source/system/web/nginx-srv/type b/src/lib/source/system/web/nginx-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/web/nginx-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/system/web/radicale-srv/dependencies.d/mount b/src/lib/source/system/web/radicale-srv/dependencies.d/mount
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/system/web/radicale-srv/dependencies.d/mount
diff --git a/src/lib/source/system/web/radicale-srv/producer-for b/src/lib/source/system/web/radicale-srv/producer-for
new file mode 100644
index 0000000..ed237cc
--- /dev/null
+++ b/src/lib/source/system/web/radicale-srv/producer-for
@@ -0,0 +1 @@
+radicale-log
diff --git a/src/lib/source/system/web/radicale-srv/run b/src/lib/source/system/web/radicale-srv/run
new file mode 100644
index 0000000..f2005d5
--- /dev/null
+++ b/src/lib/source/system/web/radicale-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://radicale.org/v3.html
+
+fdmove -c 2 1
+
+s6-setuidgid radicale
+
+radicale
diff --git a/src/lib/source/system/web/radicale-srv/type b/src/lib/source/system/web/radicale-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/system/web/radicale-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/pipewire b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/pipewire
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/pipewire
diff --git a/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/session-bus b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/xdg-runtime-dir b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/xdg-runtime-dir
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/dependencies.d/xdg-runtime-dir
diff --git a/src/lib/source/user/audio-daemon/pipewire-pulse-srv/producer-for b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/producer-for
new file mode 100644
index 0000000..d7dcdf1
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/producer-for
@@ -0,0 +1 @@
+pipewire-pulse-log
diff --git a/src/lib/source/user/audio-daemon/pipewire-pulse-srv/run b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/run
new file mode 100644
index 0000000..c8dec99
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.pipewire.org/
+
+fdmove -c 2 1
+
+export PIPEWIRE_PULSE_NOTIFICATION_FD 3
+
+pipewire-pulse
diff --git a/src/lib/source/user/audio-daemon/pipewire-pulse-srv/type b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-pulse-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/session-bus b/src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/xdg-runtime-dir b/src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/xdg-runtime-dir
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-srv/dependencies.d/xdg-runtime-dir
diff --git a/src/lib/source/user/audio-daemon/pipewire-srv/notification-fd b/src/lib/source/user/audio-daemon/pipewire-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/audio-daemon/pipewire-srv/producer-for b/src/lib/source/user/audio-daemon/pipewire-srv/producer-for
new file mode 100644
index 0000000..ea63659
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-srv/producer-for
@@ -0,0 +1 @@
+pipewire-log
diff --git a/src/lib/source/user/audio-daemon/pipewire-srv/run b/src/lib/source/user/audio-daemon/pipewire-srv/run
new file mode 100644
index 0000000..c461475
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.pipewire.org/
+
+fdmove -c 2 1
+
+export PIPEWIRE_NOTIFICATION_FD 3
+
+pipewire
diff --git a/src/lib/source/user/audio-daemon/pipewire-srv/type b/src/lib/source/user/audio-daemon/pipewire-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/pipewire-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/pipewire b/src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/pipewire
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/pipewire
diff --git a/src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/session-bus b/src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/wireplumber-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/audio-daemon/wireplumber-srv/producer-for b/src/lib/source/user/audio-daemon/wireplumber-srv/producer-for
new file mode 100644
index 0000000..e9cd359
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/wireplumber-srv/producer-for
@@ -0,0 +1 @@
+wireplumber-log
diff --git a/src/lib/source/user/audio-daemon/wireplumber-srv/run b/src/lib/source/user/audio-daemon/wireplumber-srv/run
new file mode 100644
index 0000000..dfeca2b
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/wireplumber-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://pipewire.pages.freedesktop.org/wireplumber/
+
+fdmove -c 2 1
+
+wireplumber
diff --git a/src/lib/source/user/audio-daemon/wireplumber-srv/type b/src/lib/source/user/audio-daemon/wireplumber-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/audio-daemon/wireplumber-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/bundle/audio/type b/src/lib/source/user/bundle/audio/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/user/bundle/audio/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/user/bundle/compositor/type b/src/lib/source/user/bundle/compositor/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/user/bundle/compositor/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/user/bundle/default/type b/src/lib/source/user/bundle/default/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/user/bundle/default/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/user/bundle/session-bus/type b/src/lib/source/user/bundle/session-bus/type
new file mode 100644
index 0000000..757b422
--- /dev/null
+++ b/src/lib/source/user/bundle/session-bus/type
@@ -0,0 +1 @@
+bundle
diff --git a/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/dependencies.d/compositor b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/producer-for b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/producer-for
new file mode 100644
index 0000000..fd3c6ac
--- /dev/null
+++ b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/producer-for
@@ -0,0 +1 @@
+wl-clip-persist-log
diff --git a/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/run b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/run
new file mode 100644
index 0000000..ef86496
--- /dev/null
+++ b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/run
@@ -0,0 +1,9 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/Linus789/wl-clip-persist
+
+fdmove -c 2 1
+
+wl-clip-persist
+ --clipboard both
diff --git a/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/type b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/clipboard-manager/wl-clip-persist-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/compositor/Hyprland-srv/dependencies.d/xdg-runtime-dir b/src/lib/source/user/compositor/Hyprland-srv/dependencies.d/xdg-runtime-dir
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/compositor/Hyprland-srv/dependencies.d/xdg-runtime-dir
diff --git a/src/lib/source/user/compositor/Hyprland-srv/finish b/src/lib/source/user/compositor/Hyprland-srv/finish
new file mode 100644
index 0000000..f0a7d51
--- /dev/null
+++ b/src/lib/source/user/compositor/Hyprland-srv/finish
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://hyprland.org/
+
+background { user-rc stop Hyprland }
+
+exit 125
diff --git a/src/lib/source/user/compositor/Hyprland-srv/producer-for b/src/lib/source/user/compositor/Hyprland-srv/producer-for
new file mode 100644
index 0000000..ed2fbff
--- /dev/null
+++ b/src/lib/source/user/compositor/Hyprland-srv/producer-for
@@ -0,0 +1 @@
+Hyprland-log
diff --git a/src/lib/source/user/compositor/Hyprland-srv/run b/src/lib/source/user/compositor/Hyprland-srv/run
new file mode 100644
index 0000000..eb20b5e
--- /dev/null
+++ b/src/lib/source/user/compositor/Hyprland-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://hyprland.org/
+
+fdmove -c 2 1
+
+Hyprland
diff --git a/src/lib/source/user/compositor/Hyprland-srv/type b/src/lib/source/user/compositor/Hyprland-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/compositor/Hyprland-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/desktop-widget/waybar-srv/dependencies.d/compositor b/src/lib/source/user/desktop-widget/waybar-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/waybar-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/desktop-widget/waybar-srv/notification-fd b/src/lib/source/user/desktop-widget/waybar-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/waybar-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/desktop-widget/waybar-srv/producer-for b/src/lib/source/user/desktop-widget/waybar-srv/producer-for
new file mode 100644
index 0000000..24b4d63
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/waybar-srv/producer-for
@@ -0,0 +1 @@
+waybar-log
diff --git a/src/lib/source/user/desktop-widget/waybar-srv/run b/src/lib/source/user/desktop-widget/waybar-srv/run
new file mode 100644
index 0000000..603a400
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/waybar-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/Alexays/Waybar
+
+fdmove -c 2 1
+
+waybar
diff --git a/src/lib/source/user/desktop-widget/waybar-srv/type b/src/lib/source/user/desktop-widget/waybar-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/waybar-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/desktop-widget/yambar-srv/dependencies.d/compositor b/src/lib/source/user/desktop-widget/yambar-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/yambar-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/desktop-widget/yambar-srv/notification-fd b/src/lib/source/user/desktop-widget/yambar-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/yambar-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/desktop-widget/yambar-srv/producer-for b/src/lib/source/user/desktop-widget/yambar-srv/producer-for
new file mode 100644
index 0000000..34f9cee
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/yambar-srv/producer-for
@@ -0,0 +1 @@
+yambar-log
diff --git a/src/lib/source/user/desktop-widget/yambar-srv/run b/src/lib/source/user/desktop-widget/yambar-srv/run
new file mode 100644
index 0000000..a788f80
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/yambar-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://codeberg.org/dnkl/yambar
+
+fdmove -c 2 1
+
+yambar
+ -s
+ -p3
diff --git a/src/lib/source/user/desktop-widget/yambar-srv/type b/src/lib/source/user/desktop-widget/yambar-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/desktop-widget/yambar-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/compositor b/src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/session-bus b/src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/dunst-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/notification-daemon/dunst-srv/notification-fd b/src/lib/source/user/notification-daemon/dunst-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/dunst-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/notification-daemon/dunst-srv/producer-for b/src/lib/source/user/notification-daemon/dunst-srv/producer-for
new file mode 100644
index 0000000..a55f49b
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/dunst-srv/producer-for
@@ -0,0 +1 @@
+dunst-log
diff --git a/src/lib/source/user/notification-daemon/dunst-srv/run b/src/lib/source/user/notification-daemon/dunst-srv/run
new file mode 100644
index 0000000..cad04b2
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/dunst-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://dunst-project.org/
+
+fdmove -c 2 1
+
+dunst
diff --git a/src/lib/source/user/notification-daemon/dunst-srv/type b/src/lib/source/user/notification-daemon/dunst-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/dunst-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/compositor b/src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/session-bus b/src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/fnott-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/notification-daemon/fnott-srv/notification-fd b/src/lib/source/user/notification-daemon/fnott-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/fnott-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/notification-daemon/fnott-srv/producer-for b/src/lib/source/user/notification-daemon/fnott-srv/producer-for
new file mode 100644
index 0000000..71dd61e
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/fnott-srv/producer-for
@@ -0,0 +1 @@
+fnott-log
diff --git a/src/lib/source/user/notification-daemon/fnott-srv/run b/src/lib/source/user/notification-daemon/fnott-srv/run
new file mode 100644
index 0000000..271f061
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/fnott-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://codeberg.org/dnkl/fnott
+
+fdmove -c 2 1
+
+fnott
+ -s
+ -p3
diff --git a/src/lib/source/user/notification-daemon/fnott-srv/type b/src/lib/source/user/notification-daemon/fnott-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/fnott-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/notification-daemon/mako-srv/dependencies.d/compositor b/src/lib/source/user/notification-daemon/mako-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/mako-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/notification-daemon/mako-srv/dependencies.d/session-bus b/src/lib/source/user/notification-daemon/mako-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/mako-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/notification-daemon/mako-srv/notification-fd b/src/lib/source/user/notification-daemon/mako-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/mako-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/notification-daemon/mako-srv/producer-for b/src/lib/source/user/notification-daemon/mako-srv/producer-for
new file mode 100644
index 0000000..9b15e90
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/mako-srv/producer-for
@@ -0,0 +1 @@
+mako-log
diff --git a/src/lib/source/user/notification-daemon/mako-srv/run b/src/lib/source/user/notification-daemon/mako-srv/run
new file mode 100644
index 0000000..d7a8269
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/mako-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/emersion/mako
+
+fdmove -c 2 1
+
+mako
diff --git a/src/lib/source/user/notification-daemon/mako-srv/type b/src/lib/source/user/notification-daemon/mako-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/mako-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/compositor b/src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/session-bus b/src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/swaync-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/notification-daemon/swaync-srv/notification-fd b/src/lib/source/user/notification-daemon/swaync-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/swaync-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/notification-daemon/swaync-srv/producer-for b/src/lib/source/user/notification-daemon/swaync-srv/producer-for
new file mode 100644
index 0000000..7ab5ae4
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/swaync-srv/producer-for
@@ -0,0 +1 @@
+swaync-log
diff --git a/src/lib/source/user/notification-daemon/swaync-srv/run b/src/lib/source/user/notification-daemon/swaync-srv/run
new file mode 100644
index 0000000..c5bfbe9
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/swaync-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/ErikReider/SwayNotificationCenter
+
+fdmove -c 2 1
+
+swaync
diff --git a/src/lib/source/user/notification-daemon/swaync-srv/type b/src/lib/source/user/notification-daemon/swaync-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/notification-daemon/swaync-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/other/at-spi-bus-launcher-srv/dependencies.d/session-bus b/src/lib/source/user/other/at-spi-bus-launcher-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/other/at-spi-bus-launcher-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/other/at-spi-bus-launcher-srv/producer-for b/src/lib/source/user/other/at-spi-bus-launcher-srv/producer-for
new file mode 100644
index 0000000..ac90fc5
--- /dev/null
+++ b/src/lib/source/user/other/at-spi-bus-launcher-srv/producer-for
@@ -0,0 +1 @@
+at-spi-bus-launcher-log
diff --git a/src/lib/source/user/other/at-spi-bus-launcher-srv/run b/src/lib/source/user/other/at-spi-bus-launcher-srv/run
new file mode 100644
index 0000000..57f4b9c
--- /dev/null
+++ b/src/lib/source/user/other/at-spi-bus-launcher-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://gitlab.gnome.org/GNOME/at-spi2-core/-/blob/main/bus/README.md
+
+fdmove -c 2 1
+
+at-spi-bus-launcher
diff --git a/src/lib/source/user/other/at-spi-bus-launcher-srv/type b/src/lib/source/user/other/at-spi-bus-launcher-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/other/at-spi-bus-launcher-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/other/at-spi2-registryd-srv/producer-for b/src/lib/source/user/other/at-spi2-registryd-srv/producer-for
new file mode 100644
index 0000000..dbdc009
--- /dev/null
+++ b/src/lib/source/user/other/at-spi2-registryd-srv/producer-for
@@ -0,0 +1 @@
+at-spi2-registryd-log
diff --git a/src/lib/source/user/other/at-spi2-registryd-srv/run b/src/lib/source/user/other/at-spi2-registryd-srv/run
new file mode 100644
index 0000000..7a30a71
--- /dev/null
+++ b/src/lib/source/user/other/at-spi2-registryd-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://gitlab.gnome.org/GNOME/at-spi2-core
+
+fdmove -c 2 1
+
+at-spi2-registryd
diff --git a/src/lib/source/user/other/at-spi2-registryd-srv/type b/src/lib/source/user/other/at-spi2-registryd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/other/at-spi2-registryd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/other/dbus-daemon-srv/dependencies.d/xdg-runtime-dir b/src/lib/source/user/other/dbus-daemon-srv/dependencies.d/xdg-runtime-dir
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/other/dbus-daemon-srv/dependencies.d/xdg-runtime-dir
diff --git a/src/lib/source/user/other/dbus-daemon-srv/notification-fd b/src/lib/source/user/other/dbus-daemon-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/other/dbus-daemon-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/other/dbus-daemon-srv/producer-for b/src/lib/source/user/other/dbus-daemon-srv/producer-for
new file mode 100644
index 0000000..f967dcb
--- /dev/null
+++ b/src/lib/source/user/other/dbus-daemon-srv/producer-for
@@ -0,0 +1 @@
+dbus-daemon-log
diff --git a/src/lib/source/user/other/dbus-daemon-srv/run b/src/lib/source/user/other/dbus-daemon-srv/run
new file mode 100644
index 0000000..df3d801
--- /dev/null
+++ b/src/lib/source/user/other/dbus-daemon-srv/run
@@ -0,0 +1,16 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.freedesktop.org/wiki/Software/dbus/
+
+fdmove -c 2 1
+
+importas -Si DBUS_SESSION_BUS_ADDRESS
+
+dbus-daemon
+ --session
+ --nofork
+ --nopidfile
+ --nosyslog
+ --address=${DBUS_SESSION_BUS_ADDRESS}
+ --print-pid=3
diff --git a/src/lib/source/user/other/dbus-daemon-srv/type b/src/lib/source/user/other/dbus-daemon-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/other/dbus-daemon-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/other/dconf-service-srv/producer-for b/src/lib/source/user/other/dconf-service-srv/producer-for
new file mode 100644
index 0000000..6afcfa9
--- /dev/null
+++ b/src/lib/source/user/other/dconf-service-srv/producer-for
@@ -0,0 +1 @@
+dconf-service-log
diff --git a/src/lib/source/user/other/dconf-service-srv/run b/src/lib/source/user/other/dconf-service-srv/run
new file mode 100644
index 0000000..a3a106d
--- /dev/null
+++ b/src/lib/source/user/other/dconf-service-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://gitlab.gnome.org/GNOME/dconf/
+
+fdmove -c 2 1
+
+dconf-service
diff --git a/src/lib/source/user/other/dconf-service-srv/type b/src/lib/source/user/other/dconf-service-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/other/dconf-service-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/other/foot-srv/dependencies.d/compositor b/src/lib/source/user/other/foot-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/other/foot-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/other/foot-srv/notification-fd b/src/lib/source/user/other/foot-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/src/lib/source/user/other/foot-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/src/lib/source/user/other/foot-srv/producer-for b/src/lib/source/user/other/foot-srv/producer-for
new file mode 100644
index 0000000..7830a7f
--- /dev/null
+++ b/src/lib/source/user/other/foot-srv/producer-for
@@ -0,0 +1 @@
+foot-log
diff --git a/src/lib/source/user/other/foot-srv/run b/src/lib/source/user/other/foot-srv/run
new file mode 100644
index 0000000..83f3193
--- /dev/null
+++ b/src/lib/source/user/other/foot-srv/run
@@ -0,0 +1,11 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://codeberg.org/dnkl/foot
+
+fdmove -c 2 1
+
+foot
+ -S
+ -s
+ -p3
diff --git a/src/lib/source/user/other/foot-srv/type b/src/lib/source/user/other/foot-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/other/foot-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/other/mpd-srv/dependencies.d/audio b/src/lib/source/user/other/mpd-srv/dependencies.d/audio
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/other/mpd-srv/dependencies.d/audio
diff --git a/src/lib/source/user/other/mpd-srv/producer-for b/src/lib/source/user/other/mpd-srv/producer-for
new file mode 100644
index 0000000..a7aaae5
--- /dev/null
+++ b/src/lib/source/user/other/mpd-srv/producer-for
@@ -0,0 +1 @@
+mpd-log
diff --git a/src/lib/source/user/other/mpd-srv/run b/src/lib/source/user/other/mpd-srv/run
new file mode 100644
index 0000000..299a956
--- /dev/null
+++ b/src/lib/source/user/other/mpd-srv/run
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://www.musicpd.org/
+
+fdmove -c 2 1
+
+mpd
+ --no-daemon
+ --stderr
diff --git a/src/lib/source/user/other/mpd-srv/type b/src/lib/source/user/other/mpd-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/other/mpd-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/dependencies.d/compositor b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/producer-for b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/producer-for
new file mode 100644
index 0000000..7cf9215
--- /dev/null
+++ b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/producer-for
@@ -0,0 +1 @@
+hyprpaper-log
diff --git a/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/run b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/run
new file mode 100644
index 0000000..9362ce5
--- /dev/null
+++ b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/hyprwm/hyprpaper
+
+fdmove -c 2 1
+
+hyprpaper
diff --git a/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/type b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/wallpaper-daemon/hyprpaper-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/dependencies.d/compositor b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/producer-for b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/producer-for
new file mode 100644
index 0000000..e9d5da6
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/producer-for
@@ -0,0 +1 @@
+xdg-desktop-portal-hyprland-log
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/run b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/run
new file mode 100644
index 0000000..0bb465c
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://wiki.hyprland.org/Hypr-Ecosystem/xdg-desktop-portal-hyprland/
+
+fdmove -c 2 1
+
+xdg-desktop-portal-hyprland
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/type b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-hyprland-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-srv/dependencies.d/compositor b/src/lib/source/user/xdg/xdg-desktop-portal-srv/dependencies.d/compositor
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-srv/dependencies.d/compositor
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-srv/producer-for b/src/lib/source/user/xdg/xdg-desktop-portal-srv/producer-for
new file mode 100644
index 0000000..67fad61
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-srv/producer-for
@@ -0,0 +1 @@
+xdg-desktop-portal-log
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-srv/run b/src/lib/source/user/xdg/xdg-desktop-portal-srv/run
new file mode 100644
index 0000000..39ddd02
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/flatpak/xdg-desktop-portal
+
+fdmove -c 2 1
+
+xdg-desktop-portal
diff --git a/src/lib/source/user/xdg/xdg-desktop-portal-srv/type b/src/lib/source/user/xdg/xdg-desktop-portal-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-desktop-portal-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/xdg/xdg-document-portal-srv/dependencies.d/session-bus b/src/lib/source/user/xdg/xdg-document-portal-srv/dependencies.d/session-bus
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-document-portal-srv/dependencies.d/session-bus
diff --git a/src/lib/source/user/xdg/xdg-document-portal-srv/producer-for b/src/lib/source/user/xdg/xdg-document-portal-srv/producer-for
new file mode 100644
index 0000000..a16df5d
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-document-portal-srv/producer-for
@@ -0,0 +1 @@
+xdg-document-portal-log
diff --git a/src/lib/source/user/xdg/xdg-document-portal-srv/run b/src/lib/source/user/xdg/xdg-document-portal-srv/run
new file mode 100644
index 0000000..60196c5
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-document-portal-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/flatpak/xdg-desktop-portal
+
+fdmove -c 2 1
+
+xdg-document-portal
diff --git a/src/lib/source/user/xdg/xdg-document-portal-srv/type b/src/lib/source/user/xdg/xdg-document-portal-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-document-portal-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/xdg/xdg-permission-store-srv/producer-for b/src/lib/source/user/xdg/xdg-permission-store-srv/producer-for
new file mode 100644
index 0000000..62ad397
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-permission-store-srv/producer-for
@@ -0,0 +1 @@
+xdg-permission-store-log
diff --git a/src/lib/source/user/xdg/xdg-permission-store-srv/run b/src/lib/source/user/xdg/xdg-permission-store-srv/run
new file mode 100644
index 0000000..2175f63
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-permission-store-srv/run
@@ -0,0 +1,8 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://github.com/flatpak/xdg-desktop-portal
+
+fdmove -c 2 1
+
+xdg-permission-store
diff --git a/src/lib/source/user/xdg/xdg-permission-store-srv/type b/src/lib/source/user/xdg/xdg-permission-store-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-permission-store-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/src/lib/source/user/xdg/xdg-runtime-dir/down b/src/lib/source/user/xdg/xdg-runtime-dir/down
new file mode 100644
index 0000000..6a12661
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-runtime-dir/down
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://specifications.freedesktop.org/basedir-spec/latest/
+
+fdmove -c 2 1
+
+importas -Si XDG_RUNTIME_DIR
+
+rm -Rf ${XDG_RUNTIME_DIR}
diff --git a/src/lib/source/user/xdg/xdg-runtime-dir/type b/src/lib/source/user/xdg/xdg-runtime-dir/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-runtime-dir/type
@@ -0,0 +1 @@
+oneshot
diff --git a/src/lib/source/user/xdg/xdg-runtime-dir/up b/src/lib/source/user/xdg/xdg-runtime-dir/up
new file mode 100644
index 0000000..518e994
--- /dev/null
+++ b/src/lib/source/user/xdg/xdg-runtime-dir/up
@@ -0,0 +1,10 @@
+#!@shebangdir@/execlineb -P
+
+# ISC license.
+# https://specifications.freedesktop.org/basedir-spec/latest/
+
+fdmove -c 2 1
+
+importas -Si XDG_RUNTIME_DIR
+
+if { mkdir -p -m700 -- ${XDG_RUNTIME_DIR} }