summary refs log tree commit diff
path: root/nixos/modules/services/networking/ejabberd.nix
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2016-08-12 04:31:02 +0300
committerNikolay Amiantov <ab@fmap.me>2016-08-14 22:37:06 +0300
commit0f59901b57eb2ac9e3bb43b252415657b9a98277 (patch)
tree63677bec93595b166a30831f181f8e7a18b65b4c /nixos/modules/services/networking/ejabberd.nix
parent5524d29f1b1a9a3e6462cb51588ceb245207e72d (diff)
downloadnixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.tar
nixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.tar.gz
nixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.tar.bz2
nixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.tar.lz
nixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.tar.xz
nixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.tar.zst
nixpkgs-0f59901b57eb2ac9e3bb43b252415657b9a98277.zip
ejabberd service: move service to foreground
Diffstat (limited to 'nixos/modules/services/networking/ejabberd.nix')
-rw-r--r--nixos/modules/services/networking/ejabberd.nix29
1 files changed, 12 insertions, 17 deletions
diff --git a/nixos/modules/services/networking/ejabberd.nix b/nixos/modules/services/networking/ejabberd.nix
index 8ecc16257db..82ed7fc4a83 100644
--- a/nixos/modules/services/networking/ejabberd.nix
+++ b/nixos/modules/services/networking/ejabberd.nix
@@ -111,10 +111,10 @@ in {
       description = "ejabberd server";
       wantedBy = [ "multi-user.target" ];
       after = [ "network.target" ];
-      path = [ pkgs.findutils pkgs.coreutils ] ++ lib.optional cfg.imagemagick pkgs.imagemagick;
+      path = [ pkgs.findutils pkgs.coreutils pkgs.runit ] ++ lib.optional cfg.imagemagick pkgs.imagemagick;
 
       serviceConfig = {
-        Type = "forking";
+        ExecStart = ''${ectl} foreground'';
         # FIXME: runit is used for `chpst` -- can we get rid of this?
         ExecStop = ''${pkgs.runit}/bin/chpst -u "${cfg.user}:${cfg.group}" ${ectl} stop'';
         ExecReload = ''${pkgs.runit}/bin/chpst -u "${cfg.user}:${cfg.group}" ${ectl} reload_config'';
@@ -132,29 +132,24 @@ in {
 
         mkdir -p -m750 "${cfg.spoolDir}"
         chown -R "${cfg.user}:${cfg.group}" "${cfg.spoolDir}"
-      '';
-
-      script = ''
-        [ -z "$(ls -A '${cfg.spoolDir}')" ] && firstRun=1
 
-        ${ectl} start
+        if [ -z "$(ls -A '${cfg.spoolDir}')" ]; then
+          touch "${cfg.spoolDir}/.firstRun"
+        fi
+      '';
 
-        count=0
+      postStart = ''
         while ! ${ectl} status >/dev/null 2>&1; do
-          if [ $count -eq 30 ]; then
-            echo "ejabberd server hasn't started in 30 seconds, giving up"
-            exit 1
-          fi
-
-          count=$((count++))
-          sleep 1
+          if ! kill -0 "$MAINPID"; then exit 1; fi
+          sleep 0.1
         done
 
-        if [ -n "$firstRun" ]; then
+        if [ -e "${cfg.spoolDir}/.firstRun" ]; then
+          rm "${cfg.spoolDir}/.firstRun"
           for src in ${dumps}; do
             find "$src" -type f | while read dump; do
               echo "Loading configuration dump at $dump"
-              ${ectl} load "$dump"
+              chpst -u "${cfg.user}:${cfg.group}" ${ectl} load "$dump"
             done
           done
         fi