sps-extra · log · files · refs · tags · releases · people · languages · GitHub · commit
6b073e9
Add SysV init and ship daemon scripts for every PID 1.
Parents
Stat
admin/at/files/atd.service | 10 +++ admin/at/files/dinit-atd | 4 + admin/at/files/openrc-atd | 11 +++ admin/at/files/runit-atd | 3 + admin/at/files/s6-atd | 3 + admin/at/files/shepherd-atd.scm | 9 +++ admin/at/files/sysvinit-atd | 41 ++++++++++ admin/at/recipe | 10 ++- admin/chrony/files/chronyd.service | 10 +++ admin/chrony/files/dinit-chronyd | 4 + admin/chrony/files/openrc-chronyd | 11 +++ admin/chrony/files/runit-chronyd | 3 + admin/chrony/files/s6-chronyd | 3 + admin/chrony/files/shepherd-chronyd.scm | 9 +++ admin/chrony/files/sysvinit-chronyd | 41 ++++++++++ admin/chrony/recipe | 10 ++- admin/cronie/files/crond.service | 10 +++ admin/cronie/files/dinit-crond | 4 + admin/cronie/files/openrc-crond | 11 +++ admin/cronie/files/runit-crond | 3 + admin/cronie/files/s6-crond | 3 + admin/cronie/files/shepherd-crond.scm | 9 +++ admin/cronie/files/sysvinit-crond | 41 ++++++++++ admin/cronie/recipe | 10 ++- admin/haveged/files/dinit-haveged | 4 + admin/haveged/files/haveged.service | 9 +++ admin/haveged/files/openrc-haveged | 10 +++ admin/haveged/files/runit-haveged | 3 + admin/haveged/files/s6-haveged | 3 + admin/haveged/files/shepherd-haveged.scm | 9 +++ admin/haveged/files/sysvinit-haveged | 41 ++++++++++ admin/haveged/recipe | 10 ++- admin/tlp/files/dinit-tlp | 3 + admin/tlp/files/openrc-tlp | 10 +++ admin/tlp/files/runit-tlp | 4 + admin/tlp/files/s6-tlp | 4 + admin/tlp/files/shepherd-tlp.scm | 9 +++ admin/tlp/files/sysvinit-tlp | 42 ++++++++++ admin/tlp/files/tlp.service | 11 +++ admin/tlp/recipe | 10 ++- audio/pipewire/files/dinit-pipewire | 5 ++ audio/pipewire/files/openrc-pipewire | 11 +++ audio/pipewire/files/pipewire.service | 10 +++ audio/pipewire/files/runit-pipewire | 3 + audio/pipewire/files/s6-pipewire | 3 + audio/pipewire/files/shepherd-pipewire.scm | 9 +++ audio/pipewire/files/sysvinit-pipewire | 41 ++++++++++ audio/pipewire/recipe | 10 ++- audio/wireplumber/files/dinit-wireplumber | 5 ++ audio/wireplumber/files/openrc-wireplumber | 11 +++ audio/wireplumber/files/runit-wireplumber | 3 + audio/wireplumber/files/s6-wireplumber | 3 + audio/wireplumber/files/shepherd-wireplumber.scm | 9 +++ audio/wireplumber/files/sysvinit-wireplumber | 41 ++++++++++ audio/wireplumber/files/wireplumber.service | 10 +++ audio/wireplumber/recipe | 10 ++- db/mariadb/files/dinit-mariadbd | 4 + db/mariadb/files/runit-mariadbd | 4 + db/mariadb/files/s6-mariadbd | 4 + db/mariadb/files/shepherd-mariadbd.scm | 9 +++ db/mariadb/files/sysvinit-mariadbd | 42 ++++++++++ db/mariadb/recipe | 9 ++- db/memcached/files/dinit-memcached | 4 + db/memcached/files/runit-memcached | 3 + db/memcached/files/s6-memcached | 3 + db/memcached/files/shepherd-memcached.scm | 9 +++ db/memcached/files/sysvinit-memcached | 41 ++++++++++ db/memcached/recipe | 9 ++- db/postgresql/files/dinit-postgresql | 4 + db/postgresql/files/runit-postgresql | 4 + db/postgresql/files/s6-postgresql | 4 + db/postgresql/files/shepherd-postgresql.scm | 9 +++ db/postgresql/files/sysvinit-postgresql | 42 ++++++++++ db/postgresql/recipe | 9 ++- db/valkey/files/dinit-valkey | 4 + db/valkey/files/runit-valkey | 3 + db/valkey/files/s6-valkey | 3 + db/valkey/files/shepherd-valkey.scm | 9 +++ db/valkey/files/sysvinit-valkey | 41 ++++++++++ db/valkey/recipe | 9 ++- desktop/sddm/files/dinit-sddm | 5 ++ desktop/sddm/files/openrc-sddm | 7 +- desktop/sddm/files/runit-sddm | 3 + desktop/sddm/files/s6-sddm | 3 + desktop/sddm/files/sddm.service | 6 +- desktop/sddm/files/shepherd-sddm.scm | 9 +++ desktop/sddm/files/sysvinit-sddm | 41 ++++++++++ desktop/sddm/recipe | 9 ++- devel/distcc/files/dinit-distccd | 4 + devel/distcc/files/runit-distccd | 3 + devel/distcc/files/s6-distccd | 3 + devel/distcc/files/shepherd-distccd.scm | 9 +++ devel/distcc/files/sysvinit-distccd | 41 ++++++++++ devel/distcc/recipe | 9 ++- disk/smartmontools/files/dinit-smartd | 4 + disk/smartmontools/files/openrc-smartd | 11 +++ disk/smartmontools/files/runit-smartd | 3 + disk/smartmontools/files/s6-smartd | 3 + disk/smartmontools/files/shepherd-smartd.scm | 9 +++ disk/smartmontools/files/smartd.service | 10 +++ disk/smartmontools/files/sysvinit-smartd | 41 ++++++++++ disk/smartmontools/recipe | 10 ++- fs/nfs-utils/files/dinit-nfs-server | 4 + fs/nfs-utils/files/runit-nfs-server | 6 ++ fs/nfs-utils/files/s6-nfs-server | 6 ++ fs/nfs-utils/files/shepherd-nfs-server.scm | 9 +++ fs/nfs-utils/files/sysvinit-nfs-server | 44 ++++++++++ fs/nfs-utils/recipe | 9 ++- net/avahi/files/dinit-avahi-daemon | 5 ++ net/avahi/files/runit-avahi-daemon | 3 + net/avahi/files/s6-avahi-daemon | 3 + net/avahi/files/shepherd-avahi-daemon.scm | 9 +++ net/avahi/files/sysvinit-avahi-daemon | 41 ++++++++++ net/avahi/recipe | 9 ++- net/bluez/files/bluetooth.service | 4 +- net/bluez/files/dinit-bluetooth | 5 ++ net/bluez/files/openrc-bluetooth | 7 +- net/bluez/files/runit-bluetooth | 3 + net/bluez/files/s6-bluetooth | 3 + net/bluez/files/shepherd-bluetooth.scm | 9 +++ net/bluez/files/sysvinit-bluetooth | 41 ++++++++++ net/bluez/recipe | 9 ++- net/conntrack-tools/files/dinit-conntrackd | 4 + net/conntrack-tools/files/runit-conntrackd | 3 + net/conntrack-tools/files/s6-conntrackd | 3 + net/conntrack-tools/files/shepherd-conntrackd.scm | 9 +++ net/conntrack-tools/files/sysvinit-conntrackd | 41 ++++++++++ net/conntrack-tools/recipe | 9 ++- net/dnsmasq/files/dinit-dnsmasq | 4 + net/dnsmasq/files/runit-dnsmasq | 3 + net/dnsmasq/files/s6-dnsmasq | 3 + net/dnsmasq/files/shepherd-dnsmasq.scm | 9 +++ net/dnsmasq/files/sysvinit-dnsmasq | 41 ++++++++++ net/dnsmasq/recipe | 9 ++- net/dropbear/files/dinit-dropbear | 4 + net/dropbear/files/runit-dropbear | 7 ++ net/dropbear/files/s6-dropbear | 7 ++ net/dropbear/files/shepherd-dropbear.scm | 9 +++ net/dropbear/files/sysvinit-dropbear | 45 +++++++++++ net/dropbear/recipe | 9 ++- net/haproxy/files/dinit-haproxy | 4 + net/haproxy/files/runit-haproxy | 3 + net/haproxy/files/s6-haproxy | 3 + net/haproxy/files/shepherd-haproxy.scm | 9 +++ net/haproxy/files/sysvinit-haproxy | 41 ++++++++++ net/haproxy/recipe | 9 ++- net/iwd/files/dinit-iwd | 5 ++ net/iwd/files/iwd.service | 4 +- net/iwd/files/openrc-iwd | 6 +- net/iwd/files/runit-iwd | 3 + net/iwd/files/s6-iwd | 3 + net/iwd/files/shepherd-iwd.scm | 9 +++ net/iwd/files/sysvinit-iwd | 41 ++++++++++ net/iwd/recipe | 9 ++- net/lighttpd/files/dinit-lighttpd | 4 + net/lighttpd/files/runit-lighttpd | 3 + net/lighttpd/files/s6-lighttpd | 3 + net/lighttpd/files/shepherd-lighttpd.scm | 9 +++ net/lighttpd/files/sysvinit-lighttpd | 41 ++++++++++ net/lighttpd/recipe | 9 ++- net/networkmanager/files/NetworkManager.service | 6 +- net/networkmanager/files/dinit-NetworkManager | 5 ++ net/networkmanager/files/openrc-NetworkManager | 5 +- net/networkmanager/files/runit-NetworkManager | 3 + net/networkmanager/files/s6-NetworkManager | 3 + .../files/shepherd-NetworkManager.scm | 9 +++ net/networkmanager/files/sysvinit-NetworkManager | 41 ++++++++++ net/networkmanager/recipe | 9 ++- net/nftables/files/dinit-nftables | 3 + net/nftables/files/nftables.service | 10 +++ net/nftables/files/openrc-nftables | 9 +++ net/nftables/files/runit-nftables | 4 + net/nftables/files/s6-nftables | 4 + net/nftables/files/shepherd-nftables.scm | 9 +++ net/nftables/files/sysvinit-nftables | 42 ++++++++++ net/nftables/recipe | 10 ++- net/openvpn/files/dinit-openvpn | 4 + net/openvpn/files/runit-openvpn | 3 + net/openvpn/files/s6-openvpn | 3 + net/openvpn/files/shepherd-openvpn.scm | 9 +++ net/openvpn/files/sysvinit-openvpn | 41 ++++++++++ net/openvpn/recipe | 9 ++- net/syncthing/files/dinit-syncthing | 4 + net/syncthing/files/openrc-syncthing | 15 ++++ net/syncthing/files/runit-syncthing | 4 + net/syncthing/files/s6-syncthing | 4 + net/syncthing/files/shepherd-syncthing.scm | 9 +++ net/syncthing/files/syncthing.service | 10 +++ net/syncthing/files/sysvinit-syncthing | 42 ++++++++++ net/syncthing/recipe | 10 ++- net/tinyproxy/files/dinit-tinyproxy | 4 + net/tinyproxy/files/runit-tinyproxy | 3 + net/tinyproxy/files/s6-tinyproxy | 3 + net/tinyproxy/files/shepherd-tinyproxy.scm | 9 +++ net/tinyproxy/files/sysvinit-tinyproxy | 41 ++++++++++ net/tinyproxy/recipe | 9 ++- net/tor/files/dinit-tor | 4 + net/tor/files/runit-tor | 3 + net/tor/files/s6-tor | 3 + net/tor/files/shepherd-tor.scm | 9 +++ net/tor/files/sysvinit-tor | 41 ++++++++++ net/tor/recipe | 9 ++- net/transmission/files/dinit-transmission-daemon | 4 + net/transmission/files/openrc-transmission-daemon | 11 +++ net/transmission/files/runit-transmission-daemon | 3 + net/transmission/files/s6-transmission-daemon | 3 + .../files/shepherd-transmission-daemon.scm | 9 +++ .../files/sysvinit-transmission-daemon | 41 ++++++++++ net/transmission/files/transmission-daemon.service | 10 +++ net/transmission/recipe | 10 ++- net/unbound/files/dinit-unbound | 4 + net/unbound/files/runit-unbound | 3 + net/unbound/files/s6-unbound | 3 + net/unbound/files/shepherd-unbound.scm | 9 +++ net/unbound/files/sysvinit-unbound | 41 ++++++++++ net/unbound/recipe | 9 ++- net/wpa_supplicant/files/dinit-wpa_supplicant | 5 ++ net/wpa_supplicant/files/openrc-wpa_supplicant | 11 +++ net/wpa_supplicant/files/runit-wpa_supplicant | 3 + net/wpa_supplicant/files/s6-wpa_supplicant | 3 + .../files/shepherd-wpa_supplicant.scm | 9 +++ net/wpa_supplicant/files/sysvinit-wpa_supplicant | 41 ++++++++++ net/wpa_supplicant/files/wpa_supplicant.service | 10 +++ net/wpa_supplicant/recipe | 10 ++- print/cups/files/cups.service | 4 +- print/cups/files/dinit-cupsd | 5 ++ print/cups/files/openrc-cupsd | 4 +- print/cups/files/runit-cupsd | 3 + print/cups/files/s6-cupsd | 3 + print/cups/files/shepherd-cupsd.scm | 9 +++ print/cups/files/sysvinit-cupsd | 41 ++++++++++ print/cups/recipe | 9 ++- security/fail2ban/files/dinit-fail2ban | 4 + security/fail2ban/files/runit-fail2ban | 3 + security/fail2ban/files/s6-fail2ban | 3 + security/fail2ban/files/shepherd-fail2ban.scm | 9 +++ security/fail2ban/files/sysvinit-fail2ban | 41 ++++++++++ security/fail2ban/recipe | 9 ++- sys/dinit/recipe | 3 +- sys/elogind/files/dinit-elogind | 5 ++ sys/elogind/files/elogind.service | 10 +++ sys/elogind/files/openrc-elogind | 11 +++ sys/elogind/files/runit-elogind | 3 + sys/elogind/files/s6-elogind | 3 + sys/elogind/files/shepherd-elogind.scm | 9 +++ sys/elogind/files/sysvinit-elogind | 41 ++++++++++ sys/elogind/recipe | 10 ++- sys/init-dinit/files/udev | 4 + sys/init-dinit/files/udev-trigger | 4 + sys/init-dinit/recipe | 7 +- sys/init-openrc/recipe | 3 +- sys/init-runit/recipe | 3 +- sys/init-s6/recipe | 3 +- sys/init-shepherd/files/init.scm | 11 ++- sys/init-shepherd/recipe | 3 +- sys/init-systemd/recipe | 3 +- sys/init-sysvinit/files/functions | 94 ++++++++++++++++++++++ sys/init-sysvinit/files/halt | 18 +++++ sys/init-sysvinit/files/hostname | 17 ++++ sys/init-sysvinit/files/inittab | 16 ++++ sys/init-sysvinit/files/mountfs | 18 +++++ sys/init-sysvinit/files/mountvirtfs | 23 ++++++ sys/init-sysvinit/files/rc | 27 +++++++ sys/init-sysvinit/files/udev | 32 ++++++++ sys/init-sysvinit/recipe | 39 +++++++++ sys/openrc/recipe | 3 +- sys/polkit/files/dinit-polkitd | 5 ++ sys/polkit/files/openrc-polkitd | 11 +++ sys/polkit/files/polkit.service | 10 +++ sys/polkit/files/runit-polkitd | 3 + sys/polkit/files/s6-polkitd | 3 + sys/polkit/files/shepherd-polkitd.scm | 9 +++ sys/polkit/files/sysvinit-polkitd | 41 ++++++++++ sys/polkit/recipe | 10 ++- .../files/dinit-power-profiles-daemon | 5 ++ .../files/openrc-power-profiles-daemon | 10 +-- .../files/power-profiles-daemon.service | 10 +++ .../files/runit-power-profiles-daemon | 3 + .../files/s6-power-profiles-daemon | 3 + .../files/shepherd-power-profiles-daemon.scm | 9 +++ .../files/sysvinit-power-profiles-daemon | 41 ++++++++++ sys/power-profiles-daemon/recipe | 10 ++- sys/redis/files/dinit-redis | 4 + sys/redis/files/openrc-redis | 11 +++ sys/redis/files/redis.service | 10 +++ sys/redis/files/runit-redis | 3 + sys/redis/files/s6-redis | 3 + sys/redis/files/shepherd-redis.scm | 9 +++ sys/redis/files/sysvinit-redis | 41 ++++++++++ sys/redis/recipe | 10 ++- sys/runit/recipe | 3 +- sys/s6-linux-init/recipe | 3 +- sys/s6/recipe | 3 +- sys/seatd/files/dinit-seatd | 4 + sys/seatd/files/openrc-seatd | 3 +- sys/seatd/files/runit-seatd | 3 + sys/seatd/files/s6-seatd | 3 + sys/seatd/files/seatd.service | 4 +- sys/seatd/files/shepherd-seatd.scm | 9 +++ sys/seatd/files/sysvinit-seatd | 41 ++++++++++ sys/seatd/recipe | 9 ++- sys/shepherd/recipe | 3 +- sys/systemd/recipe | 3 +- sys/sysvinit/recipe | 17 ++++ sys/upower/files/dinit-upowerd | 5 ++ sys/upower/files/openrc-upowerd | 11 +++ sys/upower/files/runit-upowerd | 3 + sys/upower/files/s6-upowerd | 3 + sys/upower/files/shepherd-upowerd.scm | 9 +++ sys/upower/files/sysvinit-upowerd | 41 ++++++++++ sys/upower/files/upower.service | 10 +++ sys/upower/recipe | 10 ++- sys/usbmuxd/files/dinit-usbmuxd | 4 + sys/usbmuxd/files/runit-usbmuxd | 3 + sys/usbmuxd/files/s6-usbmuxd | 3 + sys/usbmuxd/files/shepherd-usbmuxd.scm | 9 +++ sys/usbmuxd/files/sysvinit-usbmuxd | 41 ++++++++++ sys/usbmuxd/recipe | 9 ++- virt/libvirt/files/dinit-libvirtd | 5 ++ virt/libvirt/files/runit-libvirtd | 3 + virt/libvirt/files/s6-libvirtd | 3 + virt/libvirt/files/shepherd-libvirtd.scm | 9 +++ virt/libvirt/files/sysvinit-libvirtd | 41 ++++++++++ virt/libvirt/recipe | 9 ++- virt/lxc/files/dinit-lxc-net | 3 + virt/lxc/files/runit-lxc-net | 4 + virt/lxc/files/s6-lxc-net | 4 + virt/lxc/files/shepherd-lxc-net.scm | 9 +++ virt/lxc/files/sysvinit-lxc-net | 42 ++++++++++ virt/lxc/recipe | 9 ++- www/caddy/files/caddy.service | 10 +++ www/caddy/files/dinit-caddy | 4 + www/caddy/files/openrc-caddy | 11 +++ www/caddy/files/runit-caddy | 3 + www/caddy/files/s6-caddy | 3 + www/caddy/files/shepherd-caddy.scm | 9 +++ www/caddy/files/sysvinit-caddy | 41 ++++++++++ www/caddy/recipe | 10 ++- www/nginx/files/dinit-nginx | 4 + www/nginx/files/nginx.service | 10 +++ www/nginx/files/openrc-nginx | 11 +++ www/nginx/files/runit-nginx | 3 + www/nginx/files/s6-nginx | 3 + www/nginx/files/shepherd-nginx.scm | 9 +++ www/nginx/files/sysvinit-nginx | 41 ++++++++++ www/nginx/recipe | 10 ++- 346 files changed, 3871 insertions(+), 124 deletions(-)
Diff
diff --git a/admin/at/files/atd.service b/admin/at/files/atd.service
new file mode 100644
index 0000000..e0bf196
--- /dev/null
+++ b/admin/at/files/atd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=at job scheduler
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/atd -f
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/admin/at/files/dinit-atd b/admin/at/files/dinit-atd
new file mode 100644
index 0000000..6d93753
--- /dev/null
+++ b/admin/at/files/dinit-atd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/atd -f
+restart = true
+smooth-recovery = true
diff --git a/admin/at/files/openrc-atd b/admin/at/files/openrc-atd
new file mode 100755
index 0000000..f51cc9e
--- /dev/null
+++ b/admin/at/files/openrc-atd
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="at job scheduler"
+command="/usr/sbin/atd"
+command_args="-f"
+command_background="yes"
+pidfile="/run/atd.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/admin/at/files/runit-atd b/admin/at/files/runit-atd
new file mode 100755
index 0000000..085dff6
--- /dev/null
+++ b/admin/at/files/runit-atd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/atd -f
diff --git a/admin/at/files/s6-atd b/admin/at/files/s6-atd
new file mode 100755
index 0000000..085dff6
--- /dev/null
+++ b/admin/at/files/s6-atd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/atd -f
diff --git a/admin/at/files/shepherd-atd.scm b/admin/at/files/shepherd-atd.scm
new file mode 100644
index 0000000..6c770d9
--- /dev/null
+++ b/admin/at/files/shepherd-atd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(atd)
+ #:requirement '()
+ #:documentation "at job scheduler"
+ #:start (make-forkexec-constructor '("/usr/sbin/atd" "-f"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/admin/at/files/sysvinit-atd b/admin/at/files/sysvinit-atd
new file mode 100755
index 0000000..7157cc8
--- /dev/null
+++ b/admin/at/files/sysvinit-atd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: atd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: at job scheduler
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=atd
+DAEMON="/usr/sbin/atd"
+DAEMON_ARGS="-f"
+PIDFILE="/run/atd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/admin/at/recipe b/admin/at/recipe
index c3950a0..ed85969 100644
--- a/admin/at/recipe
+++ b/admin/at/recipe
@@ -1,6 +1,6 @@
name at
version 3.2.5
-release 1
+release 2
description at: schedule commands for later
source http://deb.debian.org/debian/pool/main/a/at/at_3.2.5.orig.tar.gz
@@ -12,3 +12,11 @@ depend flex
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/atd" "$PKG/etc/s6/sv/atd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/atd.service" "$PKG/usr/lib/systemd/system/atd.service"
+install install -m 0755 "$SRC/files/openrc-atd" "$PKG/etc/init.d/atd"
+install install -m 0755 "$SRC/files/runit-atd" "$PKG/etc/sv/atd/run"
+install install -m 0755 "$SRC/files/s6-atd" "$PKG/etc/s6/sv/atd/run"
+install install -m 0644 "$SRC/files/dinit-atd" "$PKG/etc/dinit.d/atd"
+install install -m 0644 "$SRC/files/shepherd-atd.scm" "$PKG/etc/shepherd.d/atd.scm"
+install install -m 0755 "$SRC/files/sysvinit-atd" "$PKG/etc/rc.d/init.d/atd"
diff --git a/admin/chrony/files/chronyd.service b/admin/chrony/files/chronyd.service
new file mode 100644
index 0000000..75b828b
--- /dev/null
+++ b/admin/chrony/files/chronyd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=chrony NTP daemon
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/chronyd -d
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/admin/chrony/files/dinit-chronyd b/admin/chrony/files/dinit-chronyd
new file mode 100644
index 0000000..682515a
--- /dev/null
+++ b/admin/chrony/files/dinit-chronyd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/chronyd -d
+restart = true
+smooth-recovery = true
diff --git a/admin/chrony/files/openrc-chronyd b/admin/chrony/files/openrc-chronyd
new file mode 100755
index 0000000..2103908
--- /dev/null
+++ b/admin/chrony/files/openrc-chronyd
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="chrony NTP daemon"
+command="/usr/sbin/chronyd"
+command_args="-d"
+command_background="yes"
+pidfile="/run/chronyd.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/admin/chrony/files/runit-chronyd b/admin/chrony/files/runit-chronyd
new file mode 100755
index 0000000..162c121
--- /dev/null
+++ b/admin/chrony/files/runit-chronyd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/chronyd -d
diff --git a/admin/chrony/files/s6-chronyd b/admin/chrony/files/s6-chronyd
new file mode 100755
index 0000000..162c121
--- /dev/null
+++ b/admin/chrony/files/s6-chronyd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/chronyd -d
diff --git a/admin/chrony/files/shepherd-chronyd.scm b/admin/chrony/files/shepherd-chronyd.scm
new file mode 100644
index 0000000..470051f
--- /dev/null
+++ b/admin/chrony/files/shepherd-chronyd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(chronyd)
+ #:requirement '()
+ #:documentation "chrony NTP daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/chronyd" "-d"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/admin/chrony/files/sysvinit-chronyd b/admin/chrony/files/sysvinit-chronyd
new file mode 100755
index 0000000..a171f43
--- /dev/null
+++ b/admin/chrony/files/sysvinit-chronyd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: chronyd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: chrony NTP daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=chronyd
+DAEMON="/usr/sbin/chronyd"
+DAEMON_ARGS="-d"
+PIDFILE="/run/chronyd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/admin/chrony/recipe b/admin/chrony/recipe
index 943cec6..66d1881 100644
--- a/admin/chrony/recipe
+++ b/admin/chrony/recipe
@@ -1,6 +1,6 @@
name chrony
version 4.6.1
-release 1
+release 2
description chrony: NTP client and server
source https://chrony-project.org/releases/chrony-4.6.1.tar.gz
@@ -13,3 +13,11 @@ depend nettle
configure ./configure --prefix=/usr --sysconfdir=/etc --chronyd-user=chrony
build make -j"$MAKEJOBS"
install make DESTDIR="$PKG" install
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/chronyd" "$PKG/etc/s6/sv/chronyd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/chronyd.service" "$PKG/usr/lib/systemd/system/chronyd.service"
+install install -m 0755 "$SRC/files/openrc-chronyd" "$PKG/etc/init.d/chronyd"
+install install -m 0755 "$SRC/files/runit-chronyd" "$PKG/etc/sv/chronyd/run"
+install install -m 0755 "$SRC/files/s6-chronyd" "$PKG/etc/s6/sv/chronyd/run"
+install install -m 0644 "$SRC/files/dinit-chronyd" "$PKG/etc/dinit.d/chronyd"
+install install -m 0644 "$SRC/files/shepherd-chronyd.scm" "$PKG/etc/shepherd.d/chronyd.scm"
+install install -m 0755 "$SRC/files/sysvinit-chronyd" "$PKG/etc/rc.d/init.d/chronyd"
diff --git a/admin/cronie/files/crond.service b/admin/cronie/files/crond.service
new file mode 100644
index 0000000..b115c71
--- /dev/null
+++ b/admin/cronie/files/crond.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=cron daemon
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/crond -n
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/admin/cronie/files/dinit-crond b/admin/cronie/files/dinit-crond
new file mode 100644
index 0000000..6db86a0
--- /dev/null
+++ b/admin/cronie/files/dinit-crond
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/crond -n
+restart = true
+smooth-recovery = true
diff --git a/admin/cronie/files/openrc-crond b/admin/cronie/files/openrc-crond
new file mode 100755
index 0000000..318d069
--- /dev/null
+++ b/admin/cronie/files/openrc-crond
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="cron daemon"
+command="/usr/sbin/crond"
+command_args="-n"
+command_background="yes"
+pidfile="/run/crond.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/admin/cronie/files/runit-crond b/admin/cronie/files/runit-crond
new file mode 100755
index 0000000..59f3e02
--- /dev/null
+++ b/admin/cronie/files/runit-crond
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/crond -n
diff --git a/admin/cronie/files/s6-crond b/admin/cronie/files/s6-crond
new file mode 100755
index 0000000..59f3e02
--- /dev/null
+++ b/admin/cronie/files/s6-crond
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/crond -n
diff --git a/admin/cronie/files/shepherd-crond.scm b/admin/cronie/files/shepherd-crond.scm
new file mode 100644
index 0000000..1b1c253
--- /dev/null
+++ b/admin/cronie/files/shepherd-crond.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(crond)
+ #:requirement '()
+ #:documentation "cron daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/crond" "-n"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/admin/cronie/files/sysvinit-crond b/admin/cronie/files/sysvinit-crond
new file mode 100755
index 0000000..c4698af
--- /dev/null
+++ b/admin/cronie/files/sysvinit-crond
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: crond
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: cron daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=crond
+DAEMON="/usr/sbin/crond"
+DAEMON_ARGS="-n"
+PIDFILE="/run/crond.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/admin/cronie/recipe b/admin/cronie/recipe
index 17bc2cb..b041387 100644
--- a/admin/cronie/recipe
+++ b/admin/cronie/recipe
@@ -1,6 +1,6 @@
name cronie
version 1.7.2
-release 1
+release 2
description cronie: cron daemon
source https://github.com/cronie-crond/cronie/releases/download/cronie-1.7.2/cronie-1.7.2.tar.gz
@@ -11,3 +11,11 @@ depend filesystem
configure ./configure --prefix=/usr --without-selinux --disable-anacron
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/crond" "$PKG/etc/s6/sv/crond" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/crond.service" "$PKG/usr/lib/systemd/system/crond.service"
+install install -m 0755 "$SRC/files/openrc-crond" "$PKG/etc/init.d/crond"
+install install -m 0755 "$SRC/files/runit-crond" "$PKG/etc/sv/crond/run"
+install install -m 0755 "$SRC/files/s6-crond" "$PKG/etc/s6/sv/crond/run"
+install install -m 0644 "$SRC/files/dinit-crond" "$PKG/etc/dinit.d/crond"
+install install -m 0644 "$SRC/files/shepherd-crond.scm" "$PKG/etc/shepherd.d/crond.scm"
+install install -m 0755 "$SRC/files/sysvinit-crond" "$PKG/etc/rc.d/init.d/crond"
diff --git a/admin/haveged/files/dinit-haveged b/admin/haveged/files/dinit-haveged
new file mode 100644
index 0000000..105f1b2
--- /dev/null
+++ b/admin/haveged/files/dinit-haveged
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/haveged -w 1024 -F
+restart = true
+smooth-recovery = true
diff --git a/admin/haveged/files/haveged.service b/admin/haveged/files/haveged.service
new file mode 100644
index 0000000..75526ad
--- /dev/null
+++ b/admin/haveged/files/haveged.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=haveged entropy daemon
+
+[Service]
+ExecStart=/usr/sbin/haveged -w 1024 -F
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/admin/haveged/files/openrc-haveged b/admin/haveged/files/openrc-haveged
new file mode 100755
index 0000000..28b0126
--- /dev/null
+++ b/admin/haveged/files/openrc-haveged
@@ -0,0 +1,10 @@
+#!/sbin/openrc-run
+description="haveged entropy daemon"
+command="/usr/sbin/haveged"
+command_args="-w 1024 -F"
+command_background="yes"
+pidfile="/run/haveged.pid"
+
+depend() {
+ need localmount
+}
diff --git a/admin/haveged/files/runit-haveged b/admin/haveged/files/runit-haveged
new file mode 100755
index 0000000..e7d31b4
--- /dev/null
+++ b/admin/haveged/files/runit-haveged
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/haveged -w 1024 -F
diff --git a/admin/haveged/files/s6-haveged b/admin/haveged/files/s6-haveged
new file mode 100755
index 0000000..e7d31b4
--- /dev/null
+++ b/admin/haveged/files/s6-haveged
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/haveged -w 1024 -F
diff --git a/admin/haveged/files/shepherd-haveged.scm b/admin/haveged/files/shepherd-haveged.scm
new file mode 100644
index 0000000..fa938bc
--- /dev/null
+++ b/admin/haveged/files/shepherd-haveged.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(haveged)
+ #:requirement '()
+ #:documentation "haveged entropy daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/haveged" "-w" "1024" "-F"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/admin/haveged/files/sysvinit-haveged b/admin/haveged/files/sysvinit-haveged
new file mode 100755
index 0000000..5b5e5bd
--- /dev/null
+++ b/admin/haveged/files/sysvinit-haveged
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: haveged
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: S
+# Default-Stop:
+# Short-Description: haveged entropy daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=haveged
+DAEMON="/usr/sbin/haveged"
+DAEMON_ARGS="-w 1024 -F"
+PIDFILE="/run/haveged.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/admin/haveged/recipe b/admin/haveged/recipe
index ef90746..34b75ce 100644
--- a/admin/haveged/recipe
+++ b/admin/haveged/recipe
@@ -1,6 +1,6 @@
name haveged
version 1.9.19
-release 1
+release 2
description haveged: entropy daemon
source https://github.com/jirka-h/haveged/archive/v1.9.19.tar.gz
@@ -11,3 +11,11 @@ depend filesystem
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/haveged" "$PKG/etc/s6/sv/haveged" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/haveged.service" "$PKG/usr/lib/systemd/system/haveged.service"
+install install -m 0755 "$SRC/files/openrc-haveged" "$PKG/etc/init.d/haveged"
+install install -m 0755 "$SRC/files/runit-haveged" "$PKG/etc/sv/haveged/run"
+install install -m 0755 "$SRC/files/s6-haveged" "$PKG/etc/s6/sv/haveged/run"
+install install -m 0644 "$SRC/files/dinit-haveged" "$PKG/etc/dinit.d/haveged"
+install install -m 0644 "$SRC/files/shepherd-haveged.scm" "$PKG/etc/shepherd.d/haveged.scm"
+install install -m 0755 "$SRC/files/sysvinit-haveged" "$PKG/etc/rc.d/init.d/haveged"
diff --git a/admin/tlp/files/dinit-tlp b/admin/tlp/files/dinit-tlp
new file mode 100644
index 0000000..e21f26e
--- /dev/null
+++ b/admin/tlp/files/dinit-tlp
@@ -0,0 +1,3 @@
+type = script
+command = /usr/sbin/tlp init start
+restart = false
diff --git a/admin/tlp/files/openrc-tlp b/admin/tlp/files/openrc-tlp
new file mode 100755
index 0000000..11b5e32
--- /dev/null
+++ b/admin/tlp/files/openrc-tlp
@@ -0,0 +1,10 @@
+#!/sbin/openrc-run
+description="TLP laptop power management"
+command="/usr/sbin/tlp"
+command_args="init start"
+command_background="no"
+
+depend() {
+ use net
+ after net
+}
diff --git a/admin/tlp/files/runit-tlp b/admin/tlp/files/runit-tlp
new file mode 100755
index 0000000..0e04baa
--- /dev/null
+++ b/admin/tlp/files/runit-tlp
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+/usr/sbin/tlp init start
+exec pause
diff --git a/admin/tlp/files/s6-tlp b/admin/tlp/files/s6-tlp
new file mode 100755
index 0000000..0e04baa
--- /dev/null
+++ b/admin/tlp/files/s6-tlp
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+/usr/sbin/tlp init start
+exec pause
diff --git a/admin/tlp/files/shepherd-tlp.scm b/admin/tlp/files/shepherd-tlp.scm
new file mode 100644
index 0000000..7c62ecf
--- /dev/null
+++ b/admin/tlp/files/shepherd-tlp.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(tlp)
+ #:requirement '()
+ #:documentation "TLP laptop power management"
+ #:start (make-forkexec-constructor '("/usr/sbin/tlp" "init" "start"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/admin/tlp/files/sysvinit-tlp b/admin/tlp/files/sysvinit-tlp
new file mode 100755
index 0000000..92e4411
--- /dev/null
+++ b/admin/tlp/files/sysvinit-tlp
@@ -0,0 +1,42 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: tlp
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: TLP laptop power management
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=tlp
+DAEMON="/usr/sbin/tlp"
+DAEMON_ARGS="init start"
+PIDFILE="/run/tlp.pid"
+USER=""
+
+start() {
+ eval "$DAEMON" $DAEMON_ARGS
+ return $?
+}
+
+stop() {
+ return 0
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/admin/tlp/files/tlp.service b/admin/tlp/files/tlp.service
new file mode 100644
index 0000000..ffd086f
--- /dev/null
+++ b/admin/tlp/files/tlp.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=TLP laptop power management
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/tlp init start
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/admin/tlp/recipe b/admin/tlp/recipe
index 2cc9874..f029d7a 100644
--- a/admin/tlp/recipe
+++ b/admin/tlp/recipe
@@ -1,6 +1,6 @@
name tlp
version 1.8.0
-release 1
+release 2
description tlp: laptop power management
source https://github.com/linrunner/TLP/archive/1.8.0.tar.gz
@@ -9,3 +9,11 @@ hash sha256:65515f7652064a1be2940c031e045b762924bb1dbd94f5e58e3b765113cf5
depend filesystem
install make DESTDIR="$PKG" TLP_SYSD=/usr/lib/systemd/system TLP_ULIB=/usr/lib/udev install-tlp install-man
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/tlp" "$PKG/etc/s6/sv/tlp" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/tlp.service" "$PKG/usr/lib/systemd/system/tlp.service"
+install install -m 0755 "$SRC/files/openrc-tlp" "$PKG/etc/init.d/tlp"
+install install -m 0755 "$SRC/files/runit-tlp" "$PKG/etc/sv/tlp/run"
+install install -m 0755 "$SRC/files/s6-tlp" "$PKG/etc/s6/sv/tlp/run"
+install install -m 0644 "$SRC/files/dinit-tlp" "$PKG/etc/dinit.d/tlp"
+install install -m 0644 "$SRC/files/shepherd-tlp.scm" "$PKG/etc/shepherd.d/tlp.scm"
+install install -m 0755 "$SRC/files/sysvinit-tlp" "$PKG/etc/rc.d/init.d/tlp"
diff --git a/audio/pipewire/files/dinit-pipewire b/audio/pipewire/files/dinit-pipewire
new file mode 100644
index 0000000..323d528
--- /dev/null
+++ b/audio/pipewire/files/dinit-pipewire
@@ -0,0 +1,5 @@
+type = process
+command = /usr/bin/pipewire
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/audio/pipewire/files/openrc-pipewire b/audio/pipewire/files/openrc-pipewire
new file mode 100755
index 0000000..919841f
--- /dev/null
+++ b/audio/pipewire/files/openrc-pipewire
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="PipeWire multimedia server"
+command="/usr/bin/pipewire"
+command_args=""
+command_background="yes"
+pidfile="/run/pipewire.pid"
+
+depend() {
+ need dbus
+ after dbus
+}
diff --git a/audio/pipewire/files/pipewire.service b/audio/pipewire/files/pipewire.service
new file mode 100644
index 0000000..314c71e
--- /dev/null
+++ b/audio/pipewire/files/pipewire.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=PipeWire multimedia server
+After=network.target dbus.service
+
+[Service]
+ExecStart=/usr/bin/pipewire
+Restart=on-failure
+
+[Install]
+WantedBy=default.target
diff --git a/audio/pipewire/files/runit-pipewire b/audio/pipewire/files/runit-pipewire
new file mode 100755
index 0000000..3559695
--- /dev/null
+++ b/audio/pipewire/files/runit-pipewire
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/pipewire
diff --git a/audio/pipewire/files/s6-pipewire b/audio/pipewire/files/s6-pipewire
new file mode 100755
index 0000000..3559695
--- /dev/null
+++ b/audio/pipewire/files/s6-pipewire
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/pipewire
diff --git a/audio/pipewire/files/shepherd-pipewire.scm b/audio/pipewire/files/shepherd-pipewire.scm
new file mode 100644
index 0000000..f462b30
--- /dev/null
+++ b/audio/pipewire/files/shepherd-pipewire.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(pipewire)
+ #:requirement '(dbus)
+ #:documentation "PipeWire multimedia server"
+ #:start (make-forkexec-constructor '("/usr/bin/pipewire"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/audio/pipewire/files/sysvinit-pipewire b/audio/pipewire/files/sysvinit-pipewire
new file mode 100755
index 0000000..58d2e87
--- /dev/null
+++ b/audio/pipewire/files/sysvinit-pipewire
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: pipewire
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: PipeWire multimedia server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=pipewire
+DAEMON="/usr/bin/pipewire"
+DAEMON_ARGS=""
+PIDFILE="/run/pipewire.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/audio/pipewire/recipe b/audio/pipewire/recipe
index f27d262..1efcc92 100644
--- a/audio/pipewire/recipe
+++ b/audio/pipewire/recipe
@@ -1,6 +1,6 @@
name pipewire
version 1.4.7
-release 1
+release 2
description pipewire: multimedia server
source https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.4.7/pipewire-1.4.7.tar.gz
@@ -14,3 +14,11 @@ depend alsa-lib
configure meson setup build --prefix=/usr --buildtype=release -Dsession-managers=[] -Dtests=disabled -Dexamples=disabled
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/pipewire" "$PKG/etc/s6/sv/pipewire" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/pipewire.service" "$PKG/usr/lib/systemd/system/pipewire.service"
+install install -m 0755 "$SRC/files/openrc-pipewire" "$PKG/etc/init.d/pipewire"
+install install -m 0755 "$SRC/files/runit-pipewire" "$PKG/etc/sv/pipewire/run"
+install install -m 0755 "$SRC/files/s6-pipewire" "$PKG/etc/s6/sv/pipewire/run"
+install install -m 0644 "$SRC/files/dinit-pipewire" "$PKG/etc/dinit.d/pipewire"
+install install -m 0644 "$SRC/files/shepherd-pipewire.scm" "$PKG/etc/shepherd.d/pipewire.scm"
+install install -m 0755 "$SRC/files/sysvinit-pipewire" "$PKG/etc/rc.d/init.d/pipewire"
diff --git a/audio/wireplumber/files/dinit-wireplumber b/audio/wireplumber/files/dinit-wireplumber
new file mode 100644
index 0000000..228282c
--- /dev/null
+++ b/audio/wireplumber/files/dinit-wireplumber
@@ -0,0 +1,5 @@
+type = process
+command = /usr/bin/wireplumber
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/audio/wireplumber/files/openrc-wireplumber b/audio/wireplumber/files/openrc-wireplumber
new file mode 100755
index 0000000..08a877f
--- /dev/null
+++ b/audio/wireplumber/files/openrc-wireplumber
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="PipeWire session manager"
+command="/usr/bin/wireplumber"
+command_args=""
+command_background="yes"
+pidfile="/run/wireplumber.pid"
+
+depend() {
+ need dbus
+ after dbus
+}
diff --git a/audio/wireplumber/files/runit-wireplumber b/audio/wireplumber/files/runit-wireplumber
new file mode 100755
index 0000000..50575fc
--- /dev/null
+++ b/audio/wireplumber/files/runit-wireplumber
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/wireplumber
diff --git a/audio/wireplumber/files/s6-wireplumber b/audio/wireplumber/files/s6-wireplumber
new file mode 100755
index 0000000..50575fc
--- /dev/null
+++ b/audio/wireplumber/files/s6-wireplumber
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/wireplumber
diff --git a/audio/wireplumber/files/shepherd-wireplumber.scm b/audio/wireplumber/files/shepherd-wireplumber.scm
new file mode 100644
index 0000000..497e14e
--- /dev/null
+++ b/audio/wireplumber/files/shepherd-wireplumber.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(wireplumber)
+ #:requirement '(dbus)
+ #:documentation "PipeWire session manager"
+ #:start (make-forkexec-constructor '("/usr/bin/wireplumber"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/audio/wireplumber/files/sysvinit-wireplumber b/audio/wireplumber/files/sysvinit-wireplumber
new file mode 100755
index 0000000..2324c37
--- /dev/null
+++ b/audio/wireplumber/files/sysvinit-wireplumber
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: wireplumber
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: PipeWire session manager
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=wireplumber
+DAEMON="/usr/bin/wireplumber"
+DAEMON_ARGS=""
+PIDFILE="/run/wireplumber.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/audio/wireplumber/files/wireplumber.service b/audio/wireplumber/files/wireplumber.service
new file mode 100644
index 0000000..150a644
--- /dev/null
+++ b/audio/wireplumber/files/wireplumber.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=PipeWire session manager
+After=network.target dbus.service
+
+[Service]
+ExecStart=/usr/bin/wireplumber
+Restart=on-failure
+
+[Install]
+WantedBy=default.target
diff --git a/audio/wireplumber/recipe b/audio/wireplumber/recipe
index eeae5c7..9562047 100644
--- a/audio/wireplumber/recipe
+++ b/audio/wireplumber/recipe
@@ -1,6 +1,6 @@
name wireplumber
version 0.5.10
-release 1
+release 2
description wireplumber: PipeWire session manager
source https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/0.5.10/wireplumber-0.5.10.tar.gz
@@ -14,3 +14,11 @@ depend lua
configure meson setup build --prefix=/usr --buildtype=release -Dintrospection=disabled -Ddoc=disabled -Dtests=false
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/wireplumber" "$PKG/etc/s6/sv/wireplumber" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/wireplumber.service" "$PKG/usr/lib/systemd/system/wireplumber.service"
+install install -m 0755 "$SRC/files/openrc-wireplumber" "$PKG/etc/init.d/wireplumber"
+install install -m 0755 "$SRC/files/runit-wireplumber" "$PKG/etc/sv/wireplumber/run"
+install install -m 0755 "$SRC/files/s6-wireplumber" "$PKG/etc/s6/sv/wireplumber/run"
+install install -m 0644 "$SRC/files/dinit-wireplumber" "$PKG/etc/dinit.d/wireplumber"
+install install -m 0644 "$SRC/files/shepherd-wireplumber.scm" "$PKG/etc/shepherd.d/wireplumber.scm"
+install install -m 0755 "$SRC/files/sysvinit-wireplumber" "$PKG/etc/rc.d/init.d/wireplumber"
diff --git a/db/mariadb/files/dinit-mariadbd b/db/mariadb/files/dinit-mariadbd
new file mode 100644
index 0000000..baeb6f3
--- /dev/null
+++ b/db/mariadb/files/dinit-mariadbd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/mariadbd --datadir=/var/lib/mysql
+restart = true
+smooth-recovery = true
diff --git a/db/mariadb/files/runit-mariadbd b/db/mariadb/files/runit-mariadbd
new file mode 100755
index 0000000..93d30aa
--- /dev/null
+++ b/db/mariadb/files/runit-mariadbd
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+install -d -m 0750 /run/mysqld /var/lib/mysql || :
+exec /usr/sbin/mariadbd --datadir=/var/lib/mysql
diff --git a/db/mariadb/files/s6-mariadbd b/db/mariadb/files/s6-mariadbd
new file mode 100755
index 0000000..93d30aa
--- /dev/null
+++ b/db/mariadb/files/s6-mariadbd
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+install -d -m 0750 /run/mysqld /var/lib/mysql || :
+exec /usr/sbin/mariadbd --datadir=/var/lib/mysql
diff --git a/db/mariadb/files/shepherd-mariadbd.scm b/db/mariadb/files/shepherd-mariadbd.scm
new file mode 100644
index 0000000..acdf28f
--- /dev/null
+++ b/db/mariadb/files/shepherd-mariadbd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(mariadbd)
+ #:requirement '()
+ #:documentation "MariaDB database server"
+ #:start (make-forkexec-constructor '("/usr/sbin/mariadbd" "--datadir=/var/lib/mysql"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/db/mariadb/files/sysvinit-mariadbd b/db/mariadb/files/sysvinit-mariadbd
new file mode 100755
index 0000000..6ad1e6d
--- /dev/null
+++ b/db/mariadb/files/sysvinit-mariadbd
@@ -0,0 +1,42 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: mariadbd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: MariaDB database server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=mariadbd
+DAEMON="/usr/sbin/mariadbd"
+DAEMON_ARGS="--datadir=/var/lib/mysql"
+PIDFILE="/run/mariadbd.pid"
+USER="mysql"
+
+start() {
+ install -d -m 0750 /run/mysqld /var/lib/mysql || :
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/db/mariadb/recipe b/db/mariadb/recipe
index 5e41d28..ca9b61e 100644
--- a/db/mariadb/recipe
+++ b/db/mariadb/recipe
@@ -1,6 +1,6 @@
name mariadb
version 11.8.3
-release 2
+release 3
description mariadb: relational database
source https://archive.mariadb.org/mariadb-11.8.3/source/mariadb-11.8.3.tar.gz
@@ -20,6 +20,11 @@ builddep ninja
configure cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib64 -DWITH_UNIT_TESTS=OFF -DCONNECT_WITH_MONGO=OFF -DPLUGIN_AUTH_PAM=NO -DWITHOUT_SERVER=OFF -DINSTALL_LAYOUT=RPM -DINSTALL_LIBDIR=lib64
build cmake --build build --parallel "$MAKEJOBS"
install DESTDIR="$PKG" cmake --install build
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/mariadbd" "$PKG/etc/s6/sv/mariadbd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/mariadb.service" "$PKG/usr/lib/systemd/system/mariadb.service"
install install -m 0755 "$SRC/files/openrc-mariadbd" "$PKG/etc/init.d/mariadbd"
+install install -m 0755 "$SRC/files/runit-mariadbd" "$PKG/etc/sv/mariadbd/run"
+install install -m 0755 "$SRC/files/s6-mariadbd" "$PKG/etc/s6/sv/mariadbd/run"
+install install -m 0644 "$SRC/files/dinit-mariadbd" "$PKG/etc/dinit.d/mariadbd"
+install install -m 0644 "$SRC/files/shepherd-mariadbd.scm" "$PKG/etc/shepherd.d/mariadbd.scm"
+install install -m 0755 "$SRC/files/sysvinit-mariadbd" "$PKG/etc/rc.d/init.d/mariadbd"
diff --git a/db/memcached/files/dinit-memcached b/db/memcached/files/dinit-memcached
new file mode 100644
index 0000000..5980ecb
--- /dev/null
+++ b/db/memcached/files/dinit-memcached
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/memcached -u nobody
+restart = true
+smooth-recovery = true
diff --git a/db/memcached/files/runit-memcached b/db/memcached/files/runit-memcached
new file mode 100755
index 0000000..9191b7b
--- /dev/null
+++ b/db/memcached/files/runit-memcached
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/memcached -u nobody
diff --git a/db/memcached/files/s6-memcached b/db/memcached/files/s6-memcached
new file mode 100755
index 0000000..9191b7b
--- /dev/null
+++ b/db/memcached/files/s6-memcached
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/memcached -u nobody
diff --git a/db/memcached/files/shepherd-memcached.scm b/db/memcached/files/shepherd-memcached.scm
new file mode 100644
index 0000000..0bacd54
--- /dev/null
+++ b/db/memcached/files/shepherd-memcached.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(memcached)
+ #:requirement '()
+ #:documentation "memcached object cache"
+ #:start (make-forkexec-constructor '("/usr/bin/memcached" "-u" "nobody"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/db/memcached/files/sysvinit-memcached b/db/memcached/files/sysvinit-memcached
new file mode 100755
index 0000000..d26101b
--- /dev/null
+++ b/db/memcached/files/sysvinit-memcached
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: memcached
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: memcached object cache
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=memcached
+DAEMON="/usr/bin/memcached"
+DAEMON_ARGS="-u nobody"
+PIDFILE="/run/memcached.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/db/memcached/recipe b/db/memcached/recipe
index 3560581..dc11d0d 100644
--- a/db/memcached/recipe
+++ b/db/memcached/recipe
@@ -1,6 +1,6 @@
name memcached
version 1.6.38
-release 2
+release 3
description memcached: in-memory object cache
source https://www.memcached.org/files/memcached-1.6.38.tar.gz
@@ -12,6 +12,11 @@ depend libevent
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/memcached" "$PKG/etc/s6/sv/memcached" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/memcached.service" "$PKG/usr/lib/systemd/system/memcached.service"
install install -m 0755 "$SRC/files/openrc-memcached" "$PKG/etc/init.d/memcached"
+install install -m 0755 "$SRC/files/runit-memcached" "$PKG/etc/sv/memcached/run"
+install install -m 0755 "$SRC/files/s6-memcached" "$PKG/etc/s6/sv/memcached/run"
+install install -m 0644 "$SRC/files/dinit-memcached" "$PKG/etc/dinit.d/memcached"
+install install -m 0644 "$SRC/files/shepherd-memcached.scm" "$PKG/etc/shepherd.d/memcached.scm"
+install install -m 0755 "$SRC/files/sysvinit-memcached" "$PKG/etc/rc.d/init.d/memcached"
diff --git a/db/postgresql/files/dinit-postgresql b/db/postgresql/files/dinit-postgresql
new file mode 100644
index 0000000..21dce21
--- /dev/null
+++ b/db/postgresql/files/dinit-postgresql
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/postgres -D /var/lib/postgres/data
+restart = true
+smooth-recovery = true
diff --git a/db/postgresql/files/runit-postgresql b/db/postgresql/files/runit-postgresql
new file mode 100755
index 0000000..4ce630d
--- /dev/null
+++ b/db/postgresql/files/runit-postgresql
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+install -d -m 0755 /run/postgresql /var/lib/postgres/data || :
+exec /usr/bin/postgres -D /var/lib/postgres/data
diff --git a/db/postgresql/files/s6-postgresql b/db/postgresql/files/s6-postgresql
new file mode 100755
index 0000000..4ce630d
--- /dev/null
+++ b/db/postgresql/files/s6-postgresql
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+install -d -m 0755 /run/postgresql /var/lib/postgres/data || :
+exec /usr/bin/postgres -D /var/lib/postgres/data
diff --git a/db/postgresql/files/shepherd-postgresql.scm b/db/postgresql/files/shepherd-postgresql.scm
new file mode 100644
index 0000000..c89446f
--- /dev/null
+++ b/db/postgresql/files/shepherd-postgresql.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(postgresql)
+ #:requirement '()
+ #:documentation "PostgreSQL database server"
+ #:start (make-forkexec-constructor '("/usr/bin/postgres" "-D" "/var/lib/postgres/data"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/db/postgresql/files/sysvinit-postgresql b/db/postgresql/files/sysvinit-postgresql
new file mode 100755
index 0000000..15606be
--- /dev/null
+++ b/db/postgresql/files/sysvinit-postgresql
@@ -0,0 +1,42 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: postgresql
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: PostgreSQL database server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=postgresql
+DAEMON="/usr/bin/postgres"
+DAEMON_ARGS="-D /var/lib/postgres/data"
+PIDFILE="/run/postgresql.pid"
+USER="postgres"
+
+start() {
+ install -d -m 0755 /run/postgresql /var/lib/postgres/data || :
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/db/postgresql/recipe b/db/postgresql/recipe
index 87707d6..f68e5ca 100644
--- a/db/postgresql/recipe
+++ b/db/postgresql/recipe
@@ -1,6 +1,6 @@
name postgresql
version 17.6
-release 2
+release 3
description postgresql: object-relational database
source https://ftp.postgresql.org/pub/source/v17.6/postgresql-17.6.tar.bz2
@@ -18,6 +18,11 @@ depend zstd
configure ./configure --prefix=/usr --with-openssl --with-libxml --with-icu --with-lz4 --with-zstd --with-uuid=e2fs
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/postgresql" "$PKG/etc/s6/sv/postgresql" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/postgresql.service" "$PKG/usr/lib/systemd/system/postgresql.service"
install install -m 0755 "$SRC/files/openrc-postgresql" "$PKG/etc/init.d/postgresql"
+install install -m 0755 "$SRC/files/runit-postgresql" "$PKG/etc/sv/postgresql/run"
+install install -m 0755 "$SRC/files/s6-postgresql" "$PKG/etc/s6/sv/postgresql/run"
+install install -m 0644 "$SRC/files/dinit-postgresql" "$PKG/etc/dinit.d/postgresql"
+install install -m 0644 "$SRC/files/shepherd-postgresql.scm" "$PKG/etc/shepherd.d/postgresql.scm"
+install install -m 0755 "$SRC/files/sysvinit-postgresql" "$PKG/etc/rc.d/init.d/postgresql"
diff --git a/db/valkey/files/dinit-valkey b/db/valkey/files/dinit-valkey
new file mode 100644
index 0000000..968cf02
--- /dev/null
+++ b/db/valkey/files/dinit-valkey
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/valkey-server --daemonize no --bind 127.0.0.1
+restart = true
+smooth-recovery = true
diff --git a/db/valkey/files/runit-valkey b/db/valkey/files/runit-valkey
new file mode 100755
index 0000000..2aec40b
--- /dev/null
+++ b/db/valkey/files/runit-valkey
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/valkey-server --daemonize no --bind 127.0.0.1
diff --git a/db/valkey/files/s6-valkey b/db/valkey/files/s6-valkey
new file mode 100755
index 0000000..2aec40b
--- /dev/null
+++ b/db/valkey/files/s6-valkey
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/valkey-server --daemonize no --bind 127.0.0.1
diff --git a/db/valkey/files/shepherd-valkey.scm b/db/valkey/files/shepherd-valkey.scm
new file mode 100644
index 0000000..2762921
--- /dev/null
+++ b/db/valkey/files/shepherd-valkey.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(valkey)
+ #:requirement '()
+ #:documentation "Valkey data store"
+ #:start (make-forkexec-constructor '("/usr/bin/valkey-server" "--daemonize" "no" "--bind" "127.0.0.1"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/db/valkey/files/sysvinit-valkey b/db/valkey/files/sysvinit-valkey
new file mode 100755
index 0000000..0f5e46c
--- /dev/null
+++ b/db/valkey/files/sysvinit-valkey
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: valkey
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Valkey data store
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=valkey
+DAEMON="/usr/bin/valkey-server"
+DAEMON_ARGS="--daemonize no --bind 127.0.0.1"
+PIDFILE="/run/valkey.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/db/valkey/recipe b/db/valkey/recipe
index 0f7b8b2..fb8c07e 100644
--- a/db/valkey/recipe
+++ b/db/valkey/recipe
@@ -1,6 +1,6 @@
name valkey
version 8.1.4
-release 2
+release 3
description valkey: Redis-compatible data store
source https://github.com/valkey-io/valkey/archive/8.1.4.tar.gz
@@ -11,6 +11,11 @@ depend openssl
build make -j"$MAKEJOBS" PREFIX=/usr BUILD_TLS=yes
install make PREFIX=/usr DESTDIR="$PKG" install
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/valkey" "$PKG/etc/s6/sv/valkey" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/valkey.service" "$PKG/usr/lib/systemd/system/valkey.service"
install install -m 0755 "$SRC/files/openrc-valkey" "$PKG/etc/init.d/valkey"
+install install -m 0755 "$SRC/files/runit-valkey" "$PKG/etc/sv/valkey/run"
+install install -m 0755 "$SRC/files/s6-valkey" "$PKG/etc/s6/sv/valkey/run"
+install install -m 0644 "$SRC/files/dinit-valkey" "$PKG/etc/dinit.d/valkey"
+install install -m 0644 "$SRC/files/shepherd-valkey.scm" "$PKG/etc/shepherd.d/valkey.scm"
+install install -m 0755 "$SRC/files/sysvinit-valkey" "$PKG/etc/rc.d/init.d/valkey"
diff --git a/desktop/sddm/files/dinit-sddm b/desktop/sddm/files/dinit-sddm
new file mode 100644
index 0000000..aeab9e3
--- /dev/null
+++ b/desktop/sddm/files/dinit-sddm
@@ -0,0 +1,5 @@
+type = process
+command = /usr/bin/sddm
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/desktop/sddm/files/openrc-sddm b/desktop/sddm/files/openrc-sddm
old mode 100644
new mode 100755
index fe44593..a4d7acf
--- a/desktop/sddm/files/openrc-sddm
+++ b/desktop/sddm/files/openrc-sddm
@@ -1,12 +1,11 @@
#!/sbin/openrc-run
-# OpenRC unit for SDDM. systemd installs sddm.service from files/.
-
description="Simple Desktop Display Manager"
command="/usr/bin/sddm"
+command_args=""
command_background="yes"
pidfile="/run/sddm.pid"
depend() {
- need dbus
- after dbus
+ need dbus
+ after dbus
}
diff --git a/desktop/sddm/files/runit-sddm b/desktop/sddm/files/runit-sddm
new file mode 100755
index 0000000..2337320
--- /dev/null
+++ b/desktop/sddm/files/runit-sddm
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/sddm
diff --git a/desktop/sddm/files/s6-sddm b/desktop/sddm/files/s6-sddm
new file mode 100755
index 0000000..2337320
--- /dev/null
+++ b/desktop/sddm/files/s6-sddm
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/sddm
diff --git a/desktop/sddm/files/sddm.service b/desktop/sddm/files/sddm.service
index e5187f7..cad3c2e 100644
--- a/desktop/sddm/files/sddm.service
+++ b/desktop/sddm/files/sddm.service
@@ -1,12 +1,10 @@
[Unit]
Description=Simple Desktop Display Manager
-Documentation=man:sddm(1)
-After=local-fs.target systemd-user-sessions.service
-After=dbus.service
+After=network.target dbus.service
[Service]
ExecStart=/usr/bin/sddm
-Restart=always
+Restart=on-failure
[Install]
WantedBy=graphical.target
diff --git a/desktop/sddm/files/shepherd-sddm.scm b/desktop/sddm/files/shepherd-sddm.scm
new file mode 100644
index 0000000..9331189
--- /dev/null
+++ b/desktop/sddm/files/shepherd-sddm.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(sddm)
+ #:requirement '(dbus)
+ #:documentation "Simple Desktop Display Manager"
+ #:start (make-forkexec-constructor '("/usr/bin/sddm"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/desktop/sddm/files/sysvinit-sddm b/desktop/sddm/files/sysvinit-sddm
new file mode 100755
index 0000000..6033f8f
--- /dev/null
+++ b/desktop/sddm/files/sysvinit-sddm
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: sddm
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Simple Desktop Display Manager
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=sddm
+DAEMON="/usr/bin/sddm"
+DAEMON_ARGS=""
+PIDFILE="/run/sddm.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/desktop/sddm/recipe b/desktop/sddm/recipe
index 81a15e5..50a69a1 100644
--- a/desktop/sddm/recipe
+++ b/desktop/sddm/recipe
@@ -1,6 +1,6 @@
name sddm
version 0.21.0
-release 2
+release 3
description sddm: display manager
source https://github.com/sddm/sddm/archive/refs/tags/v0.21.0.tar.gz
@@ -15,6 +15,11 @@ optional systemd
configure cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DENABLE_JOURNALD=OFF -DNO_SYSTEMD=ON
build cmake --build build --parallel "$MAKEJOBS"
install DESTDIR="$PKG" cmake --install build
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/sddm" "$PKG/etc/s6/sv/sddm" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/sddm.service" "$PKG/usr/lib/systemd/system/sddm.service"
install install -m 0755 "$SRC/files/openrc-sddm" "$PKG/etc/init.d/sddm"
+install install -m 0755 "$SRC/files/runit-sddm" "$PKG/etc/sv/sddm/run"
+install install -m 0755 "$SRC/files/s6-sddm" "$PKG/etc/s6/sv/sddm/run"
+install install -m 0644 "$SRC/files/dinit-sddm" "$PKG/etc/dinit.d/sddm"
+install install -m 0644 "$SRC/files/shepherd-sddm.scm" "$PKG/etc/shepherd.d/sddm.scm"
+install install -m 0755 "$SRC/files/sysvinit-sddm" "$PKG/etc/rc.d/init.d/sddm"
diff --git a/devel/distcc/files/dinit-distccd b/devel/distcc/files/dinit-distccd
new file mode 100644
index 0000000..4ca8f86
--- /dev/null
+++ b/devel/distcc/files/dinit-distccd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/distccd --no-detach --allow 127.0.0.1 --log-stderr
+restart = true
+smooth-recovery = true
diff --git a/devel/distcc/files/runit-distccd b/devel/distcc/files/runit-distccd
new file mode 100755
index 0000000..a40a418
--- /dev/null
+++ b/devel/distcc/files/runit-distccd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/distccd --no-detach --allow 127.0.0.1 --log-stderr
diff --git a/devel/distcc/files/s6-distccd b/devel/distcc/files/s6-distccd
new file mode 100755
index 0000000..a40a418
--- /dev/null
+++ b/devel/distcc/files/s6-distccd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/distccd --no-detach --allow 127.0.0.1 --log-stderr
diff --git a/devel/distcc/files/shepherd-distccd.scm b/devel/distcc/files/shepherd-distccd.scm
new file mode 100644
index 0000000..5eaffc2
--- /dev/null
+++ b/devel/distcc/files/shepherd-distccd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(distccd)
+ #:requirement '()
+ #:documentation "distributed C/C++ compilation daemon"
+ #:start (make-forkexec-constructor '("/usr/bin/distccd" "--no-detach" "--allow" "127.0.0.1" "--log-stderr"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/devel/distcc/files/sysvinit-distccd b/devel/distcc/files/sysvinit-distccd
new file mode 100755
index 0000000..91fa93b
--- /dev/null
+++ b/devel/distcc/files/sysvinit-distccd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: distccd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: distributed C/C++ compilation daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=distccd
+DAEMON="/usr/bin/distccd"
+DAEMON_ARGS="--no-detach --allow 127.0.0.1 --log-stderr"
+PIDFILE="/run/distccd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/devel/distcc/recipe b/devel/distcc/recipe
index 073cd35..3b5feca 100644
--- a/devel/distcc/recipe
+++ b/devel/distcc/recipe
@@ -1,6 +1,6 @@
name distcc
version 3.4
-release 2
+release 3
description distcc: distributed C/C++ compilation
source https://github.com/distcc/distcc/releases/download/v3.4/distcc-3.4.tar.gz
@@ -12,6 +12,11 @@ depend popt
configure ./configure --prefix=/usr --without-avahi --disable-Werror
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/distccd" "$PKG/etc/s6/sv/distccd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/distccd.service" "$PKG/usr/lib/systemd/system/distccd.service"
install install -m 0755 "$SRC/files/openrc-distccd" "$PKG/etc/init.d/distccd"
+install install -m 0755 "$SRC/files/runit-distccd" "$PKG/etc/sv/distccd/run"
+install install -m 0755 "$SRC/files/s6-distccd" "$PKG/etc/s6/sv/distccd/run"
+install install -m 0644 "$SRC/files/dinit-distccd" "$PKG/etc/dinit.d/distccd"
+install install -m 0644 "$SRC/files/shepherd-distccd.scm" "$PKG/etc/shepherd.d/distccd.scm"
+install install -m 0755 "$SRC/files/sysvinit-distccd" "$PKG/etc/rc.d/init.d/distccd"
diff --git a/disk/smartmontools/files/dinit-smartd b/disk/smartmontools/files/dinit-smartd
new file mode 100644
index 0000000..8da7542
--- /dev/null
+++ b/disk/smartmontools/files/dinit-smartd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/smartd -n
+restart = true
+smooth-recovery = true
diff --git a/disk/smartmontools/files/openrc-smartd b/disk/smartmontools/files/openrc-smartd
new file mode 100755
index 0000000..fae3ea8
--- /dev/null
+++ b/disk/smartmontools/files/openrc-smartd
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="S.M.A.R.T. disk monitoring"
+command="/usr/sbin/smartd"
+command_args="-n"
+command_background="yes"
+pidfile="/run/smartd.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/disk/smartmontools/files/runit-smartd b/disk/smartmontools/files/runit-smartd
new file mode 100755
index 0000000..78e4cd0
--- /dev/null
+++ b/disk/smartmontools/files/runit-smartd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/smartd -n
diff --git a/disk/smartmontools/files/s6-smartd b/disk/smartmontools/files/s6-smartd
new file mode 100755
index 0000000..78e4cd0
--- /dev/null
+++ b/disk/smartmontools/files/s6-smartd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/smartd -n
diff --git a/disk/smartmontools/files/shepherd-smartd.scm b/disk/smartmontools/files/shepherd-smartd.scm
new file mode 100644
index 0000000..559e298
--- /dev/null
+++ b/disk/smartmontools/files/shepherd-smartd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(smartd)
+ #:requirement '()
+ #:documentation "S.M.A.R.T. disk monitoring"
+ #:start (make-forkexec-constructor '("/usr/sbin/smartd" "-n"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/disk/smartmontools/files/smartd.service b/disk/smartmontools/files/smartd.service
new file mode 100644
index 0000000..6f15008
--- /dev/null
+++ b/disk/smartmontools/files/smartd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=S.M.A.R.T. disk monitoring
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/smartd -n
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/disk/smartmontools/files/sysvinit-smartd b/disk/smartmontools/files/sysvinit-smartd
new file mode 100755
index 0000000..3971310
--- /dev/null
+++ b/disk/smartmontools/files/sysvinit-smartd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: smartd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: S.M.A.R.T. disk monitoring
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=smartd
+DAEMON="/usr/sbin/smartd"
+DAEMON_ARGS="-n"
+PIDFILE="/run/smartd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/disk/smartmontools/recipe b/disk/smartmontools/recipe
index 0ef1ca3..65897a2 100644
--- a/disk/smartmontools/recipe
+++ b/disk/smartmontools/recipe
@@ -1,6 +1,6 @@
name smartmontools
version 7.5
-release 1
+release 2
description smartmontools: S.M.A.R.T. disk monitoring
source https://github.com/smartmontools/smartmontools/releases/download/RELEASE_7_5/smartmontools-7.5.tar.gz
@@ -11,3 +11,11 @@ depend filesystem
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/smartd" "$PKG/etc/s6/sv/smartd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/smartd.service" "$PKG/usr/lib/systemd/system/smartd.service"
+install install -m 0755 "$SRC/files/openrc-smartd" "$PKG/etc/init.d/smartd"
+install install -m 0755 "$SRC/files/runit-smartd" "$PKG/etc/sv/smartd/run"
+install install -m 0755 "$SRC/files/s6-smartd" "$PKG/etc/s6/sv/smartd/run"
+install install -m 0644 "$SRC/files/dinit-smartd" "$PKG/etc/dinit.d/smartd"
+install install -m 0644 "$SRC/files/shepherd-smartd.scm" "$PKG/etc/shepherd.d/smartd.scm"
+install install -m 0755 "$SRC/files/sysvinit-smartd" "$PKG/etc/rc.d/init.d/smartd"
diff --git a/fs/nfs-utils/files/dinit-nfs-server b/fs/nfs-utils/files/dinit-nfs-server
new file mode 100644
index 0000000..302f7e0
--- /dev/null
+++ b/fs/nfs-utils/files/dinit-nfs-server
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/rpc.mountd -F
+restart = true
+smooth-recovery = true
diff --git a/fs/nfs-utils/files/runit-nfs-server b/fs/nfs-utils/files/runit-nfs-server
new file mode 100755
index 0000000..f1f191d
--- /dev/null
+++ b/fs/nfs-utils/files/runit-nfs-server
@@ -0,0 +1,6 @@
+#!/bin/sh
+exec 2>&1
+if command -v exportfs >/dev/null 2>&1; then exportfs -ra || :; fi
+if command -v rpc.statd >/dev/null 2>&1; then rpc.statd --no-notify || :; fi
+if command -v rpc.nfsd >/dev/null 2>&1; then rpc.nfsd 8 || :; fi
+exec /usr/sbin/rpc.mountd -F
diff --git a/fs/nfs-utils/files/s6-nfs-server b/fs/nfs-utils/files/s6-nfs-server
new file mode 100755
index 0000000..f1f191d
--- /dev/null
+++ b/fs/nfs-utils/files/s6-nfs-server
@@ -0,0 +1,6 @@
+#!/bin/sh
+exec 2>&1
+if command -v exportfs >/dev/null 2>&1; then exportfs -ra || :; fi
+if command -v rpc.statd >/dev/null 2>&1; then rpc.statd --no-notify || :; fi
+if command -v rpc.nfsd >/dev/null 2>&1; then rpc.nfsd 8 || :; fi
+exec /usr/sbin/rpc.mountd -F
diff --git a/fs/nfs-utils/files/shepherd-nfs-server.scm b/fs/nfs-utils/files/shepherd-nfs-server.scm
new file mode 100644
index 0000000..057ecdd
--- /dev/null
+++ b/fs/nfs-utils/files/shepherd-nfs-server.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(nfs-server)
+ #:requirement '()
+ #:documentation "NFS server"
+ #:start (make-forkexec-constructor '("/usr/sbin/rpc.mountd" "-F"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/fs/nfs-utils/files/sysvinit-nfs-server b/fs/nfs-utils/files/sysvinit-nfs-server
new file mode 100755
index 0000000..467db75
--- /dev/null
+++ b/fs/nfs-utils/files/sysvinit-nfs-server
@@ -0,0 +1,44 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: nfs-server
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: NFS server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=nfs-server
+DAEMON="/usr/sbin/rpc.mountd"
+DAEMON_ARGS="-F"
+PIDFILE="/run/nfs-server.pid"
+USER=""
+
+start() {
+ if command -v exportfs >/dev/null 2>&1; then exportfs -ra || :; fi
+ if command -v rpc.statd >/dev/null 2>&1; then rpc.statd --no-notify || :; fi
+ if command -v rpc.nfsd >/dev/null 2>&1; then rpc.nfsd 8 || :; fi
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/fs/nfs-utils/recipe b/fs/nfs-utils/recipe
index fc8079b..15792e7 100644
--- a/fs/nfs-utils/recipe
+++ b/fs/nfs-utils/recipe
@@ -1,6 +1,6 @@
name nfs-utils
version 2.8.3
-release 2
+release 3
description nfs-utils: NFS client and server
source https://www.kernel.org/pub/linux/utils/nfs-utils/2.8.3/nfs-utils-2.8.3.tar.xz
@@ -17,6 +17,11 @@ depend keyutils
configure ./configure --prefix=/usr --disable-gss --disable-nfsv4 --with-statduser=nobody --disable-nfsdcltrack
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/nfs-server" "$PKG/etc/s6/sv/nfs-server" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/nfs-server.service" "$PKG/usr/lib/systemd/system/nfs-server.service"
install install -m 0755 "$SRC/files/openrc-nfs-server" "$PKG/etc/init.d/nfs-server"
+install install -m 0755 "$SRC/files/runit-nfs-server" "$PKG/etc/sv/nfs-server/run"
+install install -m 0755 "$SRC/files/s6-nfs-server" "$PKG/etc/s6/sv/nfs-server/run"
+install install -m 0644 "$SRC/files/dinit-nfs-server" "$PKG/etc/dinit.d/nfs-server"
+install install -m 0644 "$SRC/files/shepherd-nfs-server.scm" "$PKG/etc/shepherd.d/nfs-server.scm"
+install install -m 0755 "$SRC/files/sysvinit-nfs-server" "$PKG/etc/rc.d/init.d/nfs-server"
diff --git a/net/avahi/files/dinit-avahi-daemon b/net/avahi/files/dinit-avahi-daemon
new file mode 100644
index 0000000..9df7772
--- /dev/null
+++ b/net/avahi/files/dinit-avahi-daemon
@@ -0,0 +1,5 @@
+type = process
+command = /usr/sbin/avahi-daemon --no-chroot
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/net/avahi/files/runit-avahi-daemon b/net/avahi/files/runit-avahi-daemon
new file mode 100755
index 0000000..2d0d88e
--- /dev/null
+++ b/net/avahi/files/runit-avahi-daemon
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/avahi-daemon --no-chroot
diff --git a/net/avahi/files/s6-avahi-daemon b/net/avahi/files/s6-avahi-daemon
new file mode 100755
index 0000000..2d0d88e
--- /dev/null
+++ b/net/avahi/files/s6-avahi-daemon
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/avahi-daemon --no-chroot
diff --git a/net/avahi/files/shepherd-avahi-daemon.scm b/net/avahi/files/shepherd-avahi-daemon.scm
new file mode 100644
index 0000000..bb0dd8c
--- /dev/null
+++ b/net/avahi/files/shepherd-avahi-daemon.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(avahi-daemon)
+ #:requirement '(dbus)
+ #:documentation "Avahi mDNS/DNS-SD daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/avahi-daemon" "--no-chroot"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/avahi/files/sysvinit-avahi-daemon b/net/avahi/files/sysvinit-avahi-daemon
new file mode 100755
index 0000000..2725188
--- /dev/null
+++ b/net/avahi/files/sysvinit-avahi-daemon
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: avahi-daemon
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Avahi mDNS/DNS-SD daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=avahi-daemon
+DAEMON="/usr/sbin/avahi-daemon"
+DAEMON_ARGS="--no-chroot"
+PIDFILE="/run/avahi-daemon.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/avahi/recipe b/net/avahi/recipe
index 7415475..c0b4098 100644
--- a/net/avahi/recipe
+++ b/net/avahi/recipe
@@ -1,6 +1,6 @@
name avahi
version 0.8
-release 2
+release 3
description avahi: mDNS/DNS-SD stack
source https://github.com/lathiat/avahi/releases/download/v0.8/avahi-0.8.tar.gz
@@ -16,6 +16,11 @@ depend glib
configure ./configure --prefix=/usr --libdir=/usr/lib64 --disable-static --disable-qt3 --disable-qt4 --disable-qt5 --disable-gtk --disable-gtk3 --disable-mono --disable-monodoc --disable-python --disable-pygobject --with-distro=none --disable-libevent
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/avahi-daemon" "$PKG/etc/s6/sv/avahi-daemon" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/avahi-daemon.service" "$PKG/usr/lib/systemd/system/avahi-daemon.service"
install install -m 0755 "$SRC/files/openrc-avahi-daemon" "$PKG/etc/init.d/avahi-daemon"
+install install -m 0755 "$SRC/files/runit-avahi-daemon" "$PKG/etc/sv/avahi-daemon/run"
+install install -m 0755 "$SRC/files/s6-avahi-daemon" "$PKG/etc/s6/sv/avahi-daemon/run"
+install install -m 0644 "$SRC/files/dinit-avahi-daemon" "$PKG/etc/dinit.d/avahi-daemon"
+install install -m 0644 "$SRC/files/shepherd-avahi-daemon.scm" "$PKG/etc/shepherd.d/avahi-daemon.scm"
+install install -m 0755 "$SRC/files/sysvinit-avahi-daemon" "$PKG/etc/rc.d/init.d/avahi-daemon"
diff --git a/net/bluez/files/bluetooth.service b/net/bluez/files/bluetooth.service
index b57004e..72e2d4b 100644
--- a/net/bluez/files/bluetooth.service
+++ b/net/bluez/files/bluetooth.service
@@ -1,6 +1,6 @@
[Unit]
-Description=Bluetooth service
-After=dbus.service
+Description=Bluetooth daemon
+After=network.target dbus.service
[Service]
ExecStart=/usr/libexec/bluetooth/bluetoothd
diff --git a/net/bluez/files/dinit-bluetooth b/net/bluez/files/dinit-bluetooth
new file mode 100644
index 0000000..af66e30
--- /dev/null
+++ b/net/bluez/files/dinit-bluetooth
@@ -0,0 +1,5 @@
+type = process
+command = /usr/libexec/bluetooth/bluetoothd
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/net/bluez/files/openrc-bluetooth b/net/bluez/files/openrc-bluetooth
old mode 100644
new mode 100755
index 28a6cf9..0bfaf1f
--- a/net/bluez/files/openrc-bluetooth
+++ b/net/bluez/files/openrc-bluetooth
@@ -1,10 +1,11 @@
#!/sbin/openrc-run
description="Bluetooth daemon"
command="/usr/libexec/bluetooth/bluetoothd"
+command_args=""
command_background="yes"
-pidfile="/run/bluetoothd.pid"
+pidfile="/run/bluetooth.pid"
depend() {
- need dbus
- after dbus
+ need dbus
+ after dbus
}
diff --git a/net/bluez/files/runit-bluetooth b/net/bluez/files/runit-bluetooth
new file mode 100755
index 0000000..8c017d9
--- /dev/null
+++ b/net/bluez/files/runit-bluetooth
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/bluetooth/bluetoothd
diff --git a/net/bluez/files/s6-bluetooth b/net/bluez/files/s6-bluetooth
new file mode 100755
index 0000000..8c017d9
--- /dev/null
+++ b/net/bluez/files/s6-bluetooth
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/bluetooth/bluetoothd
diff --git a/net/bluez/files/shepherd-bluetooth.scm b/net/bluez/files/shepherd-bluetooth.scm
new file mode 100644
index 0000000..348317c
--- /dev/null
+++ b/net/bluez/files/shepherd-bluetooth.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(bluetooth)
+ #:requirement '(dbus)
+ #:documentation "Bluetooth daemon"
+ #:start (make-forkexec-constructor '("/usr/libexec/bluetooth/bluetoothd"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/bluez/files/sysvinit-bluetooth b/net/bluez/files/sysvinit-bluetooth
new file mode 100755
index 0000000..d65130b
--- /dev/null
+++ b/net/bluez/files/sysvinit-bluetooth
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: bluetooth
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Bluetooth daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=bluetooth
+DAEMON="/usr/libexec/bluetooth/bluetoothd"
+DAEMON_ARGS=""
+PIDFILE="/run/bluetooth.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/bluez/recipe b/net/bluez/recipe
index 2fab5f2..b545664 100644
--- a/net/bluez/recipe
+++ b/net/bluez/recipe
@@ -1,6 +1,6 @@
name bluez
version 5.84
-release 2
+release 3
description bluez: Bluetooth protocol stack
source https://mirrors.edge.kernel.org/pub/linux/bluetooth/bluez-5.84.tar.xz
@@ -15,6 +15,11 @@ depend readline
configure ./configure --prefix=/usr --enable-library --disable-systemd --disable-manpages
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/bluetooth" "$PKG/etc/s6/sv/bluetooth" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/bluetooth.service" "$PKG/usr/lib/systemd/system/bluetooth.service"
install install -m 0755 "$SRC/files/openrc-bluetooth" "$PKG/etc/init.d/bluetooth"
+install install -m 0755 "$SRC/files/runit-bluetooth" "$PKG/etc/sv/bluetooth/run"
+install install -m 0755 "$SRC/files/s6-bluetooth" "$PKG/etc/s6/sv/bluetooth/run"
+install install -m 0644 "$SRC/files/dinit-bluetooth" "$PKG/etc/dinit.d/bluetooth"
+install install -m 0644 "$SRC/files/shepherd-bluetooth.scm" "$PKG/etc/shepherd.d/bluetooth.scm"
+install install -m 0755 "$SRC/files/sysvinit-bluetooth" "$PKG/etc/rc.d/init.d/bluetooth"
diff --git a/net/conntrack-tools/files/dinit-conntrackd b/net/conntrack-tools/files/dinit-conntrackd
new file mode 100644
index 0000000..02d9a0f
--- /dev/null
+++ b/net/conntrack-tools/files/dinit-conntrackd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/conntrackd -C /etc/conntrackd/conntrackd.conf
+restart = true
+smooth-recovery = true
diff --git a/net/conntrack-tools/files/runit-conntrackd b/net/conntrack-tools/files/runit-conntrackd
new file mode 100755
index 0000000..9e1a1fb
--- /dev/null
+++ b/net/conntrack-tools/files/runit-conntrackd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/conntrackd -C /etc/conntrackd/conntrackd.conf
diff --git a/net/conntrack-tools/files/s6-conntrackd b/net/conntrack-tools/files/s6-conntrackd
new file mode 100755
index 0000000..9e1a1fb
--- /dev/null
+++ b/net/conntrack-tools/files/s6-conntrackd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/conntrackd -C /etc/conntrackd/conntrackd.conf
diff --git a/net/conntrack-tools/files/shepherd-conntrackd.scm b/net/conntrack-tools/files/shepherd-conntrackd.scm
new file mode 100644
index 0000000..5ed14bb
--- /dev/null
+++ b/net/conntrack-tools/files/shepherd-conntrackd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(conntrackd)
+ #:requirement '()
+ #:documentation "connection tracking daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/conntrackd" "-C" "/etc/conntrackd/conntrackd.conf"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/conntrack-tools/files/sysvinit-conntrackd b/net/conntrack-tools/files/sysvinit-conntrackd
new file mode 100755
index 0000000..77271b5
--- /dev/null
+++ b/net/conntrack-tools/files/sysvinit-conntrackd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: conntrackd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: connection tracking daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=conntrackd
+DAEMON="/usr/sbin/conntrackd"
+DAEMON_ARGS="-C /etc/conntrackd/conntrackd.conf"
+PIDFILE="/run/conntrackd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/conntrack-tools/recipe b/net/conntrack-tools/recipe
index ca86c04..516f63b 100644
--- a/net/conntrack-tools/recipe
+++ b/net/conntrack-tools/recipe
@@ -1,6 +1,6 @@
name conntrack-tools
version 1.4.8
-release 2
+release 3
description conntrack-tools: connection tracking userspace
source https://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-1.4.8.tar.xz
@@ -14,6 +14,11 @@ depend libnfnetlink
configure ./configure --prefix=/usr --libdir=/usr/lib64 --disable-static
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/conntrackd" "$PKG/etc/s6/sv/conntrackd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/conntrackd.service" "$PKG/usr/lib/systemd/system/conntrackd.service"
install install -m 0755 "$SRC/files/openrc-conntrackd" "$PKG/etc/init.d/conntrackd"
+install install -m 0755 "$SRC/files/runit-conntrackd" "$PKG/etc/sv/conntrackd/run"
+install install -m 0755 "$SRC/files/s6-conntrackd" "$PKG/etc/s6/sv/conntrackd/run"
+install install -m 0644 "$SRC/files/dinit-conntrackd" "$PKG/etc/dinit.d/conntrackd"
+install install -m 0644 "$SRC/files/shepherd-conntrackd.scm" "$PKG/etc/shepherd.d/conntrackd.scm"
+install install -m 0755 "$SRC/files/sysvinit-conntrackd" "$PKG/etc/rc.d/init.d/conntrackd"
diff --git a/net/dnsmasq/files/dinit-dnsmasq b/net/dnsmasq/files/dinit-dnsmasq
new file mode 100644
index 0000000..aaadb9b
--- /dev/null
+++ b/net/dnsmasq/files/dinit-dnsmasq
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/dnsmasq -k
+restart = true
+smooth-recovery = true
diff --git a/net/dnsmasq/files/runit-dnsmasq b/net/dnsmasq/files/runit-dnsmasq
new file mode 100755
index 0000000..c605f8b
--- /dev/null
+++ b/net/dnsmasq/files/runit-dnsmasq
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/dnsmasq -k
diff --git a/net/dnsmasq/files/s6-dnsmasq b/net/dnsmasq/files/s6-dnsmasq
new file mode 100755
index 0000000..c605f8b
--- /dev/null
+++ b/net/dnsmasq/files/s6-dnsmasq
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/dnsmasq -k
diff --git a/net/dnsmasq/files/shepherd-dnsmasq.scm b/net/dnsmasq/files/shepherd-dnsmasq.scm
new file mode 100644
index 0000000..9a59f2b
--- /dev/null
+++ b/net/dnsmasq/files/shepherd-dnsmasq.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(dnsmasq)
+ #:requirement '()
+ #:documentation "DNS and DHCP server"
+ #:start (make-forkexec-constructor '("/usr/sbin/dnsmasq" "-k"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/dnsmasq/files/sysvinit-dnsmasq b/net/dnsmasq/files/sysvinit-dnsmasq
new file mode 100755
index 0000000..f2aa933
--- /dev/null
+++ b/net/dnsmasq/files/sysvinit-dnsmasq
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: dnsmasq
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: DNS and DHCP server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=dnsmasq
+DAEMON="/usr/sbin/dnsmasq"
+DAEMON_ARGS="-k"
+PIDFILE="/run/dnsmasq.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/dnsmasq/recipe b/net/dnsmasq/recipe
index d1d73e7..5ad154d 100644
--- a/net/dnsmasq/recipe
+++ b/net/dnsmasq/recipe
@@ -1,6 +1,6 @@
name dnsmasq
version 2.91
-release 2
+release 3
description dnsmasq: DNS and DHCP server
source https://thekelleys.org.uk/dnsmasq/dnsmasq-2.91.tar.xz
@@ -10,6 +10,11 @@ depend filesystem
build make -j"$MAKEJOBS" PREFIX=/usr CFLAGS="-O2 -DHAVE_DNSSEC"
install make PREFIX=/usr DESTDIR="$PKG" install
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/dnsmasq" "$PKG/etc/s6/sv/dnsmasq" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/dnsmasq.service" "$PKG/usr/lib/systemd/system/dnsmasq.service"
install install -m 0755 "$SRC/files/openrc-dnsmasq" "$PKG/etc/init.d/dnsmasq"
+install install -m 0755 "$SRC/files/runit-dnsmasq" "$PKG/etc/sv/dnsmasq/run"
+install install -m 0755 "$SRC/files/s6-dnsmasq" "$PKG/etc/s6/sv/dnsmasq/run"
+install install -m 0644 "$SRC/files/dinit-dnsmasq" "$PKG/etc/dinit.d/dnsmasq"
+install install -m 0644 "$SRC/files/shepherd-dnsmasq.scm" "$PKG/etc/shepherd.d/dnsmasq.scm"
+install install -m 0755 "$SRC/files/sysvinit-dnsmasq" "$PKG/etc/rc.d/init.d/dnsmasq"
diff --git a/net/dropbear/files/dinit-dropbear b/net/dropbear/files/dinit-dropbear
new file mode 100644
index 0000000..54291af
--- /dev/null
+++ b/net/dropbear/files/dinit-dropbear
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/dropbear -F -E
+restart = true
+smooth-recovery = true
diff --git a/net/dropbear/files/runit-dropbear b/net/dropbear/files/runit-dropbear
new file mode 100755
index 0000000..f2b653f
--- /dev/null
+++ b/net/dropbear/files/runit-dropbear
@@ -0,0 +1,7 @@
+#!/bin/sh
+exec 2>&1
+if command -v dropbearkey >/dev/null 2>&1; then
+ mkdir -p /etc/dropbear
+ [ -f /etc/dropbear/dropbear_rsa_host_key ] || dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key >/dev/null
+fi
+exec /usr/sbin/dropbear -F -E
diff --git a/net/dropbear/files/s6-dropbear b/net/dropbear/files/s6-dropbear
new file mode 100755
index 0000000..f2b653f
--- /dev/null
+++ b/net/dropbear/files/s6-dropbear
@@ -0,0 +1,7 @@
+#!/bin/sh
+exec 2>&1
+if command -v dropbearkey >/dev/null 2>&1; then
+ mkdir -p /etc/dropbear
+ [ -f /etc/dropbear/dropbear_rsa_host_key ] || dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key >/dev/null
+fi
+exec /usr/sbin/dropbear -F -E
diff --git a/net/dropbear/files/shepherd-dropbear.scm b/net/dropbear/files/shepherd-dropbear.scm
new file mode 100644
index 0000000..cb18306
--- /dev/null
+++ b/net/dropbear/files/shepherd-dropbear.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(dropbear)
+ #:requirement '()
+ #:documentation "Dropbear SSH server"
+ #:start (make-forkexec-constructor '("/usr/sbin/dropbear" "-F" "-E"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/dropbear/files/sysvinit-dropbear b/net/dropbear/files/sysvinit-dropbear
new file mode 100755
index 0000000..b4d565c
--- /dev/null
+++ b/net/dropbear/files/sysvinit-dropbear
@@ -0,0 +1,45 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: dropbear
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Dropbear SSH server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=dropbear
+DAEMON="/usr/sbin/dropbear"
+DAEMON_ARGS="-F -E"
+PIDFILE="/run/dropbear.pid"
+USER=""
+
+start() {
+ if command -v dropbearkey >/dev/null 2>&1; then
+ mkdir -p /etc/dropbear
+ [ -f /etc/dropbear/dropbear_rsa_host_key ] || dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key >/dev/null
+ fi
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/dropbear/recipe b/net/dropbear/recipe
index a1830dd..4745715 100644
--- a/net/dropbear/recipe
+++ b/net/dropbear/recipe
@@ -1,6 +1,6 @@
name dropbear
version 2025.88
-release 2
+release 3
description dropbear: small SSH server and client
source https://matt.ucc.asn.au/dropbear/releases/dropbear-2025.88.tar.bz2
@@ -12,6 +12,11 @@ depend zlib
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/dropbear" "$PKG/etc/s6/sv/dropbear" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/dropbear.service" "$PKG/usr/lib/systemd/system/dropbear.service"
install install -m 0755 "$SRC/files/openrc-dropbear" "$PKG/etc/init.d/dropbear"
+install install -m 0755 "$SRC/files/runit-dropbear" "$PKG/etc/sv/dropbear/run"
+install install -m 0755 "$SRC/files/s6-dropbear" "$PKG/etc/s6/sv/dropbear/run"
+install install -m 0644 "$SRC/files/dinit-dropbear" "$PKG/etc/dinit.d/dropbear"
+install install -m 0644 "$SRC/files/shepherd-dropbear.scm" "$PKG/etc/shepherd.d/dropbear.scm"
+install install -m 0755 "$SRC/files/sysvinit-dropbear" "$PKG/etc/rc.d/init.d/dropbear"
diff --git a/net/haproxy/files/dinit-haproxy b/net/haproxy/files/dinit-haproxy
new file mode 100644
index 0000000..76ba874
--- /dev/null
+++ b/net/haproxy/files/dinit-haproxy
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -db
+restart = true
+smooth-recovery = true
diff --git a/net/haproxy/files/runit-haproxy b/net/haproxy/files/runit-haproxy
new file mode 100755
index 0000000..4c215a4
--- /dev/null
+++ b/net/haproxy/files/runit-haproxy
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -db
diff --git a/net/haproxy/files/s6-haproxy b/net/haproxy/files/s6-haproxy
new file mode 100755
index 0000000..4c215a4
--- /dev/null
+++ b/net/haproxy/files/s6-haproxy
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -db
diff --git a/net/haproxy/files/shepherd-haproxy.scm b/net/haproxy/files/shepherd-haproxy.scm
new file mode 100644
index 0000000..5a07060
--- /dev/null
+++ b/net/haproxy/files/shepherd-haproxy.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(haproxy)
+ #:requirement '()
+ #:documentation "HAProxy load balancer"
+ #:start (make-forkexec-constructor '("/usr/sbin/haproxy" "-f" "/etc/haproxy/haproxy.cfg" "-db"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/haproxy/files/sysvinit-haproxy b/net/haproxy/files/sysvinit-haproxy
new file mode 100755
index 0000000..7c53338
--- /dev/null
+++ b/net/haproxy/files/sysvinit-haproxy
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: haproxy
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: HAProxy load balancer
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=haproxy
+DAEMON="/usr/sbin/haproxy"
+DAEMON_ARGS="-f /etc/haproxy/haproxy.cfg -db"
+PIDFILE="/run/haproxy.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/haproxy/recipe b/net/haproxy/recipe
index 12d363e..b37b705 100644
--- a/net/haproxy/recipe
+++ b/net/haproxy/recipe
@@ -1,6 +1,6 @@
name haproxy
version 3.2.4
-release 2
+release 3
description haproxy: TCP/HTTP load balancer
source https://www.haproxy.org/download/3.2/src/haproxy-3.2.4.tar.gz
@@ -14,6 +14,11 @@ depend pcre2
build make -j"$MAKEJOBS" TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_LUA=1 USE_PCRE2=1 PREFIX=/usr
install make PREFIX=/usr DESTDIR="$PKG" TARGET=linux-glibc install
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/haproxy" "$PKG/etc/s6/sv/haproxy" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/haproxy.service" "$PKG/usr/lib/systemd/system/haproxy.service"
install install -m 0755 "$SRC/files/openrc-haproxy" "$PKG/etc/init.d/haproxy"
+install install -m 0755 "$SRC/files/runit-haproxy" "$PKG/etc/sv/haproxy/run"
+install install -m 0755 "$SRC/files/s6-haproxy" "$PKG/etc/s6/sv/haproxy/run"
+install install -m 0644 "$SRC/files/dinit-haproxy" "$PKG/etc/dinit.d/haproxy"
+install install -m 0644 "$SRC/files/shepherd-haproxy.scm" "$PKG/etc/shepherd.d/haproxy.scm"
+install install -m 0755 "$SRC/files/sysvinit-haproxy" "$PKG/etc/rc.d/init.d/haproxy"
diff --git a/net/iwd/files/dinit-iwd b/net/iwd/files/dinit-iwd
new file mode 100644
index 0000000..3e4fd51
--- /dev/null
+++ b/net/iwd/files/dinit-iwd
@@ -0,0 +1,5 @@
+type = process
+command = /usr/libexec/iwd
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/net/iwd/files/iwd.service b/net/iwd/files/iwd.service
index 25663af..4e3d132 100644
--- a/net/iwd/files/iwd.service
+++ b/net/iwd/files/iwd.service
@@ -1,6 +1,6 @@
[Unit]
-Description=Internet Wireless Daemon
-After=dbus.service
+Description=iNet wireless daemon
+After=network.target dbus.service
[Service]
ExecStart=/usr/libexec/iwd
diff --git a/net/iwd/files/openrc-iwd b/net/iwd/files/openrc-iwd
old mode 100644
new mode 100755
index b7bb685..81ff150
--- a/net/iwd/files/openrc-iwd
+++ b/net/iwd/files/openrc-iwd
@@ -1,11 +1,11 @@
#!/sbin/openrc-run
description="iNet wireless daemon"
command="/usr/libexec/iwd"
+command_args=""
command_background="yes"
pidfile="/run/iwd.pid"
depend() {
- need dbus
- after dbus
- provide net
+ need dbus
+ after dbus
}
diff --git a/net/iwd/files/runit-iwd b/net/iwd/files/runit-iwd
new file mode 100755
index 0000000..6b55c09
--- /dev/null
+++ b/net/iwd/files/runit-iwd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/iwd
diff --git a/net/iwd/files/s6-iwd b/net/iwd/files/s6-iwd
new file mode 100755
index 0000000..6b55c09
--- /dev/null
+++ b/net/iwd/files/s6-iwd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/iwd
diff --git a/net/iwd/files/shepherd-iwd.scm b/net/iwd/files/shepherd-iwd.scm
new file mode 100644
index 0000000..80de4f1
--- /dev/null
+++ b/net/iwd/files/shepherd-iwd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(iwd)
+ #:requirement '(dbus)
+ #:documentation "iNet wireless daemon"
+ #:start (make-forkexec-constructor '("/usr/libexec/iwd"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/iwd/files/sysvinit-iwd b/net/iwd/files/sysvinit-iwd
new file mode 100755
index 0000000..c3834a8
--- /dev/null
+++ b/net/iwd/files/sysvinit-iwd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: iwd
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: iNet wireless daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=iwd
+DAEMON="/usr/libexec/iwd"
+DAEMON_ARGS=""
+PIDFILE="/run/iwd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/iwd/recipe b/net/iwd/recipe
index 0c929a3..172e6cf 100644
--- a/net/iwd/recipe
+++ b/net/iwd/recipe
@@ -1,6 +1,6 @@
name iwd
version 3.9
-release 2
+release 3
description iwd: iNet wireless daemon
source https://cdn.kernel.org/pub/linux/network/wireless/iwd-3.9.tar.xz
@@ -13,6 +13,11 @@ depend dbus
configure ./configure --prefix=/usr --disable-systemd-service
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/iwd" "$PKG/etc/s6/sv/iwd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/iwd.service" "$PKG/usr/lib/systemd/system/iwd.service"
install install -m 0755 "$SRC/files/openrc-iwd" "$PKG/etc/init.d/iwd"
+install install -m 0755 "$SRC/files/runit-iwd" "$PKG/etc/sv/iwd/run"
+install install -m 0755 "$SRC/files/s6-iwd" "$PKG/etc/s6/sv/iwd/run"
+install install -m 0644 "$SRC/files/dinit-iwd" "$PKG/etc/dinit.d/iwd"
+install install -m 0644 "$SRC/files/shepherd-iwd.scm" "$PKG/etc/shepherd.d/iwd.scm"
+install install -m 0755 "$SRC/files/sysvinit-iwd" "$PKG/etc/rc.d/init.d/iwd"
diff --git a/net/lighttpd/files/dinit-lighttpd b/net/lighttpd/files/dinit-lighttpd
new file mode 100644
index 0000000..8908b81
--- /dev/null
+++ b/net/lighttpd/files/dinit-lighttpd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
+restart = true
+smooth-recovery = true
diff --git a/net/lighttpd/files/runit-lighttpd b/net/lighttpd/files/runit-lighttpd
new file mode 100755
index 0000000..bf94dcc
--- /dev/null
+++ b/net/lighttpd/files/runit-lighttpd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
diff --git a/net/lighttpd/files/s6-lighttpd b/net/lighttpd/files/s6-lighttpd
new file mode 100755
index 0000000..bf94dcc
--- /dev/null
+++ b/net/lighttpd/files/s6-lighttpd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
diff --git a/net/lighttpd/files/shepherd-lighttpd.scm b/net/lighttpd/files/shepherd-lighttpd.scm
new file mode 100644
index 0000000..434cd7d
--- /dev/null
+++ b/net/lighttpd/files/shepherd-lighttpd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(lighttpd)
+ #:requirement '()
+ #:documentation "lighttpd web server"
+ #:start (make-forkexec-constructor '("/usr/sbin/lighttpd" "-D" "-f" "/etc/lighttpd/lighttpd.conf"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/lighttpd/files/sysvinit-lighttpd b/net/lighttpd/files/sysvinit-lighttpd
new file mode 100755
index 0000000..746b234
--- /dev/null
+++ b/net/lighttpd/files/sysvinit-lighttpd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: lighttpd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: lighttpd web server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=lighttpd
+DAEMON="/usr/sbin/lighttpd"
+DAEMON_ARGS="-D -f /etc/lighttpd/lighttpd.conf"
+PIDFILE="/run/lighttpd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/lighttpd/recipe b/net/lighttpd/recipe
index a496bb3..8e7fcce 100644
--- a/net/lighttpd/recipe
+++ b/net/lighttpd/recipe
@@ -1,6 +1,6 @@
name lighttpd
version 1.4.81
-release 2
+release 3
description lighttpd: lightweight web server
source https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.81.tar.xz
@@ -18,6 +18,11 @@ builddep ninja
configure meson setup build --prefix=/usr --libdir=lib64 --buildtype=release -Dwith_brotli=enabled -Dwith_openssl=enabled -Dwith_zlib=enabled
build meson compile -C build -j "$MAKEJOBS"
install DESTDIR="$PKG" meson install -C build
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/lighttpd" "$PKG/etc/s6/sv/lighttpd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/lighttpd.service" "$PKG/usr/lib/systemd/system/lighttpd.service"
install install -m 0755 "$SRC/files/openrc-lighttpd" "$PKG/etc/init.d/lighttpd"
+install install -m 0755 "$SRC/files/runit-lighttpd" "$PKG/etc/sv/lighttpd/run"
+install install -m 0755 "$SRC/files/s6-lighttpd" "$PKG/etc/s6/sv/lighttpd/run"
+install install -m 0644 "$SRC/files/dinit-lighttpd" "$PKG/etc/dinit.d/lighttpd"
+install install -m 0644 "$SRC/files/shepherd-lighttpd.scm" "$PKG/etc/shepherd.d/lighttpd.scm"
+install install -m 0755 "$SRC/files/sysvinit-lighttpd" "$PKG/etc/rc.d/init.d/lighttpd"
diff --git a/net/networkmanager/files/NetworkManager.service b/net/networkmanager/files/NetworkManager.service
index f8c0cc6..b4080d4 100644
--- a/net/networkmanager/files/NetworkManager.service
+++ b/net/networkmanager/files/NetworkManager.service
@@ -1,8 +1,6 @@
[Unit]
-Description=Network Manager
-Wants=network.target
-After=dbus.service
-Before=network.target
+Description=NetworkManager
+After=network.target dbus.service
[Service]
ExecStart=/usr/sbin/NetworkManager --no-daemon
diff --git a/net/networkmanager/files/dinit-NetworkManager b/net/networkmanager/files/dinit-NetworkManager
new file mode 100644
index 0000000..fca481e
--- /dev/null
+++ b/net/networkmanager/files/dinit-NetworkManager
@@ -0,0 +1,5 @@
+type = process
+command = /usr/sbin/NetworkManager --no-daemon
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/net/networkmanager/files/openrc-NetworkManager b/net/networkmanager/files/openrc-NetworkManager
old mode 100644
new mode 100755
index f0a0c00..caf5676
--- a/net/networkmanager/files/openrc-NetworkManager
+++ b/net/networkmanager/files/openrc-NetworkManager
@@ -6,7 +6,6 @@ command_background="yes"
pidfile="/run/NetworkManager.pid"
depend() {
- need dbus
- after dbus
- provide net
+ need dbus
+ after dbus
}
diff --git a/net/networkmanager/files/runit-NetworkManager b/net/networkmanager/files/runit-NetworkManager
new file mode 100755
index 0000000..133052a
--- /dev/null
+++ b/net/networkmanager/files/runit-NetworkManager
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/NetworkManager --no-daemon
diff --git a/net/networkmanager/files/s6-NetworkManager b/net/networkmanager/files/s6-NetworkManager
new file mode 100755
index 0000000..133052a
--- /dev/null
+++ b/net/networkmanager/files/s6-NetworkManager
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/NetworkManager --no-daemon
diff --git a/net/networkmanager/files/shepherd-NetworkManager.scm b/net/networkmanager/files/shepherd-NetworkManager.scm
new file mode 100644
index 0000000..3801843
--- /dev/null
+++ b/net/networkmanager/files/shepherd-NetworkManager.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(NetworkManager)
+ #:requirement '(dbus)
+ #:documentation "NetworkManager"
+ #:start (make-forkexec-constructor '("/usr/sbin/NetworkManager" "--no-daemon"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/networkmanager/files/sysvinit-NetworkManager b/net/networkmanager/files/sysvinit-NetworkManager
new file mode 100755
index 0000000..64d30a4
--- /dev/null
+++ b/net/networkmanager/files/sysvinit-NetworkManager
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: NetworkManager
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: NetworkManager
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=NetworkManager
+DAEMON="/usr/sbin/NetworkManager"
+DAEMON_ARGS="--no-daemon"
+PIDFILE="/run/NetworkManager.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/networkmanager/recipe b/net/networkmanager/recipe
index 0f516c2..2ca223e 100644
--- a/net/networkmanager/recipe
+++ b/net/networkmanager/recipe
@@ -1,6 +1,6 @@
name networkmanager
version 1.54.0
-release 2
+release 3
description networkmanager: network configuration
source https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/archive/1.54.0/NetworkManager-1.54.0.tar.gz
@@ -15,6 +15,11 @@ depend jansson
configure meson setup build --prefix=/usr --buildtype=release -Dsystemd=false -Dsession_tracking=elogind -Dtests=no
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/NetworkManager" "$PKG/etc/s6/sv/NetworkManager" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/NetworkManager.service" "$PKG/usr/lib/systemd/system/NetworkManager.service"
install install -m 0755 "$SRC/files/openrc-NetworkManager" "$PKG/etc/init.d/NetworkManager"
+install install -m 0755 "$SRC/files/runit-NetworkManager" "$PKG/etc/sv/NetworkManager/run"
+install install -m 0755 "$SRC/files/s6-NetworkManager" "$PKG/etc/s6/sv/NetworkManager/run"
+install install -m 0644 "$SRC/files/dinit-NetworkManager" "$PKG/etc/dinit.d/NetworkManager"
+install install -m 0644 "$SRC/files/shepherd-NetworkManager.scm" "$PKG/etc/shepherd.d/NetworkManager.scm"
+install install -m 0755 "$SRC/files/sysvinit-NetworkManager" "$PKG/etc/rc.d/init.d/NetworkManager"
diff --git a/net/nftables/files/dinit-nftables b/net/nftables/files/dinit-nftables
new file mode 100644
index 0000000..d7bfc04
--- /dev/null
+++ b/net/nftables/files/dinit-nftables
@@ -0,0 +1,3 @@
+type = script
+command = /usr/sbin/nft -f /etc/nftables.conf
+restart = false
diff --git a/net/nftables/files/nftables.service b/net/nftables/files/nftables.service
new file mode 100644
index 0000000..aec4d6d
--- /dev/null
+++ b/net/nftables/files/nftables.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=nftables packet filter
+
+[Service]
+ExecStart=/usr/sbin/nft -f /etc/nftables.conf
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net/nftables/files/openrc-nftables b/net/nftables/files/openrc-nftables
new file mode 100755
index 0000000..2e9ede4
--- /dev/null
+++ b/net/nftables/files/openrc-nftables
@@ -0,0 +1,9 @@
+#!/sbin/openrc-run
+description="nftables packet filter"
+command="/usr/sbin/nft"
+command_args="-f /etc/nftables.conf"
+command_background="no"
+
+depend() {
+ need localmount
+}
diff --git a/net/nftables/files/runit-nftables b/net/nftables/files/runit-nftables
new file mode 100755
index 0000000..6091488
--- /dev/null
+++ b/net/nftables/files/runit-nftables
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+/usr/sbin/nft -f /etc/nftables.conf
+exec pause
diff --git a/net/nftables/files/s6-nftables b/net/nftables/files/s6-nftables
new file mode 100755
index 0000000..6091488
--- /dev/null
+++ b/net/nftables/files/s6-nftables
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+/usr/sbin/nft -f /etc/nftables.conf
+exec pause
diff --git a/net/nftables/files/shepherd-nftables.scm b/net/nftables/files/shepherd-nftables.scm
new file mode 100644
index 0000000..5276258
--- /dev/null
+++ b/net/nftables/files/shepherd-nftables.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(nftables)
+ #:requirement '()
+ #:documentation "nftables packet filter"
+ #:start (make-forkexec-constructor '("/usr/sbin/nft" "-f" "/etc/nftables.conf"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/nftables/files/sysvinit-nftables b/net/nftables/files/sysvinit-nftables
new file mode 100755
index 0000000..7d7d6f8
--- /dev/null
+++ b/net/nftables/files/sysvinit-nftables
@@ -0,0 +1,42 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: nftables
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: S
+# Default-Stop:
+# Short-Description: nftables packet filter
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=nftables
+DAEMON="/usr/sbin/nft"
+DAEMON_ARGS="-f /etc/nftables.conf"
+PIDFILE="/run/nftables.pid"
+USER=""
+
+start() {
+ eval "$DAEMON" $DAEMON_ARGS
+ return $?
+}
+
+stop() {
+ return 0
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/nftables/recipe b/net/nftables/recipe
index 7183004..55bc476 100644
--- a/net/nftables/recipe
+++ b/net/nftables/recipe
@@ -1,6 +1,6 @@
name nftables
version 1.1.3
-release 1
+release 2
description nftables: packet filtering
source https://www.netfilter.org/projects/nftables/files/nftables-1.1.3.tar.xz
@@ -15,3 +15,11 @@ depend jansson
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/nftables" "$PKG/etc/s6/sv/nftables" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/nftables.service" "$PKG/usr/lib/systemd/system/nftables.service"
+install install -m 0755 "$SRC/files/openrc-nftables" "$PKG/etc/init.d/nftables"
+install install -m 0755 "$SRC/files/runit-nftables" "$PKG/etc/sv/nftables/run"
+install install -m 0755 "$SRC/files/s6-nftables" "$PKG/etc/s6/sv/nftables/run"
+install install -m 0644 "$SRC/files/dinit-nftables" "$PKG/etc/dinit.d/nftables"
+install install -m 0644 "$SRC/files/shepherd-nftables.scm" "$PKG/etc/shepherd.d/nftables.scm"
+install install -m 0755 "$SRC/files/sysvinit-nftables" "$PKG/etc/rc.d/init.d/nftables"
diff --git a/net/openvpn/files/dinit-openvpn b/net/openvpn/files/dinit-openvpn
new file mode 100644
index 0000000..7f78bbb
--- /dev/null
+++ b/net/openvpn/files/dinit-openvpn
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/openvpn --config /etc/openvpn/server.conf
+restart = true
+smooth-recovery = true
diff --git a/net/openvpn/files/runit-openvpn b/net/openvpn/files/runit-openvpn
new file mode 100755
index 0000000..bd917d7
--- /dev/null
+++ b/net/openvpn/files/runit-openvpn
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/openvpn --config /etc/openvpn/server.conf
diff --git a/net/openvpn/files/s6-openvpn b/net/openvpn/files/s6-openvpn
new file mode 100755
index 0000000..bd917d7
--- /dev/null
+++ b/net/openvpn/files/s6-openvpn
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/openvpn --config /etc/openvpn/server.conf
diff --git a/net/openvpn/files/shepherd-openvpn.scm b/net/openvpn/files/shepherd-openvpn.scm
new file mode 100644
index 0000000..605b9e8
--- /dev/null
+++ b/net/openvpn/files/shepherd-openvpn.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(openvpn)
+ #:requirement '()
+ #:documentation "OpenVPN server"
+ #:start (make-forkexec-constructor '("/usr/sbin/openvpn" "--config" "/etc/openvpn/server.conf"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/openvpn/files/sysvinit-openvpn b/net/openvpn/files/sysvinit-openvpn
new file mode 100755
index 0000000..b97b38a
--- /dev/null
+++ b/net/openvpn/files/sysvinit-openvpn
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: openvpn
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: OpenVPN server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=openvpn
+DAEMON="/usr/sbin/openvpn"
+DAEMON_ARGS="--config /etc/openvpn/server.conf"
+PIDFILE="/run/openvpn.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/openvpn/recipe b/net/openvpn/recipe
index 61046ae..1570e6a 100644
--- a/net/openvpn/recipe
+++ b/net/openvpn/recipe
@@ -1,6 +1,6 @@
name openvpn
version 2.6.14
-release 2
+release 3
description openvpn: SSL/TLS VPN
source https://swupdate.openvpn.org/community/releases/openvpn-2.6.14.tar.gz
@@ -16,6 +16,11 @@ depend libcap-ng
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/openvpn" "$PKG/etc/s6/sv/openvpn" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/openvpn.service" "$PKG/usr/lib/systemd/system/openvpn.service"
install install -m 0755 "$SRC/files/openrc-openvpn" "$PKG/etc/init.d/openvpn"
+install install -m 0755 "$SRC/files/runit-openvpn" "$PKG/etc/sv/openvpn/run"
+install install -m 0755 "$SRC/files/s6-openvpn" "$PKG/etc/s6/sv/openvpn/run"
+install install -m 0644 "$SRC/files/dinit-openvpn" "$PKG/etc/dinit.d/openvpn"
+install install -m 0644 "$SRC/files/shepherd-openvpn.scm" "$PKG/etc/shepherd.d/openvpn.scm"
+install install -m 0755 "$SRC/files/sysvinit-openvpn" "$PKG/etc/rc.d/init.d/openvpn"
diff --git a/net/syncthing/files/dinit-syncthing b/net/syncthing/files/dinit-syncthing
new file mode 100644
index 0000000..f11678b
--- /dev/null
+++ b/net/syncthing/files/dinit-syncthing
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/syncthing serve --no-browser --home=/var/lib/syncthing
+restart = true
+smooth-recovery = true
diff --git a/net/syncthing/files/openrc-syncthing b/net/syncthing/files/openrc-syncthing
new file mode 100755
index 0000000..1d2b34f
--- /dev/null
+++ b/net/syncthing/files/openrc-syncthing
@@ -0,0 +1,15 @@
+#!/sbin/openrc-run
+description="Syncthing file synchronization"
+command="/usr/bin/syncthing"
+command_args="serve --no-browser --home=/var/lib/syncthing"
+command_background="yes"
+pidfile="/run/syncthing.pid"
+
+depend() {
+ use net
+ after net
+}
+
+start_pre() {
+ install -d -m 0755 /var/lib/syncthing || :
+}
diff --git a/net/syncthing/files/runit-syncthing b/net/syncthing/files/runit-syncthing
new file mode 100755
index 0000000..a57b6b8
--- /dev/null
+++ b/net/syncthing/files/runit-syncthing
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+install -d -m 0755 /var/lib/syncthing || :
+exec /usr/bin/syncthing serve --no-browser --home=/var/lib/syncthing
diff --git a/net/syncthing/files/s6-syncthing b/net/syncthing/files/s6-syncthing
new file mode 100755
index 0000000..a57b6b8
--- /dev/null
+++ b/net/syncthing/files/s6-syncthing
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+install -d -m 0755 /var/lib/syncthing || :
+exec /usr/bin/syncthing serve --no-browser --home=/var/lib/syncthing
diff --git a/net/syncthing/files/shepherd-syncthing.scm b/net/syncthing/files/shepherd-syncthing.scm
new file mode 100644
index 0000000..7480b23
--- /dev/null
+++ b/net/syncthing/files/shepherd-syncthing.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(syncthing)
+ #:requirement '()
+ #:documentation "Syncthing file synchronization"
+ #:start (make-forkexec-constructor '("/usr/bin/syncthing" "serve" "--no-browser" "--home=/var/lib/syncthing"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/syncthing/files/syncthing.service b/net/syncthing/files/syncthing.service
new file mode 100644
index 0000000..cf71975
--- /dev/null
+++ b/net/syncthing/files/syncthing.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Syncthing file synchronization
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/syncthing serve --no-browser --home=/var/lib/syncthing
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net/syncthing/files/sysvinit-syncthing b/net/syncthing/files/sysvinit-syncthing
new file mode 100755
index 0000000..de0b162
--- /dev/null
+++ b/net/syncthing/files/sysvinit-syncthing
@@ -0,0 +1,42 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: syncthing
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Syncthing file synchronization
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=syncthing
+DAEMON="/usr/bin/syncthing"
+DAEMON_ARGS="serve --no-browser --home=/var/lib/syncthing"
+PIDFILE="/run/syncthing.pid"
+USER=""
+
+start() {
+ install -d -m 0755 /var/lib/syncthing || :
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/syncthing/recipe b/net/syncthing/recipe
index a9613dd..5e80f39 100644
--- a/net/syncthing/recipe
+++ b/net/syncthing/recipe
@@ -1,6 +1,6 @@
name syncthing
version 1.29.7
-release 1
+release 2
description syncthing: continuous file synchronization
source https://github.com/syncthing/syncthing/releases/download/v1.29.7/syncthing-linux-amd64-v1.29.7.tar.gz
@@ -11,3 +11,11 @@ depend filesystem
install mkdir -p "$PKG/usr/bin"
install find . -type f -name syncthing -exec cp {} "$PKG/usr/bin/syncthing" \;
install chmod 755 "$PKG/usr/bin/syncthing"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/syncthing" "$PKG/etc/s6/sv/syncthing" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/syncthing.service" "$PKG/usr/lib/systemd/system/syncthing.service"
+install install -m 0755 "$SRC/files/openrc-syncthing" "$PKG/etc/init.d/syncthing"
+install install -m 0755 "$SRC/files/runit-syncthing" "$PKG/etc/sv/syncthing/run"
+install install -m 0755 "$SRC/files/s6-syncthing" "$PKG/etc/s6/sv/syncthing/run"
+install install -m 0644 "$SRC/files/dinit-syncthing" "$PKG/etc/dinit.d/syncthing"
+install install -m 0644 "$SRC/files/shepherd-syncthing.scm" "$PKG/etc/shepherd.d/syncthing.scm"
+install install -m 0755 "$SRC/files/sysvinit-syncthing" "$PKG/etc/rc.d/init.d/syncthing"
diff --git a/net/tinyproxy/files/dinit-tinyproxy b/net/tinyproxy/files/dinit-tinyproxy
new file mode 100644
index 0000000..b3ab674
--- /dev/null
+++ b/net/tinyproxy/files/dinit-tinyproxy
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/tinyproxy -d
+restart = true
+smooth-recovery = true
diff --git a/net/tinyproxy/files/runit-tinyproxy b/net/tinyproxy/files/runit-tinyproxy
new file mode 100755
index 0000000..0a286fa
--- /dev/null
+++ b/net/tinyproxy/files/runit-tinyproxy
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/tinyproxy -d
diff --git a/net/tinyproxy/files/s6-tinyproxy b/net/tinyproxy/files/s6-tinyproxy
new file mode 100755
index 0000000..0a286fa
--- /dev/null
+++ b/net/tinyproxy/files/s6-tinyproxy
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/tinyproxy -d
diff --git a/net/tinyproxy/files/shepherd-tinyproxy.scm b/net/tinyproxy/files/shepherd-tinyproxy.scm
new file mode 100644
index 0000000..8b9c994
--- /dev/null
+++ b/net/tinyproxy/files/shepherd-tinyproxy.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(tinyproxy)
+ #:requirement '()
+ #:documentation "Tinyproxy HTTP proxy"
+ #:start (make-forkexec-constructor '("/usr/bin/tinyproxy" "-d"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/tinyproxy/files/sysvinit-tinyproxy b/net/tinyproxy/files/sysvinit-tinyproxy
new file mode 100755
index 0000000..51e7b9c
--- /dev/null
+++ b/net/tinyproxy/files/sysvinit-tinyproxy
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: tinyproxy
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Tinyproxy HTTP proxy
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=tinyproxy
+DAEMON="/usr/bin/tinyproxy"
+DAEMON_ARGS="-d"
+PIDFILE="/run/tinyproxy.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/tinyproxy/recipe b/net/tinyproxy/recipe
index ab20dcf..5a227c9 100644
--- a/net/tinyproxy/recipe
+++ b/net/tinyproxy/recipe
@@ -1,6 +1,6 @@
name tinyproxy
version 1.11.2
-release 2
+release 3
description tinyproxy: lightweight HTTP proxy
source https://github.com/tinyproxy/tinyproxy/releases/download/1.11.2/tinyproxy-1.11.2.tar.gz
@@ -11,6 +11,11 @@ depend filesystem
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/tinyproxy" "$PKG/etc/s6/sv/tinyproxy" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/tinyproxy.service" "$PKG/usr/lib/systemd/system/tinyproxy.service"
install install -m 0755 "$SRC/files/openrc-tinyproxy" "$PKG/etc/init.d/tinyproxy"
+install install -m 0755 "$SRC/files/runit-tinyproxy" "$PKG/etc/sv/tinyproxy/run"
+install install -m 0755 "$SRC/files/s6-tinyproxy" "$PKG/etc/s6/sv/tinyproxy/run"
+install install -m 0644 "$SRC/files/dinit-tinyproxy" "$PKG/etc/dinit.d/tinyproxy"
+install install -m 0644 "$SRC/files/shepherd-tinyproxy.scm" "$PKG/etc/shepherd.d/tinyproxy.scm"
+install install -m 0755 "$SRC/files/sysvinit-tinyproxy" "$PKG/etc/rc.d/init.d/tinyproxy"
diff --git a/net/tor/files/dinit-tor b/net/tor/files/dinit-tor
new file mode 100644
index 0000000..47f7a85
--- /dev/null
+++ b/net/tor/files/dinit-tor
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/tor --RunAsDaemon 0
+restart = true
+smooth-recovery = true
diff --git a/net/tor/files/runit-tor b/net/tor/files/runit-tor
new file mode 100755
index 0000000..e83de8c
--- /dev/null
+++ b/net/tor/files/runit-tor
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/tor --RunAsDaemon 0
diff --git a/net/tor/files/s6-tor b/net/tor/files/s6-tor
new file mode 100755
index 0000000..e83de8c
--- /dev/null
+++ b/net/tor/files/s6-tor
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/tor --RunAsDaemon 0
diff --git a/net/tor/files/shepherd-tor.scm b/net/tor/files/shepherd-tor.scm
new file mode 100644
index 0000000..c6693b0
--- /dev/null
+++ b/net/tor/files/shepherd-tor.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(tor)
+ #:requirement '()
+ #:documentation "Tor anonymity daemon"
+ #:start (make-forkexec-constructor '("/usr/bin/tor" "--RunAsDaemon" "0"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/tor/files/sysvinit-tor b/net/tor/files/sysvinit-tor
new file mode 100755
index 0000000..3ab81ed
--- /dev/null
+++ b/net/tor/files/sysvinit-tor
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: tor
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Tor anonymity daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=tor
+DAEMON="/usr/bin/tor"
+DAEMON_ARGS="--RunAsDaemon 0"
+PIDFILE="/run/tor.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/tor/recipe b/net/tor/recipe
index b9de0f6..7d1c73a 100644
--- a/net/tor/recipe
+++ b/net/tor/recipe
@@ -1,6 +1,6 @@
name tor
version 0.4.8.17
-release 2
+release 3
description tor: anonymity network
source https://dist.torproject.org/tor-0.4.8.17.tar.gz
@@ -17,6 +17,11 @@ depend libcap
configure ./configure --prefix=/usr --libdir=/usr/lib64 --disable-static
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/tor" "$PKG/etc/s6/sv/tor" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/tor.service" "$PKG/usr/lib/systemd/system/tor.service"
install install -m 0755 "$SRC/files/openrc-tor" "$PKG/etc/init.d/tor"
+install install -m 0755 "$SRC/files/runit-tor" "$PKG/etc/sv/tor/run"
+install install -m 0755 "$SRC/files/s6-tor" "$PKG/etc/s6/sv/tor/run"
+install install -m 0644 "$SRC/files/dinit-tor" "$PKG/etc/dinit.d/tor"
+install install -m 0644 "$SRC/files/shepherd-tor.scm" "$PKG/etc/shepherd.d/tor.scm"
+install install -m 0755 "$SRC/files/sysvinit-tor" "$PKG/etc/rc.d/init.d/tor"
diff --git a/net/transmission/files/dinit-transmission-daemon b/net/transmission/files/dinit-transmission-daemon
new file mode 100644
index 0000000..d80b539
--- /dev/null
+++ b/net/transmission/files/dinit-transmission-daemon
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/transmission-daemon -f --log-level=error
+restart = true
+smooth-recovery = true
diff --git a/net/transmission/files/openrc-transmission-daemon b/net/transmission/files/openrc-transmission-daemon
new file mode 100755
index 0000000..2103e51
--- /dev/null
+++ b/net/transmission/files/openrc-transmission-daemon
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="Transmission BitTorrent daemon"
+command="/usr/bin/transmission-daemon"
+command_args="-f --log-level=error"
+command_background="yes"
+pidfile="/run/transmission-daemon.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/net/transmission/files/runit-transmission-daemon b/net/transmission/files/runit-transmission-daemon
new file mode 100755
index 0000000..c9e3418
--- /dev/null
+++ b/net/transmission/files/runit-transmission-daemon
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/transmission-daemon -f --log-level=error
diff --git a/net/transmission/files/s6-transmission-daemon b/net/transmission/files/s6-transmission-daemon
new file mode 100755
index 0000000..c9e3418
--- /dev/null
+++ b/net/transmission/files/s6-transmission-daemon
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/transmission-daemon -f --log-level=error
diff --git a/net/transmission/files/shepherd-transmission-daemon.scm b/net/transmission/files/shepherd-transmission-daemon.scm
new file mode 100644
index 0000000..74aeb2d
--- /dev/null
+++ b/net/transmission/files/shepherd-transmission-daemon.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(transmission-daemon)
+ #:requirement '()
+ #:documentation "Transmission BitTorrent daemon"
+ #:start (make-forkexec-constructor '("/usr/bin/transmission-daemon" "-f" "--log-level=error"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/transmission/files/sysvinit-transmission-daemon b/net/transmission/files/sysvinit-transmission-daemon
new file mode 100755
index 0000000..c106520
--- /dev/null
+++ b/net/transmission/files/sysvinit-transmission-daemon
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: transmission-daemon
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Transmission BitTorrent daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=transmission-daemon
+DAEMON="/usr/bin/transmission-daemon"
+DAEMON_ARGS="-f --log-level=error"
+PIDFILE="/run/transmission-daemon.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/transmission/files/transmission-daemon.service b/net/transmission/files/transmission-daemon.service
new file mode 100644
index 0000000..410deac
--- /dev/null
+++ b/net/transmission/files/transmission-daemon.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Transmission BitTorrent daemon
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/transmission-daemon -f --log-level=error
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net/transmission/recipe b/net/transmission/recipe
index 28d4332..ca54efd 100644
--- a/net/transmission/recipe
+++ b/net/transmission/recipe
@@ -1,6 +1,6 @@
name transmission
version 4.0.6
-release 1
+release 2
description transmission: BitTorrent client
source https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz
@@ -16,3 +16,11 @@ builddep ninja
configure cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib64 -DENABLE_GTK=OFF -DENABLE_QT=OFF -DENABLE_MAC=OFF -DENABLE_WEB=OFF -DENABLE_UTILS=ON -DENABLE_CLI=ON -DENABLE_TESTS=OFF -DINSTALL_DOC=ON
build cmake --build build --parallel "$MAKEJOBS"
install DESTDIR="$PKG" cmake --install build
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/transmission-daemon" "$PKG/etc/s6/sv/transmission-daemon" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/transmission-daemon.service" "$PKG/usr/lib/systemd/system/transmission-daemon.service"
+install install -m 0755 "$SRC/files/openrc-transmission-daemon" "$PKG/etc/init.d/transmission-daemon"
+install install -m 0755 "$SRC/files/runit-transmission-daemon" "$PKG/etc/sv/transmission-daemon/run"
+install install -m 0755 "$SRC/files/s6-transmission-daemon" "$PKG/etc/s6/sv/transmission-daemon/run"
+install install -m 0644 "$SRC/files/dinit-transmission-daemon" "$PKG/etc/dinit.d/transmission-daemon"
+install install -m 0644 "$SRC/files/shepherd-transmission-daemon.scm" "$PKG/etc/shepherd.d/transmission-daemon.scm"
+install install -m 0755 "$SRC/files/sysvinit-transmission-daemon" "$PKG/etc/rc.d/init.d/transmission-daemon"
diff --git a/net/unbound/files/dinit-unbound b/net/unbound/files/dinit-unbound
new file mode 100644
index 0000000..6168a99
--- /dev/null
+++ b/net/unbound/files/dinit-unbound
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/unbound -d
+restart = true
+smooth-recovery = true
diff --git a/net/unbound/files/runit-unbound b/net/unbound/files/runit-unbound
new file mode 100755
index 0000000..9ec1a54
--- /dev/null
+++ b/net/unbound/files/runit-unbound
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/unbound -d
diff --git a/net/unbound/files/s6-unbound b/net/unbound/files/s6-unbound
new file mode 100755
index 0000000..9ec1a54
--- /dev/null
+++ b/net/unbound/files/s6-unbound
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/unbound -d
diff --git a/net/unbound/files/shepherd-unbound.scm b/net/unbound/files/shepherd-unbound.scm
new file mode 100644
index 0000000..860a11a
--- /dev/null
+++ b/net/unbound/files/shepherd-unbound.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(unbound)
+ #:requirement '()
+ #:documentation "validating recursive DNS resolver"
+ #:start (make-forkexec-constructor '("/usr/sbin/unbound" "-d"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/unbound/files/sysvinit-unbound b/net/unbound/files/sysvinit-unbound
new file mode 100755
index 0000000..d5e1f30
--- /dev/null
+++ b/net/unbound/files/sysvinit-unbound
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: unbound
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: validating recursive DNS resolver
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=unbound
+DAEMON="/usr/sbin/unbound"
+DAEMON_ARGS="-d"
+PIDFILE="/run/unbound.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/unbound/recipe b/net/unbound/recipe
index ac50c67..0f17e69 100644
--- a/net/unbound/recipe
+++ b/net/unbound/recipe
@@ -1,6 +1,6 @@
name unbound
version 1.23.1
-release 2
+release 3
description unbound: validating recursive DNS resolver
source https://nlnetlabs.nl/downloads/unbound/unbound-1.23.1.tar.gz
@@ -15,6 +15,11 @@ depend libcap
configure ./configure --prefix=/usr --with-libevent --with-pidfile=/run/unbound.pid --sysconfdir=/etc
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/unbound" "$PKG/etc/s6/sv/unbound" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/unbound.service" "$PKG/usr/lib/systemd/system/unbound.service"
install install -m 0755 "$SRC/files/openrc-unbound" "$PKG/etc/init.d/unbound"
+install install -m 0755 "$SRC/files/runit-unbound" "$PKG/etc/sv/unbound/run"
+install install -m 0755 "$SRC/files/s6-unbound" "$PKG/etc/s6/sv/unbound/run"
+install install -m 0644 "$SRC/files/dinit-unbound" "$PKG/etc/dinit.d/unbound"
+install install -m 0644 "$SRC/files/shepherd-unbound.scm" "$PKG/etc/shepherd.d/unbound.scm"
+install install -m 0755 "$SRC/files/sysvinit-unbound" "$PKG/etc/rc.d/init.d/unbound"
diff --git a/net/wpa_supplicant/files/dinit-wpa_supplicant b/net/wpa_supplicant/files/dinit-wpa_supplicant
new file mode 100644
index 0000000..cd8aca6
--- /dev/null
+++ b/net/wpa_supplicant/files/dinit-wpa_supplicant
@@ -0,0 +1,5 @@
+type = process
+command = /usr/sbin/wpa_supplicant -u -s
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/net/wpa_supplicant/files/openrc-wpa_supplicant b/net/wpa_supplicant/files/openrc-wpa_supplicant
new file mode 100755
index 0000000..4c3d644
--- /dev/null
+++ b/net/wpa_supplicant/files/openrc-wpa_supplicant
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="wpa_supplicant Wi-Fi client"
+command="/usr/sbin/wpa_supplicant"
+command_args="-u -s"
+command_background="yes"
+pidfile="/run/wpa_supplicant.pid"
+
+depend() {
+ need dbus
+ after dbus
+}
diff --git a/net/wpa_supplicant/files/runit-wpa_supplicant b/net/wpa_supplicant/files/runit-wpa_supplicant
new file mode 100755
index 0000000..1e854aa
--- /dev/null
+++ b/net/wpa_supplicant/files/runit-wpa_supplicant
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/wpa_supplicant -u -s
diff --git a/net/wpa_supplicant/files/s6-wpa_supplicant b/net/wpa_supplicant/files/s6-wpa_supplicant
new file mode 100755
index 0000000..1e854aa
--- /dev/null
+++ b/net/wpa_supplicant/files/s6-wpa_supplicant
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/wpa_supplicant -u -s
diff --git a/net/wpa_supplicant/files/shepherd-wpa_supplicant.scm b/net/wpa_supplicant/files/shepherd-wpa_supplicant.scm
new file mode 100644
index 0000000..978ca6f
--- /dev/null
+++ b/net/wpa_supplicant/files/shepherd-wpa_supplicant.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(wpa_supplicant)
+ #:requirement '(dbus)
+ #:documentation "wpa_supplicant Wi-Fi client"
+ #:start (make-forkexec-constructor '("/usr/sbin/wpa_supplicant" "-u" "-s"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/net/wpa_supplicant/files/sysvinit-wpa_supplicant b/net/wpa_supplicant/files/sysvinit-wpa_supplicant
new file mode 100755
index 0000000..25b3e1a
--- /dev/null
+++ b/net/wpa_supplicant/files/sysvinit-wpa_supplicant
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: wpa_supplicant
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: wpa_supplicant Wi-Fi client
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=wpa_supplicant
+DAEMON="/usr/sbin/wpa_supplicant"
+DAEMON_ARGS="-u -s"
+PIDFILE="/run/wpa_supplicant.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/net/wpa_supplicant/files/wpa_supplicant.service b/net/wpa_supplicant/files/wpa_supplicant.service
new file mode 100644
index 0000000..4a90628
--- /dev/null
+++ b/net/wpa_supplicant/files/wpa_supplicant.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=wpa_supplicant Wi-Fi client
+After=network.target dbus.service
+
+[Service]
+ExecStart=/usr/sbin/wpa_supplicant -u -s
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net/wpa_supplicant/recipe b/net/wpa_supplicant/recipe
index 3a776d5..a268682 100644
--- a/net/wpa_supplicant/recipe
+++ b/net/wpa_supplicant/recipe
@@ -1,6 +1,6 @@
name wpa_supplicant
version 2.11
-release 1
+release 2
description wpa_supplicant: Wi-Fi client
source https://w1.fi/releases/wpa_supplicant-2.11.tar.gz
@@ -12,3 +12,11 @@ depend libnl
build make -C wpa_supplicant -j"$MAKEJOBS"
install make -C wpa_supplicant DESTDIR="$PKG" BINDIR=/usr/sbin install
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/wpa_supplicant" "$PKG/etc/s6/sv/wpa_supplicant" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/wpa_supplicant.service" "$PKG/usr/lib/systemd/system/wpa_supplicant.service"
+install install -m 0755 "$SRC/files/openrc-wpa_supplicant" "$PKG/etc/init.d/wpa_supplicant"
+install install -m 0755 "$SRC/files/runit-wpa_supplicant" "$PKG/etc/sv/wpa_supplicant/run"
+install install -m 0755 "$SRC/files/s6-wpa_supplicant" "$PKG/etc/s6/sv/wpa_supplicant/run"
+install install -m 0644 "$SRC/files/dinit-wpa_supplicant" "$PKG/etc/dinit.d/wpa_supplicant"
+install install -m 0644 "$SRC/files/shepherd-wpa_supplicant.scm" "$PKG/etc/shepherd.d/wpa_supplicant.scm"
+install install -m 0755 "$SRC/files/sysvinit-wpa_supplicant" "$PKG/etc/rc.d/init.d/wpa_supplicant"
diff --git a/print/cups/files/cups.service b/print/cups/files/cups.service
index 0a8be5b..96d05db 100644
--- a/print/cups/files/cups.service
+++ b/print/cups/files/cups.service
@@ -1,6 +1,6 @@
[Unit]
-Description=CUPS Scheduler
-After=dbus.service
+Description=CUPS printing service
+After=network.target dbus.service
[Service]
ExecStart=/usr/sbin/cupsd -f
diff --git a/print/cups/files/dinit-cupsd b/print/cups/files/dinit-cupsd
new file mode 100644
index 0000000..90a1ea6
--- /dev/null
+++ b/print/cups/files/dinit-cupsd
@@ -0,0 +1,5 @@
+type = process
+command = /usr/sbin/cupsd -f
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/print/cups/files/openrc-cupsd b/print/cups/files/openrc-cupsd
old mode 100644
new mode 100755
index df9b651..d04e17c
--- a/print/cups/files/openrc-cupsd
+++ b/print/cups/files/openrc-cupsd
@@ -6,6 +6,6 @@ command_background="yes"
pidfile="/run/cupsd.pid"
depend() {
- use dbus
- after dbus
+ need dbus
+ after dbus
}
diff --git a/print/cups/files/runit-cupsd b/print/cups/files/runit-cupsd
new file mode 100755
index 0000000..667ab48
--- /dev/null
+++ b/print/cups/files/runit-cupsd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/cupsd -f
diff --git a/print/cups/files/s6-cupsd b/print/cups/files/s6-cupsd
new file mode 100755
index 0000000..667ab48
--- /dev/null
+++ b/print/cups/files/s6-cupsd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/cupsd -f
diff --git a/print/cups/files/shepherd-cupsd.scm b/print/cups/files/shepherd-cupsd.scm
new file mode 100644
index 0000000..daf0e3d
--- /dev/null
+++ b/print/cups/files/shepherd-cupsd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(cupsd)
+ #:requirement '(dbus)
+ #:documentation "CUPS printing service"
+ #:start (make-forkexec-constructor '("/usr/sbin/cupsd" "-f"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/print/cups/files/sysvinit-cupsd b/print/cups/files/sysvinit-cupsd
new file mode 100755
index 0000000..5bf1d55
--- /dev/null
+++ b/print/cups/files/sysvinit-cupsd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: cupsd
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: CUPS printing service
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=cupsd
+DAEMON="/usr/sbin/cupsd"
+DAEMON_ARGS="-f"
+PIDFILE="/run/cupsd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/print/cups/recipe b/print/cups/recipe
index cf2b203..244aa00 100644
--- a/print/cups/recipe
+++ b/print/cups/recipe
@@ -1,6 +1,6 @@
name cups
version 2.4.14
-release 2
+release 3
description cups: Common UNIX Printing System
source https://github.com/OpenPrinting/cups/releases/download/v2.4.14/cups-2.4.14-source.tar.gz
@@ -13,6 +13,11 @@ depend zlib
configure ./configure --prefix=/usr --with-rcdir=no --with-systemd=no --with-components=all
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/cupsd" "$PKG/etc/s6/sv/cupsd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/cups.service" "$PKG/usr/lib/systemd/system/cups.service"
install install -m 0755 "$SRC/files/openrc-cupsd" "$PKG/etc/init.d/cupsd"
+install install -m 0755 "$SRC/files/runit-cupsd" "$PKG/etc/sv/cupsd/run"
+install install -m 0755 "$SRC/files/s6-cupsd" "$PKG/etc/s6/sv/cupsd/run"
+install install -m 0644 "$SRC/files/dinit-cupsd" "$PKG/etc/dinit.d/cupsd"
+install install -m 0644 "$SRC/files/shepherd-cupsd.scm" "$PKG/etc/shepherd.d/cupsd.scm"
+install install -m 0755 "$SRC/files/sysvinit-cupsd" "$PKG/etc/rc.d/init.d/cupsd"
diff --git a/security/fail2ban/files/dinit-fail2ban b/security/fail2ban/files/dinit-fail2ban
new file mode 100644
index 0000000..8757a25
--- /dev/null
+++ b/security/fail2ban/files/dinit-fail2ban
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/fail2ban-server -xf --logtarget=stdout
+restart = true
+smooth-recovery = true
diff --git a/security/fail2ban/files/runit-fail2ban b/security/fail2ban/files/runit-fail2ban
new file mode 100755
index 0000000..7bc8461
--- /dev/null
+++ b/security/fail2ban/files/runit-fail2ban
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/fail2ban-server -xf --logtarget=stdout
diff --git a/security/fail2ban/files/s6-fail2ban b/security/fail2ban/files/s6-fail2ban
new file mode 100755
index 0000000..7bc8461
--- /dev/null
+++ b/security/fail2ban/files/s6-fail2ban
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/fail2ban-server -xf --logtarget=stdout
diff --git a/security/fail2ban/files/shepherd-fail2ban.scm b/security/fail2ban/files/shepherd-fail2ban.scm
new file mode 100644
index 0000000..b1d61e9
--- /dev/null
+++ b/security/fail2ban/files/shepherd-fail2ban.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(fail2ban)
+ #:requirement '()
+ #:documentation "fail2ban authentication ban daemon"
+ #:start (make-forkexec-constructor '("/usr/bin/fail2ban-server" "-xf" "--logtarget=stdout"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/security/fail2ban/files/sysvinit-fail2ban b/security/fail2ban/files/sysvinit-fail2ban
new file mode 100755
index 0000000..1726512
--- /dev/null
+++ b/security/fail2ban/files/sysvinit-fail2ban
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: fail2ban
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: fail2ban authentication ban daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=fail2ban
+DAEMON="/usr/bin/fail2ban-server"
+DAEMON_ARGS="-xf --logtarget=stdout"
+PIDFILE="/run/fail2ban.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/security/fail2ban/recipe b/security/fail2ban/recipe
index 4172e75..ef02c61 100644
--- a/security/fail2ban/recipe
+++ b/security/fail2ban/recipe
@@ -1,6 +1,6 @@
name fail2ban
version 1.1.0
-release 2
+release 3
arch any
description fail2ban: ban hosts that cause multiple auth errors
@@ -11,6 +11,11 @@ depend filesystem
depend python
install python3 setup.py install --prefix=/usr --root="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/fail2ban" "$PKG/etc/s6/sv/fail2ban" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/fail2ban.service" "$PKG/usr/lib/systemd/system/fail2ban.service"
install install -m 0755 "$SRC/files/openrc-fail2ban" "$PKG/etc/init.d/fail2ban"
+install install -m 0755 "$SRC/files/runit-fail2ban" "$PKG/etc/sv/fail2ban/run"
+install install -m 0755 "$SRC/files/s6-fail2ban" "$PKG/etc/s6/sv/fail2ban/run"
+install install -m 0644 "$SRC/files/dinit-fail2ban" "$PKG/etc/dinit.d/fail2ban"
+install install -m 0644 "$SRC/files/shepherd-fail2ban.scm" "$PKG/etc/shepherd.d/fail2ban.scm"
+install install -m 0755 "$SRC/files/sysvinit-fail2ban" "$PKG/etc/rc.d/init.d/fail2ban"
diff --git a/sys/dinit/recipe b/sys/dinit/recipe
index 9e8f927..cf60b6e 100644
--- a/sys/dinit/recipe
+++ b/sys/dinit/recipe
@@ -1,6 +1,6 @@
name dinit
version 0.19.4
-release 1
+release 2
description dinit: service manager and init
source https://github.com/davmac314/dinit/releases/download/v0.19.4/dinit-0.19.4.tar.xz
hash sha256:a7d472186c9e8b19a8b88019a99c64c417c59abee244b1893b6c2ae03024df1e
@@ -10,6 +10,7 @@ conflict openrc
conflict s6
conflict runit
conflict shepherd
+conflict sysvinit
configure ./configure --prefix=/usr --exec-prefix=/usr --sbindir=/usr/sbin --enable-shutdown --shutdown-prefix=dinit-
build make -j"$MAKEJOBS"
install make DESTDIR="$PKG" install
diff --git a/sys/elogind/files/dinit-elogind b/sys/elogind/files/dinit-elogind
new file mode 100644
index 0000000..c89977f
--- /dev/null
+++ b/sys/elogind/files/dinit-elogind
@@ -0,0 +1,5 @@
+type = process
+command = /usr/libexec/elogind
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/sys/elogind/files/elogind.service b/sys/elogind/files/elogind.service
new file mode 100644
index 0000000..b9403b4
--- /dev/null
+++ b/sys/elogind/files/elogind.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=elogind login manager
+After=dbus.service
+
+[Service]
+ExecStart=/usr/libexec/elogind
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys/elogind/files/openrc-elogind b/sys/elogind/files/openrc-elogind
new file mode 100755
index 0000000..aaa6572
--- /dev/null
+++ b/sys/elogind/files/openrc-elogind
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="elogind login manager"
+command="/usr/libexec/elogind"
+command_args=""
+command_background="yes"
+pidfile="/run/elogind.pid"
+
+depend() {
+ need dbus
+ after dbus
+}
diff --git a/sys/elogind/files/runit-elogind b/sys/elogind/files/runit-elogind
new file mode 100755
index 0000000..91dfb4a
--- /dev/null
+++ b/sys/elogind/files/runit-elogind
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/elogind
diff --git a/sys/elogind/files/s6-elogind b/sys/elogind/files/s6-elogind
new file mode 100755
index 0000000..91dfb4a
--- /dev/null
+++ b/sys/elogind/files/s6-elogind
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/elogind
diff --git a/sys/elogind/files/shepherd-elogind.scm b/sys/elogind/files/shepherd-elogind.scm
new file mode 100644
index 0000000..5605ae1
--- /dev/null
+++ b/sys/elogind/files/shepherd-elogind.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(elogind)
+ #:requirement '(dbus)
+ #:documentation "elogind login manager"
+ #:start (make-forkexec-constructor '("/usr/libexec/elogind"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/elogind/files/sysvinit-elogind b/sys/elogind/files/sysvinit-elogind
new file mode 100755
index 0000000..28c8cc7
--- /dev/null
+++ b/sys/elogind/files/sysvinit-elogind
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: elogind
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: S
+# Default-Stop:
+# Short-Description: elogind login manager
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=elogind
+DAEMON="/usr/libexec/elogind"
+DAEMON_ARGS=""
+PIDFILE="/run/elogind.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/elogind/recipe b/sys/elogind/recipe
index 6e318b3..84e125e 100644
--- a/sys/elogind/recipe
+++ b/sys/elogind/recipe
@@ -1,6 +1,6 @@
name elogind
version 255.17
-release 2
+release 3
description elogind: systemd-logind without systemd
source https://github.com/elogind/elogind/archive/refs/tags/v255.17.tar.gz
@@ -15,3 +15,11 @@ conflict systemd
configure meson setup build --prefix=/usr --buildtype=release -Dhalt-path=/usr/bin/halt -Dreboot-path=/usr/bin/reboot -Dcgroup-controller=elogind
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/elogind" "$PKG/etc/s6/sv/elogind" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/elogind.service" "$PKG/usr/lib/systemd/system/elogind.service"
+install install -m 0755 "$SRC/files/openrc-elogind" "$PKG/etc/init.d/elogind"
+install install -m 0755 "$SRC/files/runit-elogind" "$PKG/etc/sv/elogind/run"
+install install -m 0755 "$SRC/files/s6-elogind" "$PKG/etc/s6/sv/elogind/run"
+install install -m 0644 "$SRC/files/dinit-elogind" "$PKG/etc/dinit.d/elogind"
+install install -m 0644 "$SRC/files/shepherd-elogind.scm" "$PKG/etc/shepherd.d/elogind.scm"
+install install -m 0755 "$SRC/files/sysvinit-elogind" "$PKG/etc/rc.d/init.d/elogind"
diff --git a/sys/init-dinit/files/udev b/sys/init-dinit/files/udev
new file mode 100644
index 0000000..df837e9
--- /dev/null
+++ b/sys/init-dinit/files/udev
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/udevd
+restart = true
+smooth-recovery = true
diff --git a/sys/init-dinit/files/udev-trigger b/sys/init-dinit/files/udev-trigger
new file mode 100644
index 0000000..77b2498
--- /dev/null
+++ b/sys/init-dinit/files/udev-trigger
@@ -0,0 +1,4 @@
+type = script
+command = /bin/sh -c "udevadm trigger --action=add; udevadm settle --timeout=8"
+depends-on = udev
+restart = false
diff --git a/sys/init-dinit/recipe b/sys/init-dinit/recipe
index 05e421c..e87bafb 100644
--- a/sys/init-dinit/recipe
+++ b/sys/init-dinit/recipe
@@ -1,6 +1,6 @@
name init-dinit
version 1.0
-release 1
+release 2
arch any
description init-dinit: dinit as PID 1, with eudev and elogind
depend filesystem
@@ -12,6 +12,7 @@ conflict init-openrc
conflict init-s6
conflict init-runit
conflict init-shepherd
+conflict init-sysvinit
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/dinit.d/boot.d"
install printf '%s\n' "init-dinit" >"$PKG/usr/share/sps/sets/init-dinit"
install printf '%s\n' dinit >"$PKG/etc/sps/init"
@@ -19,7 +20,11 @@ install install -m 0644 "$SRC/files/boot" "$PKG/etc/dinit.d/boot"
install install -m 0644 "$SRC/files/agetty-tty1" "$PKG/etc/dinit.d/agetty-tty1"
install install -m 0644 "$SRC/files/agetty-tty2" "$PKG/etc/dinit.d/agetty-tty2"
install install -m 0644 "$SRC/files/agetty-ttyS0" "$PKG/etc/dinit.d/agetty-ttyS0"
+install install -m 0644 "$SRC/files/udev" "$PKG/etc/dinit.d/udev"
+install install -m 0644 "$SRC/files/udev-trigger" "$PKG/etc/dinit.d/udev-trigger"
install ln -sf ../agetty-tty1 "$PKG/etc/dinit.d/boot.d/agetty-tty1"
install ln -sf ../agetty-tty2 "$PKG/etc/dinit.d/boot.d/agetty-tty2"
install ln -sf ../agetty-ttyS0 "$PKG/etc/dinit.d/boot.d/agetty-ttyS0"
+install ln -sf ../udev "$PKG/etc/dinit.d/boot.d/udev"
+install ln -sf ../udev-trigger "$PKG/etc/dinit.d/boot.d/udev-trigger"
install ln -sf /usr/sbin/dinit "$PKG/sbin/init"
diff --git a/sys/init-openrc/recipe b/sys/init-openrc/recipe
index 75436b2..38e22ad 100644
--- a/sys/init-openrc/recipe
+++ b/sys/init-openrc/recipe
@@ -1,6 +1,6 @@
name init-openrc
version 1.0
-release 2
+release 3
arch any
description init-openrc: OpenRC plus eudev and elogind
depend filesystem
@@ -12,6 +12,7 @@ conflict init-s6
conflict init-runit
conflict init-dinit
conflict init-shepherd
+conflict init-sysvinit
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps"
install printf '%s\n' "init-openrc" >"$PKG/usr/share/sps/sets/init-openrc"
install printf '%s\n' openrc >"$PKG/etc/sps/init"
diff --git a/sys/init-runit/recipe b/sys/init-runit/recipe
index c5de062..a29d077 100644
--- a/sys/init-runit/recipe
+++ b/sys/init-runit/recipe
@@ -1,6 +1,6 @@
name init-runit
version 1.0
-release 1
+release 2
arch any
description init-runit: runit as PID 1, with eudev and elogind
depend filesystem
@@ -12,6 +12,7 @@ conflict init-openrc
conflict init-s6
conflict init-dinit
conflict init-shepherd
+conflict init-sysvinit
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/runit" "$PKG/etc/sv" "$PKG/etc/runit/runsvdir/default"
install printf '%s\n' "init-runit" >"$PKG/usr/share/sps/sets/init-runit"
install printf '%s\n' runit >"$PKG/etc/sps/init"
diff --git a/sys/init-s6/recipe b/sys/init-s6/recipe
index c3a21b3..4cdb8cd 100644
--- a/sys/init-s6/recipe
+++ b/sys/init-s6/recipe
@@ -1,6 +1,6 @@
name init-s6
version 1.0
-release 1
+release 2
arch any
description init-s6: s6 as PID 1, with eudev and elogind
depend filesystem
@@ -14,6 +14,7 @@ conflict init-openrc
conflict init-runit
conflict init-dinit
conflict init-shepherd
+conflict init-sysvinit
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/s6/sv" "$PKG/etc/s6/enabled"
install printf '%s\n' "init-s6" >"$PKG/usr/share/sps/sets/init-s6"
install printf '%s\n' s6 >"$PKG/etc/sps/init"
diff --git a/sys/init-shepherd/files/init.scm b/sys/init-shepherd/files/init.scm
index 3922883..01d819f 100644
--- a/sys/init-shepherd/files/init.scm
+++ b/sys/init-shepherd/files/init.scm
@@ -45,9 +45,16 @@
#:stop (make-kill-destructor)
#:respawn? #t))
-(register-services (list agetty-tty1 agetty-tty2 agetty-ttyS0))
+(define udevd
+ (service '(udevd)
+ #:documentation "eudev device manager"
+ #:start (make-forkexec-constructor '("/usr/sbin/udevd"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t))
+
+(register-services (list udevd agetty-tty1 agetty-tty2 agetty-ttyS0))
(load-service-dir "/etc/shepherd.d")
-(start-in-the-background '(agetty-tty1 agetty-tty2 agetty-ttyS0))
+(start-in-the-background '(udevd agetty-tty1 agetty-tty2 agetty-ttyS0))
(let ((dir "/etc/shepherd.d"))
(when (directory? dir)
diff --git a/sys/init-shepherd/recipe b/sys/init-shepherd/recipe
index 1495c47..870e308 100644
--- a/sys/init-shepherd/recipe
+++ b/sys/init-shepherd/recipe
@@ -1,6 +1,6 @@
name init-shepherd
version 1.0
-release 1
+release 2
arch any
description init-shepherd: GNU Shepherd as PID 1, with eudev and elogind
depend filesystem
@@ -12,6 +12,7 @@ conflict init-openrc
conflict init-s6
conflict init-runit
conflict init-dinit
+conflict init-sysvinit
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" "$PKG/sbin" "$PKG/etc/shepherd" "$PKG/etc/shepherd.d"
install printf '%s\n' "init-shepherd" >"$PKG/usr/share/sps/sets/init-shepherd"
install printf '%s\n' shepherd >"$PKG/etc/sps/init"
diff --git a/sys/init-systemd/recipe b/sys/init-systemd/recipe
index d27857e..9334daf 100644
--- a/sys/init-systemd/recipe
+++ b/sys/init-systemd/recipe
@@ -1,6 +1,6 @@
name init-systemd
version 1.0
-release 2
+release 3
arch any
description init-systemd: systemd as PID 1, with udev and logind
depend filesystem
@@ -10,6 +10,7 @@ conflict init-s6
conflict init-runit
conflict init-dinit
conflict init-shepherd
+conflict init-sysvinit
install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps"
install printf '%s\n' "init-systemd" >"$PKG/usr/share/sps/sets/init-systemd"
install printf '%s\n' systemd >"$PKG/etc/sps/init"
diff --git a/sys/init-sysvinit/files/functions b/sys/init-sysvinit/files/functions
new file mode 100755
index 0000000..07eacab
--- /dev/null
+++ b/sys/init-sysvinit/files/functions
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Portable start/stop helpers for Splux SysV scripts.
+# Prefer busybox start-stop-daemon when it exists.
+
+start_daemon()
+{
+ _pidfile=
+ _user=
+ while [ $# -gt 0 ]; do
+ case $1 in
+ -p) _pidfile=$2; shift 2 ;;
+ -c) _user=$2; shift 2 ;;
+ --) shift; break ;;
+ -*) shift ;;
+ *) break ;;
+ esac
+ done
+ _bin=$1
+ shift
+ if [ -n "$_pidfile" ] && [ -f "$_pidfile" ]; then
+ _pid=$(cat "$_pidfile" 2>/dev/null) || _pid=
+ if [ -n "$_pid" ] && kill -0 "$_pid" 2>/dev/null; then
+ return 0
+ fi
+ fi
+ if command -v start-stop-daemon >/dev/null 2>&1; then
+ if [ -n "$_pidfile" ]; then
+ start-stop-daemon -S -b -m -p "$_pidfile" \
+ ${_user:+-c "$_user"} -x "$_bin" -- "$@"
+ else
+ start-stop-daemon -S -b ${_user:+-c "$_user"} -x "$_bin" -- "$@"
+ fi
+ return $?
+ fi
+ if [ -n "$_user" ] && command -v su >/dev/null 2>&1; then
+ su -s /bin/sh "$_user" -c "exec \"$_bin\" $*" >/dev/null 2>&1 &
+ else
+ "$_bin" "$@" >/dev/null 2>&1 &
+ fi
+ _pid=$!
+ if [ -n "$_pidfile" ]; then
+ printf '%s\n' "$_pid" >"$_pidfile"
+ fi
+ return 0
+}
+
+killproc()
+{
+ _pidfile=
+ while [ $# -gt 0 ]; do
+ case $1 in
+ -p) _pidfile=$2; shift 2 ;;
+ -*) shift ;;
+ *) break ;;
+ esac
+ done
+ _bin=$1
+ if [ -n "$_pidfile" ] && [ -f "$_pidfile" ]; then
+ if command -v start-stop-daemon >/dev/null 2>&1; then
+ start-stop-daemon -K -p "$_pidfile" >/dev/null 2>&1 || :
+ else
+ _pid=$(cat "$_pidfile" 2>/dev/null) || _pid=
+ [ -n "$_pid" ] && kill "$_pid" 2>/dev/null || :
+ fi
+ rm -f "$_pidfile"
+ return 0
+ fi
+ if command -v killall >/dev/null 2>&1; then
+ killall "$_bin" >/dev/null 2>&1 || :
+ fi
+ return 0
+}
+
+pidofproc()
+{
+ _pidfile=
+ while [ $# -gt 0 ]; do
+ case $1 in
+ -p) _pidfile=$2; shift 2 ;;
+ -*) shift ;;
+ *) break ;;
+ esac
+ done
+ if [ -n "$_pidfile" ] && [ -f "$_pidfile" ]; then
+ _pid=$(cat "$_pidfile" 2>/dev/null) || _pid=
+ if [ -n "$_pid" ] && kill -0 "$_pid" 2>/dev/null; then
+ printf '%s\n' "$_pid"
+ return 0
+ fi
+ return 3
+ fi
+ command -v pidof >/dev/null 2>&1 || return 3
+ pidof "$1" >/dev/null 2>&1
+}
diff --git a/sys/init-sysvinit/files/halt b/sys/init-sysvinit/files/halt
new file mode 100755
index 0000000..267a108
--- /dev/null
+++ b/sys/init-sysvinit/files/halt
@@ -0,0 +1,18 @@
+#!/bin/sh
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+case $1 in
+ start|stop)
+ swapoff -a >/dev/null 2>&1 || :
+ umount -a -r >/dev/null 2>&1 || :
+ case $0 in
+ *rc6.d*) reboot -f ;;
+ *) halt -f ;;
+ esac
+ ;;
+ *)
+ printf '%s\n' "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/sys/init-sysvinit/files/hostname b/sys/init-sysvinit/files/hostname
new file mode 100755
index 0000000..6b91455
--- /dev/null
+++ b/sys/init-sysvinit/files/hostname
@@ -0,0 +1,17 @@
+#!/bin/sh
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+case $1 in
+ start)
+ if [ -r /etc/hostname ]; then
+ hostname "$(cat /etc/hostname)" 2>/dev/null || :
+ fi
+ ;;
+ stop)
+ ;;
+ *)
+ printf '%s\n' "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/sys/init-sysvinit/files/inittab b/sys/init-sysvinit/files/inittab
new file mode 100644
index 0000000..060ba37
--- /dev/null
+++ b/sys/init-sysvinit/files/inittab
@@ -0,0 +1,16 @@
+# Splux SysV inittab. Default runlevel 3 (multi-user with gettys).
+id:3:initdefault:
+si::sysinit:/etc/rc.d/init.d/rc S
+l0:0:wait:/etc/rc.d/init.d/rc 0
+l1:1:wait:/etc/rc.d/init.d/rc 1
+l2:2:wait:/etc/rc.d/init.d/rc 2
+l3:3:wait:/etc/rc.d/init.d/rc 3
+l4:4:wait:/etc/rc.d/init.d/rc 4
+l5:5:wait:/etc/rc.d/init.d/rc 5
+l6:6:wait:/etc/rc.d/init.d/rc 6
+ca::ctrlaltdel:/sbin/shutdown -t3 -r now
+su:S016:once:/sbin/sulogin
+1:2345:respawn:/sbin/agetty --noclear tty1 linux
+2:2345:respawn:/sbin/agetty tty2 linux
+3:2345:respawn:/sbin/agetty tty3 linux
+S0:2345:respawn:/sbin/agetty -L 115200 ttyS0 vt100
diff --git a/sys/init-sysvinit/files/mountfs b/sys/init-sysvinit/files/mountfs
new file mode 100755
index 0000000..986361f
--- /dev/null
+++ b/sys/init-sysvinit/files/mountfs
@@ -0,0 +1,18 @@
+#!/bin/sh
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+case $1 in
+ start)
+ mount -a -t nonfs,nonfs4,nosmbfs,nocifs 2>/dev/null || :
+ swapon -a 2>/dev/null || :
+ ;;
+ stop)
+ swapoff -a >/dev/null 2>&1 || :
+ umount -a -r -t nosysfs,noproc,nodevtmpfs >/dev/null 2>&1 || :
+ ;;
+ *)
+ printf '%s\n' "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/sys/init-sysvinit/files/mountvirtfs b/sys/init-sysvinit/files/mountvirtfs
new file mode 100755
index 0000000..71fb608
--- /dev/null
+++ b/sys/init-sysvinit/files/mountvirtfs
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Mount kernel filesystems needed before anything else.
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+case $1 in
+ start)
+ mount -t proc proc /proc 2>/dev/null || :
+ mount -t sysfs sysfs /sys 2>/dev/null || :
+ mount -t devtmpfs devtmpfs /dev 2>/dev/null || :
+ mkdir -p /dev/pts /dev/shm /run
+ mount -t devpts devpts /dev/pts 2>/dev/null || :
+ mount -t tmpfs shm /dev/shm 2>/dev/null || :
+ mount -t tmpfs tmpfs /run 2>/dev/null || :
+ mkdir -p /run/lock /run/user
+ ;;
+ stop)
+ ;;
+ *)
+ printf '%s\n' "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/sys/init-sysvinit/files/rc b/sys/init-sysvinit/files/rc
new file mode 100755
index 0000000..2e4a18d
--- /dev/null
+++ b/sys/init-sysvinit/files/rc
@@ -0,0 +1,27 @@
+#!/bin/sh
+# SysV runlevel dispatcher. Called from inittab as: rc S or rc N
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+runlevel=$1
+[ -n "$runlevel" ] || exit 1
+
+run_prefix()
+{
+ _dir=$1
+ _prefix=$2
+ _arg=$3
+ for _s in "$_dir"/"$_prefix"[0-9][0-9]*; do
+ [ -e "$_s" ] || continue
+ [ -x "$_s" ] || continue
+ "$_s" "$_arg" || :
+ done
+}
+
+if [ "$runlevel" = S ] || [ "$runlevel" = s ]; then
+ run_prefix /etc/rc.d/rcS.d S start
+ exit 0
+fi
+
+run_prefix /etc/rc.d/rc${runlevel}.d K stop
+run_prefix /etc/rc.d/rc${runlevel}.d S start
diff --git a/sys/init-sysvinit/files/udev b/sys/init-sysvinit/files/udev
new file mode 100755
index 0000000..5acd55f
--- /dev/null
+++ b/sys/init-sysvinit/files/udev
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Start eudev and settle the device tree.
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+udevd_bin=
+for _p in /usr/sbin/udevd /sbin/udevd; do
+ if [ -x "$_p" ]; then
+ udevd_bin=$_p
+ break
+ fi
+done
+
+case $1 in
+ start)
+ [ -n "$udevd_bin" ] || exit 0
+ if pidof udevd >/dev/null 2>&1; then
+ :
+ else
+ "$udevd_bin" --daemon 2>/dev/null || "$udevd_bin" &
+ fi
+ udevadm trigger --action=add 2>/dev/null || :
+ udevadm settle --timeout=8 2>/dev/null || :
+ ;;
+ stop)
+ udevadm control --exit >/dev/null 2>&1 || :
+ ;;
+ *)
+ printf '%s\n' "Usage: $0 {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/sys/init-sysvinit/recipe b/sys/init-sysvinit/recipe
new file mode 100644
index 0000000..ea2067d
--- /dev/null
+++ b/sys/init-sysvinit/recipe
@@ -0,0 +1,39 @@
+name init-sysvinit
+version 1.0
+release 1
+arch any
+description init-sysvinit: SysV init plus eudev and elogind
+depend filesystem
+depend sysvinit
+depend eudev
+depend elogind
+depend busybox
+depend util-linux
+conflict init-systemd
+conflict init-openrc
+conflict init-s6
+conflict init-runit
+conflict init-dinit
+conflict init-shepherd
+install mkdir -p "$PKG/usr/share/sps/sets" "$PKG/etc/sps" \
+ "$PKG/etc/rc.d/init.d" "$PKG/etc/rc.d/rcS.d" \
+ "$PKG/etc/rc.d/rc0.d" "$PKG/etc/rc.d/rc1.d" \
+ "$PKG/etc/rc.d/rc2.d" "$PKG/etc/rc.d/rc3.d" \
+ "$PKG/etc/rc.d/rc4.d" "$PKG/etc/rc.d/rc5.d" \
+ "$PKG/etc/rc.d/rc6.d"
+install printf '%s\n' "init-sysvinit" >"$PKG/usr/share/sps/sets/init-sysvinit"
+install printf '%s\n' sysvinit >"$PKG/etc/sps/init"
+install install -m 0644 "$SRC/files/inittab" "$PKG/etc/inittab"
+install install -m 0755 "$SRC/files/rc" "$PKG/etc/rc.d/init.d/rc"
+install install -m 0755 "$SRC/files/functions" "$PKG/etc/rc.d/init.d/functions"
+install install -m 0755 "$SRC/files/mountvirtfs" "$PKG/etc/rc.d/init.d/mountvirtfs"
+install install -m 0755 "$SRC/files/udev" "$PKG/etc/rc.d/init.d/udev"
+install install -m 0755 "$SRC/files/hostname" "$PKG/etc/rc.d/init.d/hostname"
+install install -m 0755 "$SRC/files/mountfs" "$PKG/etc/rc.d/init.d/mountfs"
+install install -m 0755 "$SRC/files/halt" "$PKG/etc/rc.d/init.d/halt"
+install ln -sf ../init.d/mountvirtfs "$PKG/etc/rc.d/rcS.d/S00mountvirtfs"
+install ln -sf ../init.d/udev "$PKG/etc/rc.d/rcS.d/S10udev"
+install ln -sf ../init.d/hostname "$PKG/etc/rc.d/rcS.d/S20hostname"
+install ln -sf ../init.d/mountfs "$PKG/etc/rc.d/rcS.d/S30mountfs"
+install ln -sf ../init.d/halt "$PKG/etc/rc.d/rc0.d/S99halt"
+install ln -sf ../init.d/halt "$PKG/etc/rc.d/rc6.d/S99halt"
diff --git a/sys/openrc/recipe b/sys/openrc/recipe
index 8485c44..67a48f8 100644
--- a/sys/openrc/recipe
+++ b/sys/openrc/recipe
@@ -1,6 +1,6 @@
name openrc
version 0.62.6
-release 2
+release 3
description openrc: dependency-based init scripts
source https://github.com/OpenRC/openrc/archive/refs/tags/0.62.6.tar.gz
@@ -13,6 +13,7 @@ conflict s6
conflict runit
conflict dinit
conflict shepherd
+conflict sysvinit
builddep meson
builddep ninja
builddep pkgconf
diff --git a/sys/polkit/files/dinit-polkitd b/sys/polkit/files/dinit-polkitd
new file mode 100644
index 0000000..1522fdc
--- /dev/null
+++ b/sys/polkit/files/dinit-polkitd
@@ -0,0 +1,5 @@
+type = process
+command = /usr/libexec/polkitd --no-debug
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/sys/polkit/files/openrc-polkitd b/sys/polkit/files/openrc-polkitd
new file mode 100755
index 0000000..88b0832
--- /dev/null
+++ b/sys/polkit/files/openrc-polkitd
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="polkit authorization manager"
+command="/usr/libexec/polkitd"
+command_args="--no-debug"
+command_background="yes"
+pidfile="/run/polkitd.pid"
+
+depend() {
+ need dbus
+ after dbus
+}
diff --git a/sys/polkit/files/polkit.service b/sys/polkit/files/polkit.service
new file mode 100644
index 0000000..cd4f236
--- /dev/null
+++ b/sys/polkit/files/polkit.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=polkit authorization manager
+After=dbus.service
+
+[Service]
+ExecStart=/usr/libexec/polkitd --no-debug
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys/polkit/files/runit-polkitd b/sys/polkit/files/runit-polkitd
new file mode 100755
index 0000000..24e555f
--- /dev/null
+++ b/sys/polkit/files/runit-polkitd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/polkitd --no-debug
diff --git a/sys/polkit/files/s6-polkitd b/sys/polkit/files/s6-polkitd
new file mode 100755
index 0000000..24e555f
--- /dev/null
+++ b/sys/polkit/files/s6-polkitd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/polkitd --no-debug
diff --git a/sys/polkit/files/shepherd-polkitd.scm b/sys/polkit/files/shepherd-polkitd.scm
new file mode 100644
index 0000000..fba2eeb
--- /dev/null
+++ b/sys/polkit/files/shepherd-polkitd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(polkitd)
+ #:requirement '(dbus)
+ #:documentation "polkit authorization manager"
+ #:start (make-forkexec-constructor '("/usr/libexec/polkitd" "--no-debug"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/polkit/files/sysvinit-polkitd b/sys/polkit/files/sysvinit-polkitd
new file mode 100755
index 0000000..1cb3b58
--- /dev/null
+++ b/sys/polkit/files/sysvinit-polkitd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: polkitd
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: S
+# Default-Stop:
+# Short-Description: polkit authorization manager
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=polkitd
+DAEMON="/usr/libexec/polkitd"
+DAEMON_ARGS="--no-debug"
+PIDFILE="/run/polkitd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/polkit/recipe b/sys/polkit/recipe
index ef2a809..ab616e0 100644
--- a/sys/polkit/recipe
+++ b/sys/polkit/recipe
@@ -1,6 +1,6 @@
name polkit
version 126
-release 2
+release 3
description polkit: authorization manager
source https://github.com/polkit-org/polkit/archive/refs/tags/126.tar.gz
@@ -15,3 +15,11 @@ optional elogind
configure meson setup build --prefix=/usr --buildtype=release -Dintrospection=false -Dexamples=false -Dman=false -Dtests=false -Dauthfw=shadow
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/polkitd" "$PKG/etc/s6/sv/polkitd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/polkit.service" "$PKG/usr/lib/systemd/system/polkit.service"
+install install -m 0755 "$SRC/files/openrc-polkitd" "$PKG/etc/init.d/polkitd"
+install install -m 0755 "$SRC/files/runit-polkitd" "$PKG/etc/sv/polkitd/run"
+install install -m 0755 "$SRC/files/s6-polkitd" "$PKG/etc/s6/sv/polkitd/run"
+install install -m 0644 "$SRC/files/dinit-polkitd" "$PKG/etc/dinit.d/polkitd"
+install install -m 0644 "$SRC/files/shepherd-polkitd.scm" "$PKG/etc/shepherd.d/polkitd.scm"
+install install -m 0755 "$SRC/files/sysvinit-polkitd" "$PKG/etc/rc.d/init.d/polkitd"
diff --git a/sys/power-profiles-daemon/files/dinit-power-profiles-daemon b/sys/power-profiles-daemon/files/dinit-power-profiles-daemon
new file mode 100644
index 0000000..7550b2f
--- /dev/null
+++ b/sys/power-profiles-daemon/files/dinit-power-profiles-daemon
@@ -0,0 +1,5 @@
+type = process
+command = /usr/libexec/power-profiles-daemon
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/sys/power-profiles-daemon/files/openrc-power-profiles-daemon b/sys/power-profiles-daemon/files/openrc-power-profiles-daemon
old mode 100644
new mode 100755
index e9f90a5..2e2016e
--- a/sys/power-profiles-daemon/files/openrc-power-profiles-daemon
+++ b/sys/power-profiles-daemon/files/openrc-power-profiles-daemon
@@ -1,13 +1,11 @@
#!/sbin/openrc-run
-# OpenRC unit for power-profiles-daemon. systemd installs the upstream
-# unit into /usr/lib/systemd/system from meson.
-
-description="Power Profiles daemon"
+description="Power profiles daemon"
command="/usr/libexec/power-profiles-daemon"
+command_args=""
command_background="yes"
pidfile="/run/power-profiles-daemon.pid"
depend() {
- need dbus
- after dbus
+ need dbus
+ after dbus
}
diff --git a/sys/power-profiles-daemon/files/power-profiles-daemon.service b/sys/power-profiles-daemon/files/power-profiles-daemon.service
new file mode 100644
index 0000000..7ac4baa
--- /dev/null
+++ b/sys/power-profiles-daemon/files/power-profiles-daemon.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Power profiles daemon
+After=network.target dbus.service
+
+[Service]
+ExecStart=/usr/libexec/power-profiles-daemon
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys/power-profiles-daemon/files/runit-power-profiles-daemon b/sys/power-profiles-daemon/files/runit-power-profiles-daemon
new file mode 100755
index 0000000..c5dc3f9
--- /dev/null
+++ b/sys/power-profiles-daemon/files/runit-power-profiles-daemon
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/power-profiles-daemon
diff --git a/sys/power-profiles-daemon/files/s6-power-profiles-daemon b/sys/power-profiles-daemon/files/s6-power-profiles-daemon
new file mode 100755
index 0000000..c5dc3f9
--- /dev/null
+++ b/sys/power-profiles-daemon/files/s6-power-profiles-daemon
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/power-profiles-daemon
diff --git a/sys/power-profiles-daemon/files/shepherd-power-profiles-daemon.scm b/sys/power-profiles-daemon/files/shepherd-power-profiles-daemon.scm
new file mode 100644
index 0000000..f311fbc
--- /dev/null
+++ b/sys/power-profiles-daemon/files/shepherd-power-profiles-daemon.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(power-profiles-daemon)
+ #:requirement '(dbus)
+ #:documentation "Power profiles daemon"
+ #:start (make-forkexec-constructor '("/usr/libexec/power-profiles-daemon"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/power-profiles-daemon/files/sysvinit-power-profiles-daemon b/sys/power-profiles-daemon/files/sysvinit-power-profiles-daemon
new file mode 100755
index 0000000..d74f2eb
--- /dev/null
+++ b/sys/power-profiles-daemon/files/sysvinit-power-profiles-daemon
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: power-profiles-daemon
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Power profiles daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=power-profiles-daemon
+DAEMON="/usr/libexec/power-profiles-daemon"
+DAEMON_ARGS=""
+PIDFILE="/run/power-profiles-daemon.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/power-profiles-daemon/recipe b/sys/power-profiles-daemon/recipe
index eee5e43..984a2f5 100644
--- a/sys/power-profiles-daemon/recipe
+++ b/sys/power-profiles-daemon/recipe
@@ -1,6 +1,6 @@
name power-profiles-daemon
version 0.23
-release 3
+release 4
description power-profiles-daemon: power profiles
source https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/archive/0.23/power-profiles-daemon-0.23.tar.gz
@@ -20,3 +20,11 @@ build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
install mkdir -p "$PKG/etc/init.d"
install install -m 0755 "$SRC/files/openrc-power-profiles-daemon" "$PKG/etc/init.d/power-profiles-daemon"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/power-profiles-daemon" "$PKG/etc/s6/sv/power-profiles-daemon" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/power-profiles-daemon.service" "$PKG/usr/lib/systemd/system/power-profiles-daemon.service"
+install install -m 0755 "$SRC/files/openrc-power-profiles-daemon" "$PKG/etc/init.d/power-profiles-daemon"
+install install -m 0755 "$SRC/files/runit-power-profiles-daemon" "$PKG/etc/sv/power-profiles-daemon/run"
+install install -m 0755 "$SRC/files/s6-power-profiles-daemon" "$PKG/etc/s6/sv/power-profiles-daemon/run"
+install install -m 0644 "$SRC/files/dinit-power-profiles-daemon" "$PKG/etc/dinit.d/power-profiles-daemon"
+install install -m 0644 "$SRC/files/shepherd-power-profiles-daemon.scm" "$PKG/etc/shepherd.d/power-profiles-daemon.scm"
+install install -m 0755 "$SRC/files/sysvinit-power-profiles-daemon" "$PKG/etc/rc.d/init.d/power-profiles-daemon"
diff --git a/sys/redis/files/dinit-redis b/sys/redis/files/dinit-redis
new file mode 100644
index 0000000..e25456e
--- /dev/null
+++ b/sys/redis/files/dinit-redis
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/redis-server --daemonize no
+restart = true
+smooth-recovery = true
diff --git a/sys/redis/files/openrc-redis b/sys/redis/files/openrc-redis
new file mode 100755
index 0000000..ac67a4c
--- /dev/null
+++ b/sys/redis/files/openrc-redis
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="Redis data store"
+command="/usr/bin/redis-server"
+command_args="--daemonize no"
+command_background="yes"
+pidfile="/run/redis.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/sys/redis/files/redis.service b/sys/redis/files/redis.service
new file mode 100644
index 0000000..6345920
--- /dev/null
+++ b/sys/redis/files/redis.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Redis data store
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/redis-server --daemonize no
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys/redis/files/runit-redis b/sys/redis/files/runit-redis
new file mode 100755
index 0000000..01c53be
--- /dev/null
+++ b/sys/redis/files/runit-redis
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/redis-server --daemonize no
diff --git a/sys/redis/files/s6-redis b/sys/redis/files/s6-redis
new file mode 100755
index 0000000..01c53be
--- /dev/null
+++ b/sys/redis/files/s6-redis
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/redis-server --daemonize no
diff --git a/sys/redis/files/shepherd-redis.scm b/sys/redis/files/shepherd-redis.scm
new file mode 100644
index 0000000..5e25b0b
--- /dev/null
+++ b/sys/redis/files/shepherd-redis.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(redis)
+ #:requirement '()
+ #:documentation "Redis data store"
+ #:start (make-forkexec-constructor '("/usr/bin/redis-server" "--daemonize" "no"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/redis/files/sysvinit-redis b/sys/redis/files/sysvinit-redis
new file mode 100755
index 0000000..8bb8b5a
--- /dev/null
+++ b/sys/redis/files/sysvinit-redis
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: redis
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Redis data store
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=redis
+DAEMON="/usr/bin/redis-server"
+DAEMON_ARGS="--daemonize no"
+PIDFILE="/run/redis.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/redis/recipe b/sys/redis/recipe
index 419da18..3377072 100644
--- a/sys/redis/recipe
+++ b/sys/redis/recipe
@@ -1,6 +1,6 @@
name redis
version 7.4.5
-release 1
+release 2
description redis: in-memory data store
source https://github.com/redis/redis/archive/7.4.5.tar.gz
@@ -11,3 +11,11 @@ depend openssl
build make -j"$MAKEJOBS" PREFIX=/usr BUILD_TLS=yes
install make PREFIX=/usr DESTDIR="$PKG" install
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/redis" "$PKG/etc/s6/sv/redis" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/redis.service" "$PKG/usr/lib/systemd/system/redis.service"
+install install -m 0755 "$SRC/files/openrc-redis" "$PKG/etc/init.d/redis"
+install install -m 0755 "$SRC/files/runit-redis" "$PKG/etc/sv/redis/run"
+install install -m 0755 "$SRC/files/s6-redis" "$PKG/etc/s6/sv/redis/run"
+install install -m 0644 "$SRC/files/dinit-redis" "$PKG/etc/dinit.d/redis"
+install install -m 0644 "$SRC/files/shepherd-redis.scm" "$PKG/etc/shepherd.d/redis.scm"
+install install -m 0755 "$SRC/files/sysvinit-redis" "$PKG/etc/rc.d/init.d/redis"
diff --git a/sys/runit/recipe b/sys/runit/recipe
index 95b6eee..e9eb90f 100644
--- a/sys/runit/recipe
+++ b/sys/runit/recipe
@@ -1,6 +1,6 @@
name runit
version 2.2.0
-release 1
+release 2
description runit: process supervision and init
source http://smarden.org/runit/runit-2.2.0.tar.gz
hash sha256:95ef4d2868b978c7179fe47901e5c578e11cf273d292bd6208bd3a7ccb029290
@@ -10,6 +10,7 @@ conflict openrc
conflict s6
conflict dinit
conflict shepherd
+conflict sysvinit
configure printf '%s\n' 'gcc -O2 -Wall' > runit-2.2.0/src/conf-cc
configure printf '%s\n' 'gcc -s' > runit-2.2.0/src/conf-ld
build cd runit-2.2.0 && package/compile
diff --git a/sys/s6-linux-init/recipe b/sys/s6-linux-init/recipe
index e014cbc..057b67b 100644
--- a/sys/s6-linux-init/recipe
+++ b/sys/s6-linux-init/recipe
@@ -1,6 +1,6 @@
name s6-linux-init
version 1.2.0.2
-release 1
+release 2
description s6-linux-init: tools to build an s6 PID 1
source https://skarnet.org/software/s6-linux-init/s6-linux-init-1.2.0.2.tar.gz
hash sha256:6fad014da162c0c81924197c57d16e1a75c133b34a20e423431a1b741e907b1d
@@ -13,6 +13,7 @@ conflict openrc
conflict runit
conflict dinit
conflict shepherd
+conflict sysvinit
configure ./configure --prefix=/usr --libdir=/usr/lib64 --dynlibdir=/usr/lib64 --bindir=/usr/bin --libexecdir=/usr/libexec --enable-shared --disable-allstatic --with-sysdeps="${SPS_ROOT:-}/usr/lib64/skalibs/sysdeps"
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
diff --git a/sys/s6/recipe b/sys/s6/recipe
index b007b01..e4b6be0 100644
--- a/sys/s6/recipe
+++ b/sys/s6/recipe
@@ -1,6 +1,6 @@
name s6
version 2.15.1.0
-release 1
+release 2
description s6: skarnet.org supervision suite
source https://skarnet.org/software/s6/s6-2.15.1.0.tar.gz
hash sha256:eab9c46e22b66b16135f9a05ec68a0ea287d9060b84d10defaaa2caad158ab52
@@ -12,6 +12,7 @@ conflict openrc
conflict runit
conflict dinit
conflict shepherd
+conflict sysvinit
configure ./configure --prefix=/usr --libdir=/usr/lib64 --dynlibdir=/usr/lib64 --bindir=/usr/bin --libexecdir=/usr/libexec --enable-shared --disable-allstatic --with-sysdeps="${SPS_ROOT:-}/usr/lib64/skalibs/sysdeps"
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
diff --git a/sys/seatd/files/dinit-seatd b/sys/seatd/files/dinit-seatd
new file mode 100644
index 0000000..9a8c8e9
--- /dev/null
+++ b/sys/seatd/files/dinit-seatd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/seatd -g video
+restart = true
+smooth-recovery = true
diff --git a/sys/seatd/files/openrc-seatd b/sys/seatd/files/openrc-seatd
old mode 100644
new mode 100755
index 84c45cc..a4e4d48
--- a/sys/seatd/files/openrc-seatd
+++ b/sys/seatd/files/openrc-seatd
@@ -6,5 +6,6 @@ command_background="yes"
pidfile="/run/seatd.pid"
depend() {
- need localmount
+ use net
+ after net
}
diff --git a/sys/seatd/files/runit-seatd b/sys/seatd/files/runit-seatd
new file mode 100755
index 0000000..24e9ba2
--- /dev/null
+++ b/sys/seatd/files/runit-seatd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/seatd -g video
diff --git a/sys/seatd/files/s6-seatd b/sys/seatd/files/s6-seatd
new file mode 100755
index 0000000..24e9ba2
--- /dev/null
+++ b/sys/seatd/files/s6-seatd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/seatd -g video
diff --git a/sys/seatd/files/seatd.service b/sys/seatd/files/seatd.service
index 19d87d5..037c874 100644
--- a/sys/seatd/files/seatd.service
+++ b/sys/seatd/files/seatd.service
@@ -1,6 +1,6 @@
[Unit]
-Description=Seat management daemon
-Before=graphical.target
+Description=seat management daemon
+After=network.target
[Service]
ExecStart=/usr/bin/seatd -g video
diff --git a/sys/seatd/files/shepherd-seatd.scm b/sys/seatd/files/shepherd-seatd.scm
new file mode 100644
index 0000000..ddd0162
--- /dev/null
+++ b/sys/seatd/files/shepherd-seatd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(seatd)
+ #:requirement '()
+ #:documentation "seat management daemon"
+ #:start (make-forkexec-constructor '("/usr/bin/seatd" "-g" "video"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/seatd/files/sysvinit-seatd b/sys/seatd/files/sysvinit-seatd
new file mode 100755
index 0000000..7b5235e
--- /dev/null
+++ b/sys/seatd/files/sysvinit-seatd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: seatd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: seat management daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=seatd
+DAEMON="/usr/bin/seatd"
+DAEMON_ARGS="-g video"
+PIDFILE="/run/seatd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/seatd/recipe b/sys/seatd/recipe
index 2772a1d..6bb9ba6 100644
--- a/sys/seatd/recipe
+++ b/sys/seatd/recipe
@@ -1,6 +1,6 @@
name seatd
version 0.9.1
-release 2
+release 3
description seatd: seat management daemon
source https://git.sr.ht/~kennylevinsen/seatd/archive/0.9.1.tar.gz
@@ -11,6 +11,11 @@ depend filesystem
configure meson setup build --prefix=/usr --buildtype=release
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/seatd" "$PKG/etc/s6/sv/seatd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/seatd.service" "$PKG/usr/lib/systemd/system/seatd.service"
install install -m 0755 "$SRC/files/openrc-seatd" "$PKG/etc/init.d/seatd"
+install install -m 0755 "$SRC/files/runit-seatd" "$PKG/etc/sv/seatd/run"
+install install -m 0755 "$SRC/files/s6-seatd" "$PKG/etc/s6/sv/seatd/run"
+install install -m 0644 "$SRC/files/dinit-seatd" "$PKG/etc/dinit.d/seatd"
+install install -m 0644 "$SRC/files/shepherd-seatd.scm" "$PKG/etc/shepherd.d/seatd.scm"
+install install -m 0755 "$SRC/files/sysvinit-seatd" "$PKG/etc/rc.d/init.d/seatd"
diff --git a/sys/shepherd/recipe b/sys/shepherd/recipe
index 6bef21f..ccab278 100644
--- a/sys/shepherd/recipe
+++ b/sys/shepherd/recipe
@@ -1,6 +1,6 @@
name shepherd
version 1.0.8
-release 1
+release 2
description shepherd: GNU service manager and PID 1
source https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.8.tar.gz
hash sha256:3beb005370bf0339c567d068a7ad9fb69f0e8850894db01c34635955f7717ff5
@@ -12,6 +12,7 @@ conflict openrc
conflict s6
conflict runit
conflict dinit
+conflict sysvinit
builddep guile
builddep guile-fibers
builddep pkgconf
diff --git a/sys/systemd/recipe b/sys/systemd/recipe
index 6bbe689..63d0dd0 100644
--- a/sys/systemd/recipe
+++ b/sys/systemd/recipe
@@ -1,6 +1,6 @@
name systemd
version 257.9
-release 2
+release 3
description systemd: init, udev, logind, and service manager
source https://github.com/systemd/systemd/archive/refs/tags/v257.9.tar.gz
@@ -20,6 +20,7 @@ conflict s6
conflict runit
conflict dinit
conflict shepherd
+conflict sysvinit
builddep meson
builddep ninja
builddep pkgconf
diff --git a/sys/sysvinit/recipe b/sys/sysvinit/recipe
new file mode 100644
index 0000000..31cf8dd
--- /dev/null
+++ b/sys/sysvinit/recipe
@@ -0,0 +1,17 @@
+name sysvinit
+version 3.14
+release 1
+description sysvinit: System V style init
+source https://github.com/slicer69/sysvinit/releases/download/3.14/sysvinit-3.14.tar.xz
+hash sha256:c90874b8c054a35991fb8c4d30c443ed1e9b1815ff6165c7b483f558be4e4b53
+depend filesystem
+conflict systemd
+conflict openrc
+conflict s6
+conflict runit
+conflict dinit
+conflict shepherd
+build make -C src -j"$MAKEJOBS"
+install make -C src ROOT="$PKG" install
+install mkdir -p "$PKG/etc/sps"
+install printf '%s\n' sysvinit >"$PKG/etc/sps/init"
diff --git a/sys/upower/files/dinit-upowerd b/sys/upower/files/dinit-upowerd
new file mode 100644
index 0000000..473d6e4
--- /dev/null
+++ b/sys/upower/files/dinit-upowerd
@@ -0,0 +1,5 @@
+type = process
+command = /usr/libexec/upowerd
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/sys/upower/files/openrc-upowerd b/sys/upower/files/openrc-upowerd
new file mode 100755
index 0000000..5464aa3
--- /dev/null
+++ b/sys/upower/files/openrc-upowerd
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="UPower power management"
+command="/usr/libexec/upowerd"
+command_args=""
+command_background="yes"
+pidfile="/run/upowerd.pid"
+
+depend() {
+ need dbus
+ after dbus
+}
diff --git a/sys/upower/files/runit-upowerd b/sys/upower/files/runit-upowerd
new file mode 100755
index 0000000..288e313
--- /dev/null
+++ b/sys/upower/files/runit-upowerd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/upowerd
diff --git a/sys/upower/files/s6-upowerd b/sys/upower/files/s6-upowerd
new file mode 100755
index 0000000..288e313
--- /dev/null
+++ b/sys/upower/files/s6-upowerd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/libexec/upowerd
diff --git a/sys/upower/files/shepherd-upowerd.scm b/sys/upower/files/shepherd-upowerd.scm
new file mode 100644
index 0000000..f372557
--- /dev/null
+++ b/sys/upower/files/shepherd-upowerd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(upowerd)
+ #:requirement '(dbus)
+ #:documentation "UPower power management"
+ #:start (make-forkexec-constructor '("/usr/libexec/upowerd"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/upower/files/sysvinit-upowerd b/sys/upower/files/sysvinit-upowerd
new file mode 100755
index 0000000..92c2cbf
--- /dev/null
+++ b/sys/upower/files/sysvinit-upowerd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: upowerd
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: UPower power management
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=upowerd
+DAEMON="/usr/libexec/upowerd"
+DAEMON_ARGS=""
+PIDFILE="/run/upowerd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/upower/files/upower.service b/sys/upower/files/upower.service
new file mode 100644
index 0000000..5f39f28
--- /dev/null
+++ b/sys/upower/files/upower.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=UPower power management
+After=network.target dbus.service
+
+[Service]
+ExecStart=/usr/libexec/upowerd
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys/upower/recipe b/sys/upower/recipe
index d31abb0..6378a85 100644
--- a/sys/upower/recipe
+++ b/sys/upower/recipe
@@ -1,6 +1,6 @@
name upower
version 1.90.9
-release 1
+release 2
description upower: power management
source https://gitlab.freedesktop.org/upower/upower/-/archive/v1.90.9/upower-v1.90.9.tar.gz
@@ -13,3 +13,11 @@ depend libgudev
configure meson setup build --prefix=/usr --buildtype=release -Dintrospection=disabled -Dman=false -Didevice=disabled
build meson compile -C build
install DESTDIR="$PKG" meson install -C build --no-rebuild
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/upowerd" "$PKG/etc/s6/sv/upowerd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/upower.service" "$PKG/usr/lib/systemd/system/upower.service"
+install install -m 0755 "$SRC/files/openrc-upowerd" "$PKG/etc/init.d/upowerd"
+install install -m 0755 "$SRC/files/runit-upowerd" "$PKG/etc/sv/upowerd/run"
+install install -m 0755 "$SRC/files/s6-upowerd" "$PKG/etc/s6/sv/upowerd/run"
+install install -m 0644 "$SRC/files/dinit-upowerd" "$PKG/etc/dinit.d/upowerd"
+install install -m 0644 "$SRC/files/shepherd-upowerd.scm" "$PKG/etc/shepherd.d/upowerd.scm"
+install install -m 0755 "$SRC/files/sysvinit-upowerd" "$PKG/etc/rc.d/init.d/upowerd"
diff --git a/sys/usbmuxd/files/dinit-usbmuxd b/sys/usbmuxd/files/dinit-usbmuxd
new file mode 100644
index 0000000..1d0fdd8
--- /dev/null
+++ b/sys/usbmuxd/files/dinit-usbmuxd
@@ -0,0 +1,4 @@
+type = process
+command = /usr/sbin/usbmuxd -f
+restart = true
+smooth-recovery = true
diff --git a/sys/usbmuxd/files/runit-usbmuxd b/sys/usbmuxd/files/runit-usbmuxd
new file mode 100755
index 0000000..568bc71
--- /dev/null
+++ b/sys/usbmuxd/files/runit-usbmuxd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/usbmuxd -f
diff --git a/sys/usbmuxd/files/s6-usbmuxd b/sys/usbmuxd/files/s6-usbmuxd
new file mode 100755
index 0000000..568bc71
--- /dev/null
+++ b/sys/usbmuxd/files/s6-usbmuxd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/usbmuxd -f
diff --git a/sys/usbmuxd/files/shepherd-usbmuxd.scm b/sys/usbmuxd/files/shepherd-usbmuxd.scm
new file mode 100644
index 0000000..1138cbb
--- /dev/null
+++ b/sys/usbmuxd/files/shepherd-usbmuxd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(usbmuxd)
+ #:requirement '()
+ #:documentation "iOS USB multiplexing daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/usbmuxd" "-f"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/sys/usbmuxd/files/sysvinit-usbmuxd b/sys/usbmuxd/files/sysvinit-usbmuxd
new file mode 100755
index 0000000..afc082d
--- /dev/null
+++ b/sys/usbmuxd/files/sysvinit-usbmuxd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: usbmuxd
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: iOS USB multiplexing daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=usbmuxd
+DAEMON="/usr/sbin/usbmuxd"
+DAEMON_ARGS="-f"
+PIDFILE="/run/usbmuxd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/sys/usbmuxd/recipe b/sys/usbmuxd/recipe
index ded16a5..101dcbd 100644
--- a/sys/usbmuxd/recipe
+++ b/sys/usbmuxd/recipe
@@ -1,6 +1,6 @@
name usbmuxd
version 1.1.1
-release 2
+release 3
description usbmuxd: iOS USB multiplexing daemon
source https://github.com/libimobiledevice/usbmuxd/releases/download/1.1.1/usbmuxd-1.1.1.tar.bz2
@@ -14,6 +14,11 @@ depend libplist
configure ./configure --prefix=/usr
build make -j"$MAKEJOBS"
install make install DESTDIR="$PKG"
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/usbmuxd" "$PKG/etc/s6/sv/usbmuxd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/usbmuxd.service" "$PKG/usr/lib/systemd/system/usbmuxd.service"
install install -m 0755 "$SRC/files/openrc-usbmuxd" "$PKG/etc/init.d/usbmuxd"
+install install -m 0755 "$SRC/files/runit-usbmuxd" "$PKG/etc/sv/usbmuxd/run"
+install install -m 0755 "$SRC/files/s6-usbmuxd" "$PKG/etc/s6/sv/usbmuxd/run"
+install install -m 0644 "$SRC/files/dinit-usbmuxd" "$PKG/etc/dinit.d/usbmuxd"
+install install -m 0644 "$SRC/files/shepherd-usbmuxd.scm" "$PKG/etc/shepherd.d/usbmuxd.scm"
+install install -m 0755 "$SRC/files/sysvinit-usbmuxd" "$PKG/etc/rc.d/init.d/usbmuxd"
diff --git a/virt/libvirt/files/dinit-libvirtd b/virt/libvirt/files/dinit-libvirtd
new file mode 100644
index 0000000..36a96af
--- /dev/null
+++ b/virt/libvirt/files/dinit-libvirtd
@@ -0,0 +1,5 @@
+type = process
+command = /usr/sbin/libvirtd
+restart = true
+smooth-recovery = true
+depends-on = dbus
diff --git a/virt/libvirt/files/runit-libvirtd b/virt/libvirt/files/runit-libvirtd
new file mode 100755
index 0000000..47c5776
--- /dev/null
+++ b/virt/libvirt/files/runit-libvirtd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/libvirtd
diff --git a/virt/libvirt/files/s6-libvirtd b/virt/libvirt/files/s6-libvirtd
new file mode 100755
index 0000000..47c5776
--- /dev/null
+++ b/virt/libvirt/files/s6-libvirtd
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/sbin/libvirtd
diff --git a/virt/libvirt/files/shepherd-libvirtd.scm b/virt/libvirt/files/shepherd-libvirtd.scm
new file mode 100644
index 0000000..0bd32ae
--- /dev/null
+++ b/virt/libvirt/files/shepherd-libvirtd.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(libvirtd)
+ #:requirement '(dbus)
+ #:documentation "libvirt virtualization daemon"
+ #:start (make-forkexec-constructor '("/usr/sbin/libvirtd"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/virt/libvirt/files/sysvinit-libvirtd b/virt/libvirt/files/sysvinit-libvirtd
new file mode 100755
index 0000000..bc8eae1
--- /dev/null
+++ b/virt/libvirt/files/sysvinit-libvirtd
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: libvirtd
+# Required-Start: $remote_fs dbus
+# Required-Stop: $remote_fs dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: libvirt virtualization daemon
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=libvirtd
+DAEMON="/usr/sbin/libvirtd"
+DAEMON_ARGS=""
+PIDFILE="/run/libvirtd.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/virt/libvirt/recipe b/virt/libvirt/recipe
index 053265d..bbc5773 100644
--- a/virt/libvirt/recipe
+++ b/virt/libvirt/recipe
@@ -1,6 +1,6 @@
name libvirt
version 11.6.0
-release 2
+release 3
description libvirt: virtualization API
source https://download.libvirt.org/libvirt-11.6.0.tar.xz
@@ -25,6 +25,11 @@ builddep ninja
configure meson setup build --prefix=/usr --libdir=lib64 --buildtype=release -Ddriver_qemu=enabled -Ddriver_libvirtd=enabled -Ddocs=disabled -Dtests=disabled -Dstorage_lvm=enabled -Dlibssh=disabled -Dopenwsman=disabled
build meson compile -C build -j "$MAKEJOBS"
install DESTDIR="$PKG" meson install -C build
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/libvirtd" "$PKG/etc/s6/sv/libvirtd" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/libvirtd.service" "$PKG/usr/lib/systemd/system/libvirtd.service"
install install -m 0755 "$SRC/files/openrc-libvirtd" "$PKG/etc/init.d/libvirtd"
+install install -m 0755 "$SRC/files/runit-libvirtd" "$PKG/etc/sv/libvirtd/run"
+install install -m 0755 "$SRC/files/s6-libvirtd" "$PKG/etc/s6/sv/libvirtd/run"
+install install -m 0644 "$SRC/files/dinit-libvirtd" "$PKG/etc/dinit.d/libvirtd"
+install install -m 0644 "$SRC/files/shepherd-libvirtd.scm" "$PKG/etc/shepherd.d/libvirtd.scm"
+install install -m 0755 "$SRC/files/sysvinit-libvirtd" "$PKG/etc/rc.d/init.d/libvirtd"
diff --git a/virt/lxc/files/dinit-lxc-net b/virt/lxc/files/dinit-lxc-net
new file mode 100644
index 0000000..0d49861
--- /dev/null
+++ b/virt/lxc/files/dinit-lxc-net
@@ -0,0 +1,3 @@
+type = script
+command = /usr/libexec/lxc/lxc-net start
+restart = false
diff --git a/virt/lxc/files/runit-lxc-net b/virt/lxc/files/runit-lxc-net
new file mode 100755
index 0000000..ec34b6c
--- /dev/null
+++ b/virt/lxc/files/runit-lxc-net
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+/usr/libexec/lxc/lxc-net start
+exec pause
diff --git a/virt/lxc/files/s6-lxc-net b/virt/lxc/files/s6-lxc-net
new file mode 100755
index 0000000..ec34b6c
--- /dev/null
+++ b/virt/lxc/files/s6-lxc-net
@@ -0,0 +1,4 @@
+#!/bin/sh
+exec 2>&1
+/usr/libexec/lxc/lxc-net start
+exec pause
diff --git a/virt/lxc/files/shepherd-lxc-net.scm b/virt/lxc/files/shepherd-lxc-net.scm
new file mode 100644
index 0000000..184f0ea
--- /dev/null
+++ b/virt/lxc/files/shepherd-lxc-net.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(lxc-net)
+ #:requirement '()
+ #:documentation "LXC bridge networking"
+ #:start (make-forkexec-constructor '("/usr/libexec/lxc/lxc-net" "start"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/virt/lxc/files/sysvinit-lxc-net b/virt/lxc/files/sysvinit-lxc-net
new file mode 100755
index 0000000..ae328c5
--- /dev/null
+++ b/virt/lxc/files/sysvinit-lxc-net
@@ -0,0 +1,42 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: lxc-net
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: LXC bridge networking
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=lxc-net
+DAEMON="/usr/libexec/lxc/lxc-net"
+DAEMON_ARGS="start"
+PIDFILE="/run/lxc-net.pid"
+USER=""
+
+start() {
+ eval "$DAEMON" $DAEMON_ARGS
+ return $?
+}
+
+stop() {
+ return 0
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/virt/lxc/recipe b/virt/lxc/recipe
index 20549ac..e011144 100644
--- a/virt/lxc/recipe
+++ b/virt/lxc/recipe
@@ -1,6 +1,6 @@
name lxc
version 6.0.4
-release 2
+release 3
description lxc: Linux containers
source https://linuxcontainers.org/downloads/lxc/lxc-6.0.4.tar.gz
@@ -16,6 +16,11 @@ builddep ninja
configure meson setup build --prefix=/usr --libdir=lib64 --buildtype=release -Dman=false -Dtests=false -Dapparmor=false -Dselinux=false
build meson compile -C build -j "$MAKEJOBS"
install DESTDIR="$PKG" meson install -C build
-install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/lxc-net" "$PKG/etc/s6/sv/lxc-net" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
install install -m 0644 "$SRC/files/lxc-net.service" "$PKG/usr/lib/systemd/system/lxc-net.service"
install install -m 0755 "$SRC/files/openrc-lxc-net" "$PKG/etc/init.d/lxc-net"
+install install -m 0755 "$SRC/files/runit-lxc-net" "$PKG/etc/sv/lxc-net/run"
+install install -m 0755 "$SRC/files/s6-lxc-net" "$PKG/etc/s6/sv/lxc-net/run"
+install install -m 0644 "$SRC/files/dinit-lxc-net" "$PKG/etc/dinit.d/lxc-net"
+install install -m 0644 "$SRC/files/shepherd-lxc-net.scm" "$PKG/etc/shepherd.d/lxc-net.scm"
+install install -m 0755 "$SRC/files/sysvinit-lxc-net" "$PKG/etc/rc.d/init.d/lxc-net"
diff --git a/www/caddy/files/caddy.service b/www/caddy/files/caddy.service
new file mode 100644
index 0000000..cb6451f
--- /dev/null
+++ b/www/caddy/files/caddy.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Caddy HTTP server
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/caddy run
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/www/caddy/files/dinit-caddy b/www/caddy/files/dinit-caddy
new file mode 100644
index 0000000..8a3477d
--- /dev/null
+++ b/www/caddy/files/dinit-caddy
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/caddy run
+restart = true
+smooth-recovery = true
diff --git a/www/caddy/files/openrc-caddy b/www/caddy/files/openrc-caddy
new file mode 100755
index 0000000..3950f0d
--- /dev/null
+++ b/www/caddy/files/openrc-caddy
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="Caddy HTTP server"
+command="/usr/bin/caddy"
+command_args="run"
+command_background="yes"
+pidfile="/run/caddy.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/www/caddy/files/runit-caddy b/www/caddy/files/runit-caddy
new file mode 100755
index 0000000..422adff
--- /dev/null
+++ b/www/caddy/files/runit-caddy
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/caddy run
diff --git a/www/caddy/files/s6-caddy b/www/caddy/files/s6-caddy
new file mode 100755
index 0000000..422adff
--- /dev/null
+++ b/www/caddy/files/s6-caddy
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/caddy run
diff --git a/www/caddy/files/shepherd-caddy.scm b/www/caddy/files/shepherd-caddy.scm
new file mode 100644
index 0000000..e2efb6a
--- /dev/null
+++ b/www/caddy/files/shepherd-caddy.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(caddy)
+ #:requirement '()
+ #:documentation "Caddy HTTP server"
+ #:start (make-forkexec-constructor '("/usr/bin/caddy" "run"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/www/caddy/files/sysvinit-caddy b/www/caddy/files/sysvinit-caddy
new file mode 100755
index 0000000..7eca278
--- /dev/null
+++ b/www/caddy/files/sysvinit-caddy
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: caddy
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Caddy HTTP server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=caddy
+DAEMON="/usr/bin/caddy"
+DAEMON_ARGS="run"
+PIDFILE="/run/caddy.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/www/caddy/recipe b/www/caddy/recipe
index aaa6ee5..93d226e 100644
--- a/www/caddy/recipe
+++ b/www/caddy/recipe
@@ -1,6 +1,6 @@
name caddy
version 2.10.0
-release 1
+release 2
description caddy: HTTP server
source https://github.com/caddyserver/caddy/releases/download/v2.10.0/caddy_2.10.0_linux_amd64.tar.gz
@@ -11,3 +11,11 @@ depend filesystem
install mkdir -p "$PKG/usr/bin"
install cp caddy "$PKG/usr/bin/caddy"
install chmod 755 "$PKG/usr/bin/caddy"
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/caddy" "$PKG/etc/s6/sv/caddy" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/caddy.service" "$PKG/usr/lib/systemd/system/caddy.service"
+install install -m 0755 "$SRC/files/openrc-caddy" "$PKG/etc/init.d/caddy"
+install install -m 0755 "$SRC/files/runit-caddy" "$PKG/etc/sv/caddy/run"
+install install -m 0755 "$SRC/files/s6-caddy" "$PKG/etc/s6/sv/caddy/run"
+install install -m 0644 "$SRC/files/dinit-caddy" "$PKG/etc/dinit.d/caddy"
+install install -m 0644 "$SRC/files/shepherd-caddy.scm" "$PKG/etc/shepherd.d/caddy.scm"
+install install -m 0755 "$SRC/files/sysvinit-caddy" "$PKG/etc/rc.d/init.d/caddy"
diff --git a/www/nginx/files/dinit-nginx b/www/nginx/files/dinit-nginx
new file mode 100644
index 0000000..df86469
--- /dev/null
+++ b/www/nginx/files/dinit-nginx
@@ -0,0 +1,4 @@
+type = process
+command = /usr/bin/nginx -g 'daemon off;'
+restart = true
+smooth-recovery = true
diff --git a/www/nginx/files/nginx.service b/www/nginx/files/nginx.service
new file mode 100644
index 0000000..651be05
--- /dev/null
+++ b/www/nginx/files/nginx.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=nginx HTTP server
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/nginx -g 'daemon off;'
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/www/nginx/files/openrc-nginx b/www/nginx/files/openrc-nginx
new file mode 100755
index 0000000..b590c18
--- /dev/null
+++ b/www/nginx/files/openrc-nginx
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+description="nginx HTTP server"
+command="/usr/bin/nginx"
+command_args="-g daemon off;"
+command_background="yes"
+pidfile="/run/nginx.pid"
+
+depend() {
+ use net
+ after net
+}
diff --git a/www/nginx/files/runit-nginx b/www/nginx/files/runit-nginx
new file mode 100755
index 0000000..97376c2
--- /dev/null
+++ b/www/nginx/files/runit-nginx
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/nginx -g 'daemon off;'
diff --git a/www/nginx/files/s6-nginx b/www/nginx/files/s6-nginx
new file mode 100755
index 0000000..97376c2
--- /dev/null
+++ b/www/nginx/files/s6-nginx
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec 2>&1
+exec /usr/bin/nginx -g 'daemon off;'
diff --git a/www/nginx/files/shepherd-nginx.scm b/www/nginx/files/shepherd-nginx.scm
new file mode 100644
index 0000000..64f7862
--- /dev/null
+++ b/www/nginx/files/shepherd-nginx.scm
@@ -0,0 +1,9 @@
+(use-modules (shepherd service))
+(register-services
+ (list (service
+ '(nginx)
+ #:requirement '()
+ #:documentation "nginx HTTP server"
+ #:start (make-forkexec-constructor '("/usr/bin/nginx" "-g" "daemon off;"))
+ #:stop (make-kill-destructor)
+ #:respawn? #t)))
diff --git a/www/nginx/files/sysvinit-nginx b/www/nginx/files/sysvinit-nginx
new file mode 100755
index 0000000..4929769
--- /dev/null
+++ b/www/nginx/files/sysvinit-nginx
@@ -0,0 +1,41 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: nginx
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: nginx HTTP server
+### END INIT INFO
+
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+elif [ -f /etc/init.d/functions ]; then
+ . /etc/init.d/functions
+fi
+
+NAME=nginx
+DAEMON="/usr/bin/nginx"
+DAEMON_ARGS="-g daemon off;"
+PIDFILE="/run/nginx.pid"
+USER=""
+
+start() {
+ start_daemon -p "$PIDFILE" ${USER:+-c "$USER"} "$DAEMON" $DAEMON_ARGS
+}
+
+stop() {
+ killproc -p "$PIDFILE" "$DAEMON"
+}
+
+status() {
+ pidofproc -p "$PIDFILE" "$DAEMON"
+}
+
+case $1 in
+ start) start ;;
+ stop) stop ;;
+ restart) stop; start ;;
+ status) status ;;
+ *) printf '%s\n' "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
+esac
diff --git a/www/nginx/recipe b/www/nginx/recipe
index 22e6d9a..649fa61 100644
--- a/www/nginx/recipe
+++ b/www/nginx/recipe
@@ -1,6 +1,6 @@
name nginx
version 1.28.0
-release 1
+release 2
description nginx: HTTP and reverse proxy server
source https://nginx.org/download/nginx-1.28.0.tar.gz
@@ -14,3 +14,11 @@ depend pcre2
configure ./configure --prefix=/usr --sbin-path=/usr/bin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-pcre --with-threads
build make -j"$MAKEJOBS"
install make DESTDIR="$PKG" install
+install mkdir -p "$PKG/usr/lib/systemd/system" "$PKG/etc/init.d" "$PKG/etc/sv/nginx" "$PKG/etc/s6/sv/nginx" "$PKG/etc/dinit.d" "$PKG/etc/shepherd.d" "$PKG/etc/rc.d/init.d"
+install install -m 0644 "$SRC/files/nginx.service" "$PKG/usr/lib/systemd/system/nginx.service"
+install install -m 0755 "$SRC/files/openrc-nginx" "$PKG/etc/init.d/nginx"
+install install -m 0755 "$SRC/files/runit-nginx" "$PKG/etc/sv/nginx/run"
+install install -m 0755 "$SRC/files/s6-nginx" "$PKG/etc/s6/sv/nginx/run"
+install install -m 0644 "$SRC/files/dinit-nginx" "$PKG/etc/dinit.d/nginx"
+install install -m 0644 "$SRC/files/shepherd-nginx.scm" "$PKG/etc/shepherd.d/nginx.scm"
+install install -m 0755 "$SRC/files/sysvinit-nginx" "$PKG/etc/rc.d/init.d/nginx"