From 9b000b3dcff1cf3636bc7a07cc1ad2055946986a Mon Sep 17 00:00:00 2001 From: Sander van der Burg <s.vanderburg@tudelft.nl> Date: Thu, 19 Nov 2009 15:12:05 +0000 Subject: [PATCH] Added loadDumps option, which makes it possible to load a specific ejabberd configuration on the first startup svn path=/nixos/branches/upstart-0.6/; revision=18461 --- modules/services/networking/ejabberd.nix | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/modules/services/networking/ejabberd.nix b/modules/services/networking/ejabberd.nix index 14476d3e3376..82a51267a808 100644 --- a/modules/services/networking/ejabberd.nix +++ b/modules/services/networking/ejabberd.nix @@ -41,6 +41,11 @@ in description = "Virtualhosts that ejabberd should host. Hostnames are surrounded with doublequotes and separated by commas"; }; + loadDumps = mkOption { + default = []; + description = "Configuration dump that should be loaded on the first startup"; + example = [ ./myejabberd.dump ]; + }; }; }; @@ -68,6 +73,7 @@ in if ! test -d ${cfg.spoolDir} then + initialize=1 cp -av ${pkgs.ejabberd}/var/lib/ejabberd /var/lib fi @@ -79,6 +85,33 @@ in fi ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} start + + ${if cfg.loadDumps == [] then "" else + '' + # Wait until the ejabberd server is available for use + count=0 + while ! ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} status + do + if [ $count -eq 30 ] + then + echo "Tried 30 times, giving up..." + exit 1 + fi + + echo "Ejabberd daemon not yet started. Waiting for 1 second..." + count=$((count++)) + sleep 1 + done + + if [ "$initialize" = "1" ] + then + ${concatMapStrings (dump: + '' + echo "Importing dump: ${dump}" + ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load ${dump} + '') cfg.loadDumps} + fi + ''} ''; postStop =