From 0c7129316caaef39a42d98ab4f1808a7c8d1441e Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Fri, 6 Mar 2009 12:26:29 +0000 Subject: [PATCH] Convert "ejabbered" (untested) svn path=/nixos/branches/fix-style/; revision=14378 --- system/options.nix | 28 +---------- upstart-jobs/default.nix | 6 --- upstart-jobs/ejabberd.nix | 103 ++++++++++++++++++++++++++++---------- 3 files changed, 77 insertions(+), 60 deletions(-) diff --git a/system/options.nix b/system/options.nix index f33e7cdd805f..5358c206059a 100644 --- a/system/options.nix +++ b/system/options.nix @@ -480,33 +480,6 @@ in }; - ejabberd = { - enable = mkOption { - default = false; - description = "Whether to enable ejabberd server"; - }; - - spoolDir = mkOption { - default = "/var/lib/ejabberd"; - description = "Location of the spooldir of ejabberd"; - }; - - logsDir = mkOption { - default = "/var/log/ejabberd"; - description = "Location of the logfile directory of ejabberd"; - }; - - confDir = mkOption { - default = "/var/ejabberd"; - description = "Location of the config directory of ejabberd"; - }; - - virtualHosts = mkOption { - default = "\"localhost\""; - description = "Virtualhosts that ejabberd should host. Hostnames are surrounded with doublequotes and separated by commas"; - }; - }; - jboss = { enable = mkOption { default = false; @@ -1369,6 +1342,7 @@ in (import ../upstart-jobs/portmap.nix) (import ../upstart-jobs/bitlbee.nix) (import ../upstart-jobs/gnunet.nix) + (import ../upstart-jobs/ejabberd.nix) # untested, dosen't compile on x86_64-linux # nix (import ../upstart-jobs/nix.nix) # nix options and daemon diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 03c3fa32822f..4de7e099a4f1 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -168,12 +168,6 @@ let inherit config pkgs; }) - # EJabberd service - ++ optional config.services.ejabberd.enable - (import ../upstart-jobs/ejabberd.nix { - inherit config pkgs; - }) - # OpenFire XMPP server ++ optional config.services.openfire.enable (import ../upstart-jobs/openfire.nix { diff --git a/upstart-jobs/ejabberd.nix b/upstart-jobs/ejabberd.nix index d2a5084068f2..390feda0e096 100644 --- a/upstart-jobs/ejabberd.nix +++ b/upstart-jobs/ejabberd.nix @@ -1,36 +1,85 @@ -args: with args; +{pkgs, config, ...}: + +###### interface +let + inherit (pkgs.lib) mkOption mkIf; + + options = { + services = { + ejabberd = { + enable = mkOption { + default = false; + description = "Whether to enable ejabberd server"; + }; + + spoolDir = mkOption { + default = "/var/lib/ejabberd"; + description = "Location of the spooldir of ejabberd"; + }; + + logsDir = mkOption { + default = "/var/log/ejabberd"; + description = "Location of the logfile directory of ejabberd"; + }; + + confDir = mkOption { + default = "/var/ejabberd"; + description = "Location of the config directory of ejabberd"; + }; + + virtualHosts = mkOption { + default = "\"localhost\""; + description = "Virtualhosts that ejabberd should host. Hostnames are surrounded with doublequotes and separated by commas"; + }; + }; + }; + }; +in + +###### implementation let cfg = config.services.ejabberd; in -{ - name = "ejabberd"; - - job = '' - description "EJabberd server" - 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 - - mkdir -p ${cfg.confDir} - sed -e 's|{hosts, \["localhost"\]}.|{hosts, \[${cfg.virtualHosts}\]}.|' ${pkgs.ejabberd}/etc/ejabberd/ejabberd.cfg > ${cfg.confDir}/ejabberd.cfg - end script +mkIf config.services.ejabberd.enable { + + require = [ + options + ]; + + + services = { + extraJobs = [{ + name = "ejabberd"; + + job = '' + description "EJabberd server" + + start on network-interface/started + stop on network-interfaces/stop - respawn ${pkgs.bash}/bin/sh -c 'export PATH=$PATH:${pkgs.ejabberd}/sbin; cd ~; ejabberdctl --logs ${cfg.logsDir} --spool ${cfg.spoolDir} --config ${cfg.confDir}/ejabberd.cfg start; sleep 1d' - - stop script - ${pkgs.ejabberd}/sbin/ejabberdctl stop - end script - ''; + 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 + + mkdir -p ${cfg.confDir} + sed -e 's|{hosts, \["localhost"\]}.|{hosts, \[${cfg.virtualHosts}\]}.|' ${pkgs.ejabberd}/etc/ejabberd/ejabberd.cfg > ${cfg.confDir}/ejabberd.cfg + end script + + respawn ${pkgs.bash}/bin/sh -c 'export PATH=$PATH:${pkgs.ejabberd}/sbin; cd ~; ejabberdctl --logs ${cfg.logsDir} --spool ${cfg.spoolDir} --config ${cfg.confDir}/ejabberd.cfg start; sleep 1d' + + stop script + ${pkgs.ejabberd}/sbin/ejabberdctl stop + end script + ''; + }]; + }; }