742c1ef85e
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
56 lines
1,016 B
Bash
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
|
|
}
|