nixpkgs/pkgs/servers/server-scripts/generic/functions
Armijn Hemel 742c1ef85e add a bit more boiler plate code. Right now I just touch a file in $STATEDIR,
maybe this should include the path to the Nix store and a sanity check
should be added to make sure that if we check the file in $STATEDIR that
it is indeed from an instance of the service that we want to start. This
adds complexity, because how should we deal with the situation of they are
not equal.

TODO: add a "status" command, or a "version" command, which displays which
service is currently registered with the system as "running"

svn path=/nixpkgs/trunk/; revision=5015
2006-03-09 13:20:40 +00:00

56 lines
1,016 B
Bash

#! @bash@/bin/sh -e
## Generic service scripts for NixOS, which provide
## * functions to write state to files (/var/run/nix-services)
## * functions to read state from file (/var/run/nix-services)
## * sanity checking functions
STATEDIR=/var/run/nix-services
RCDIR=/etc/rc.d/
## resolve $deps to real start/stop scripts first
start_deps() {
for i in $deps
$i start
RETVAL=$?
if test $RETVAL != 0; then
exit $RETVAL
}
start_softdeps() {
for i in $softdeps
$i start
RETVAL=$?
if test $RETVAL != 0; then
continue
}
start() {
# are we already running?
# if so, exit with code 0
if test -a $STATDIR/$prog = 1; then
exit 0
# if not, continue
# launch all hard dependencies
start_deps
# launch all preferred dependencies
start_softdeps
# launch our own program
}
stop() {
# are we running? If so, then stop, otherwise, do nothing...
if test -a $STATDIR/$prog = 0; then
exit 0
# stop our own program
}
register() {
touch $STATEDIR/$prog
}
unregister() {
rm $STATEDIR/$prog
}