I agree, the reason i put it there ist that /etc/s6-linux-init/skel/ exists (at least on Gentoo Linux), thus for consistency.A skeleton is not config data, and should thus be in /usr/ Possibly /usr/.../examples/...
- The package manager puts service source directories and an initial set of bundles for system services to /etc/s6-rc/system/src/{services,bundles}. - The package manager puts service source directories and an initial set of bundles for both user and system services to /usr/share/s6-rc/{user,system} as a reference of the defaults.If you put defaults in /usr, then prefer symlinking them into /etc, rather than creating a copy. That'll automatically handle changing defaults, and make it obvious what is locally customized.
I am not sure if I understand correctly, the files under /usr/share/s6-rc/{user,system}
are to be there only as a reference, not to be edited.Are you trying to say that the non-edited files should be symlinked rather than copied?
Void has a nice idiom in their run scripts: | #!/bin/sh | exec 2>&1 | [ -r conf ] && . ./conf | exec acpid -f ${OPTS:=-l} That achieves 3 things: 1) It works out of the box (without a conf file). 2) The user can create a conf file containing OPTS='-l -d -S' to customize the daemon options. 3) The user can create a conf file containing if [ $((`date +%s` % 100)) -eq 0 ] ; then poweroff ; fi exec /usr/local/bin/notreallyacpid --foo to completely¹ override the run file. Note how the KEY=value pair in 2) is actually shell, hopefully eliminating any worries about config file format. HTH, Jan ¹) The "exec 2>&1" is an artifact of how runit does logging, and should always be done. Hence it comes before the conf entry point. If there was a valid use for stderr, lines 2 and 3 could be switched, of course.
Glorious.Although it has to be done a bit differently when using execline (which I intend to use):
Take my current version of the seatd-srv: | #!/bin/execlineb -P | | fdmove -c 2 1 | | multisubstitute | { | define SRV seatd | importas -SD /etc/s6-rc S6CONFIGDIR | } | | envfile -I ${S6CONFIGDIR}/system/config/${SRV}.conf | | multisubstitute | { | importas -SD "root" SEATD_USER | importas -SD "seat" SEATD_GROUP | importas -SD "seatd" SRV_EXEC | importas -sSD "" SRV_OPTS | } | | | ${SRV_EXEC} -n3 | -u ${SEATD_USER} | -g ${SEATD_GROUP} | ${SRV_OPTS} Would turn into: | #!/bin/execlineb -P | | fdmove -c 2 1 | | importas -SD /etc/s6-rc S6CONFIGDIR | | tryexec ${S6CONFIGDIR}/system/config/seatd | | seatd -n3 -u root -g seatd Allowing the sysadmin to completely override the service.Unfortunately this also forces the sysadmin to override the service for every so little change,
so your
wont work anymore but I do not see how one could work around this in execline.2) The user can create a conf file containing OPTS='-l -d -S' to customize the daemon options.
What do you think? Regards, Paul
OpenPGP_0x71C7C85A2EA30F62.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature