summary refs log tree commit diff
path: root/nixos/modules/services/networking/ejabberd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/networking/ejabberd.nix')
-rw-r--r--nixos/modules/services/networking/ejabberd.nix134
1 files changed, 63 insertions, 71 deletions
diff --git a/nixos/modules/services/networking/ejabberd.nix b/nixos/modules/services/networking/ejabberd.nix
index 28b8e234a5c..97360396c79 100644
--- a/nixos/modules/services/networking/ejabberd.nix
+++ b/nixos/modules/services/networking/ejabberd.nix
@@ -56,81 +56,73 @@ in
   config = mkIf cfg.enable {
     environment.systemPackages = [ pkgs.ejabberd ];
 
-    jobs.ejabberd =
-      { description = "EJabberd server";
-
-        startOn = "started network-interfaces";
-        stopOn = "stopping network-interfaces";
-
-        environment = {
-          PATH = "$PATH:${pkgs.ejabberd}/sbin:${pkgs.ejabberd}/bin:${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.gnused}/bin";
-        };
-
-        preStart =
+    systemd.services.ejabberd = {
+      description = "EJabberd server";
+      after = [ "network-interfaces.target" ];
+      wantedBy = [ "multi-user.target" ];
+      path = with pkgs; [ ejabberd coreutils bash gnused ];
+
+      preStart = ''
+        # Initialise state data
+        mkdir -p ${cfg.logsDir}
+
+        if ! test -d ${cfg.spoolDir}
+        then
+            initialize=1
+            cp -av ${pkgs.ejabberd}/var/lib/ejabberd /var/lib
+        fi
+
+        if ! test -d ${cfg.confDir}
+        then
+            mkdir -p ${cfg.confDir}
+            cp ${pkgs.ejabberd}/etc/ejabberd/* ${cfg.confDir}
+            sed -e 's|{hosts, \["localhost"\]}.|{hosts, \[${cfg.virtualHosts}\]}.|' ${pkgs.ejabberd}/etc/ejabberd/ejabberd.cfg > ${cfg.confDir}/ejabberd.cfg
+        fi
+
+        ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} start
+
+        ${if cfg.loadDumps == [] then "" else
           ''
-            PATH="$PATH:${pkgs.ejabberd}/sbin:${pkgs.ejabberd}/bin:${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.gnused}/bin";
-	    
-            # Initialise state data
-            mkdir -p ${cfg.logsDir}
-
-            if ! test -d ${cfg.spoolDir}
-            then
-                initialize=1
-                cp -av ${pkgs.ejabberd}/var/lib/ejabberd /var/lib
-            fi
-
-            if ! test -d ${cfg.confDir}
+            if [ "$initialize" = "1" ]
             then
-                mkdir -p ${cfg.confDir}
-                cp ${pkgs.ejabberd}/etc/ejabberd/* ${cfg.confDir}
-                sed -e 's|{hosts, \["localhost"\]}.|{hosts, \[${cfg.virtualHosts}\]}.|' ${pkgs.ejabberd}/etc/ejabberd/ejabberd.cfg > ${cfg.confDir}/ejabberd.cfg
+                # 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
+
+                ${concatMapStrings (dump:
+                  ''
+                    echo "Importing dump: ${dump}"
+
+                    if [ -f ${dump} ]
+                    then
+                        ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load ${dump}
+                    elif [ -d ${dump} ]
+                    then
+                        for i in ${dump}/ejabberd-dump/*
+                        do
+                            ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load $i
+                        done
+                    fi
+                  '') cfg.loadDumps}
             fi
+          ''}
+      '';
 
-            ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} start
-
-            ${if cfg.loadDumps == [] then "" else
-              ''
-                if [ "$initialize" = "1" ]
-                then
-                    # 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
-
-                    ${concatMapStrings (dump:
-                      ''
-                        echo "Importing dump: ${dump}"
-
-                        if [ -f ${dump} ]
-                        then
-                            ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load ${dump}
-                        elif [ -d ${dump} ]
-                        then
-                            for i in ${dump}/ejabberd-dump/*
-                            do
-                                ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} load $i
-                            done
-                        fi
-                      '') cfg.loadDumps}
-                fi
-              ''}
-          '';
-
-        postStop =
-          ''
-            ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} stop
-          '';
-      };
+      postStop = ''
+        ejabberdctl --config-dir ${cfg.confDir} --logs ${cfg.logsDir} --spool ${cfg.spoolDir} stop
+      '';
+    };
 
     security.pam.services.ejabberd = {};