--- /dev/null
+#!/usr/bin/env /lib/init/init-d-script
+
+### BEGIN INIT INFO
+# Provides: s6
+# Required-Start: $remote_fs $syslog nftables
+# Required-Stop: $remote_fs $syslog nftables
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start s6 service supervision suite
+# Description: Start s6 service supervision suite
+### END INIT INFO
+
+DAEMON="/usr/local/bin/s6-svscanboot"
+DAEMON_ARGS="/etc/s6-services"
+
+do_stop_cmd_override() {
+ /usr/bin/s6-svscanctl -t /etc/s6-services/
+}
--- /dev/null
+#!/bin/execlineb -S1
+
+foreground { redirfd -w 2 /dev/null mkdir -p /run/uncaught-logs }
+if { chown s6-logs:s6-logs /run/uncaught-logs }
+if { chmod 2700 /run/uncaught-logs }
+foreground { redirfd -w 2 /dev/null mkdir -p ${1}/.s6-svscan ${1}/s6-svscan-log }
+foreground { redirfd -w 2 /dev/null ln -sf /bin/false ${1}/.s6-svscan/crash }
+if
+{
+ redirfd -w 1 ${1}/.s6-svscan/finish
+ heredoc 0 "#!/bin/execlineb -P\ns6-svc -x -- \"${1}/s6-svscan-log\"\n"
+ cat
+}
+if { chmod 0755 ${1}/.s6-svscan/finish }
+foreground { redirfd -w 2 /dev/null mkfifo -m 0600 ${1}/s6-svscan-log/fifo }
+if
+{
+ redirfd -w 1 ${1}/s6-svscan-log/run
+ heredoc 0 "#!/bin/execlineb -P
+redirfd -w 2 /dev/console
+redirfd -rnb 0 fifo
+s6-setuidgid s6-logs
+exec -c
+s6-log t /run/uncaught-logs\n"
+ cat
+}
+if { chmod 0755 ${1}/s6-svscan-log/run }
+
+redirfd -r 0 /dev/null
+redirfd -wnb 1 ${1}/s6-svscan-log/fifo
+fdmove -c 2 1
+s6-svscan -- ${1}
+
--- /dev/null
+class s6 {
+ require 'execline'
+
+ class {
+ "${name}::install":
+ notify => Class["${name}::service"],
+ ;
+ "${name}::service": ;
+ }
+}
--- /dev/null
+class s6::install {
+ package {
+ 's6':
+ ensure => installed,
+ ;
+ }
+ file {
+ '/usr/local/bin/s6-svscanboot':
+ ensure => present,
+ source => 'puppet:///modules/s6/usr/local/bin/s6-svscanboot',
+ mode => '0755',
+ require => Package['s6'],
+ ;
+ '/etc/init.d/s6':
+ ensure => present,
+ source => 'puppet:///modules/s6/etc/init.d/s6',
+ mode => '0755',
+ require => Package['s6'],
+ ;
+ '/etc/s6-services/':
+ ensure => directory,
+ ;
+ }
+ user {
+ 's6-logs':
+ ensure => present,
+ home => '/nonexistant',
+ shell => '/usr/sbin/nologin',
+ system => true,
+ ;
+ }
+}
--- /dev/null
+class s6::service {
+ service {
+ 's6':
+ ensure => running,
+ enable => true,
+ ;
+ }
+}