All supervision trees are configured in their respective configuration directory.
/etc/goetia/system,
which can be changed using the
--sysconfdir=....
${HOME}/.config/goetia/${USERTREE},
by default which can be changed using the
--usrconfdir=@userconfdir@.
@usrconfdir@ is prepended
with ${HOME} and gets appended
${USERTREE}, resulting in:
${HOME}/@userconfdir@/${USERTREE}.
Thus, the structure shown below lies at
/path/to/confdir=/etc/goety/system/
for system supervision trees.
Since there can be an arbitrary amount of user supervision trees (per user),
they are found at:
/path/to/confdir=${HOME}/.config/goetia/@USERTREE1@,
/path/to/confdir=${HOME}/.config/goetia/@USERTREE1@,
etc.
All configuration directories are structured as follows:
/path/to/confdir
├── 1745932803_db
├── compiled -> 1745932803_db
├── env
├── run-image
│ └── service
│ ├── goetia-shutdown
│ ├── .s6-svscan
│ ├── s6-svscan-log
│ └── @SERVICEDIR1A@
└── src
├── @CATEGORY1@
│ ├── @SOURCEDIR1A@
│ └── @SOURCEDIR1B@
├── @CATEGORY2@
└── @CATEGORY3@
These subdirectories have the following use:
compiled
compiled and 1745932803_db
are autogenerated and need not be changed by anyone.
env
run-image
run-image/service subdirectory,
which may contain
service directories.
Service directories are different from
source directories
in that they are not managed by
s6-rc.
Once copied to the runtime directory, are directly recognized by
s6-svscan,
which in turn spawns
s6-supervise.
s6-supervise then interprets and starts the services defined in those
service directories.
All of this happens even before
s6-rc-init
is invoked, thus service directories are suitable for services
that need to be available early and have no dependencies.
src
@SOURCEDIR1A@, @SOURCEDIR1B@, ... here.
These are categorized in directories
that can be named however desired and are dubbed
@CATEGORY1@, @CATEGORY2@, ... here.
The purpose of these directories is to nicely organize the source directories.