--- /dev/null
+#!/usr/bin/execlineb -P
+
+# TODO:
+# a sane example of handling the arguments would be nice
+
+# populate some variables
+define RUN_USER jdoe
+define INSTANCE_NAME jane
+define MAIL_RCPT john
+backtick HOME { homeof ${RUN_USER} }
+importas -n -u HOME HOME
+
+define LOGDIR ${HOME}/var/log/s6/imaginary_service-${INSTANCE_NAME}
+define MAIL_FIFO ${LOGDIR}/mail_fifo
+
+# redirect STDERR to STDIN so it can be caught by a logging service
+fdmove -c 2 1
+
+# switch to a different user for running this
+s6-setuidgid ${RUN_USER}
+
+# the command to start and supervise
+s6-log
+ # prepend TAI64N timestamp
+ t
+ # prepent ISO 8601 timestamp
+ T
+ # rotate after 1MiB written
+ s1048576
+ # total size of logdir may be 2GiB
+ S2147483648
+ # filter lines with only spaces
+ -"^[[:space:]]+$"
+ # upon rotation, send log to MAIL_RCPT
+ !"background { redirfd -r 0 ${MAIL_FIFO} mail -s \"instance log: ${INSTANCE_NAME}\" -- ${MAIL_RCPT} } tee ${MAIL_FIFO}"
+ # directory to write logfiles to
+ "${LOGDIR}/logs"
--- /dev/null
+#!/usr/bin/execlineb -P
+
+# TODO:
+# a sane example of handling the arguments would be nice
+
+# populate some variables
+define RUN_USER jdoe
+define INSTANCE_NAME jane
+backtick HOME { homeof ${RUN_USER} }
+importas -n -u HOME HOME
+
+# redirect STDERR to STDIN so it can be caught by a logging service
+fdmove -c 2 1
+
+# switch to a different user for running this
+s6-setuidgid ${RUN_USER}
+
+# handle SIGTERM
+trap -x {
+ SIGTERM {
+ pipeline { echo "system_powerdown\n" }
+ s6-ipcclient ${HOME}/${INSTANCE_NAME}-monitor.socket
+ s6-ioconnect -67
+ }
+}
+
+# the command to start and supervise
+imaginary_service -l 127.0.0.1 -p 31337 ${HOME}/run/listener_${INSTANCE_NAME}/${INSTANCE_NAME}.conf