From 045ae06092cbdb9c31ed471a3a0430415a0cc622 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Sun, 6 Jul 2008 10:30:53 +0000 Subject: [PATCH] Updated ejabberd service to make it work svn path=/nixos/trunk/; revision=12270 --- system/options.nix | 11 ++++++++--- upstart-jobs/ejabberd.nix | 35 +++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/system/options.nix b/system/options.nix index 378c42792898..7c8db46d5e4a 100644 --- a/system/options.nix +++ b/system/options.nix @@ -1385,10 +1385,15 @@ default = false; description = "Whether to enable ejabberd server"; }; + + spoolDir = mkOption { + default = "/var/lib/ejabberd"; + description = "Location of the spooldir of ejabberd"; + }; - user = mkOption { - default = "nobody"; - description = "User account under which ejabberd runs."; + logsDir = mkOption { + default = "/var/log/ejabberd"; + description = "Location of the logfile directory of ejabberd"; }; }; diff --git a/upstart-jobs/ejabberd.nix b/upstart-jobs/ejabberd.nix index 1bc607e3632c..58fc3c8d8492 100644 --- a/upstart-jobs/ejabberd.nix +++ b/upstart-jobs/ejabberd.nix @@ -4,19 +4,30 @@ let cfg = config.services.ejabberd; -ejabberdService = import ../services/ejabberd { - inherit (cfg) user; - inherit (pkgs) stdenv erlang ejabberd su; -}; - in { - name = "ejabberd"; - job = " -description \"EJabberd server\" + name = "ejabberd"; + + job = '' + description "EJabberd server" -stop on shutdown - -respawn ${ejabberdService}/bin/control start - "; + start on network-interface/started + stop on network-interfaces/stop + + start script + # Initialise state data + mkdir -p ${cfg.logsDir} + + if ! test -d ${cfg.spoolDir} + then + cp -av ${pkgs.ejabberd}/var/lib/ejabberd /var/lib + fi + end script + + respawn ${pkgs.bash}/bin/sh -c 'export PATH=$PATH:${pkgs.ejabberd}/sbin; cd ~; ejabberdctl --logs ${cfg.logsDir} --spool ${cfg.spoolDir} start; sleep 1d' + + stop script + ${pkgs.ejabberd}/sbin/ejabberdctl stop + end script + ''; }