summary refs log tree commit diff
path: root/nixos/modules/services/networking/ejabberd.nix
diff options
context:
space:
mode:
authorajs124 <git@ajs124.de>2019-04-17 23:50:29 +0200
committerajs124 <git@ajs124.de>2019-04-23 14:00:49 +0200
commit3e32e150cb327e791f2df1e7f0a1589ac885bbd7 (patch)
tree5693098bb734eba4996a30873905994908805f2b /nixos/modules/services/networking/ejabberd.nix
parent2b84c8d5604cbc283111995733c8895dd8c5a03d (diff)
downloadnixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.tar
nixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.tar.gz
nixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.tar.bz2
nixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.tar.lz
nixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.tar.xz
nixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.tar.zst
nixpkgs-3e32e150cb327e791f2df1e7f0a1589ac885bbd7.zip
nixos/ejabberd: migrate to tmpfiles, drop runit
Diffstat (limited to 'nixos/modules/services/networking/ejabberd.nix')
-rw-r--r--nixos/modules/services/networking/ejabberd.nix28
1 files changed, 11 insertions, 17 deletions
diff --git a/nixos/modules/services/networking/ejabberd.nix b/nixos/modules/services/networking/ejabberd.nix
index ef5e2cee6f2..6a38f85c48a 100644
--- a/nixos/modules/services/networking/ejabberd.nix
+++ b/nixos/modules/services/networking/ejabberd.nix
@@ -11,7 +11,7 @@ let
     ${cfg.ctlConfig}
   '';
 
-  ectl = ''${cfg.package}/bin/ejabberdctl ${if cfg.configFile == null then "" else "--config ${cfg.configFile}"} --ctl-config "${ctlcfg}" --spool "${cfg.spoolDir}" --logs "${cfg.logsDir}"'';
+  ectl = ''${cfg.package}/bin/ejabberdctl ${optionalString (cfg.configFile != null) "--config ${cfg.configFile}"} --ctl-config "${ctlcfg}" --spool "${cfg.spoolDir}" --logs "${cfg.logsDir}"'';
 
   dumps = lib.escapeShellArgs cfg.loadDumps;
 
@@ -111,28 +111,17 @@ in {
       description = "ejabberd server";
       wantedBy = [ "multi-user.target" ];
       after = [ "network.target" ];
-      path = [ pkgs.findutils pkgs.coreutils pkgs.runit ] ++ lib.optional cfg.imagemagick pkgs.imagemagick;
+      path = [ pkgs.findutils pkgs.coreutils ] ++ lib.optional cfg.imagemagick pkgs.imagemagick;
 
       serviceConfig = {
-        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'';
         User = cfg.user;
         Group = cfg.group;
-        PermissionsStartOnly = true;
+        ExecStart = "${ectl} foreground";
+        ExecStop = "${ectl} stop";
+        ExecReload = "${ectl} reload_config";
       };
 
       preStart = ''
-        mkdir -p -m750 "${cfg.logsDir}"
-        chown "${cfg.user}:${cfg.group}" "${cfg.logsDir}"
-
-        mkdir -p -m750 "/var/lock/ejabberdctl"
-        chown "${cfg.user}:${cfg.group}" "/var/lock/ejabberdctl"
-
-        mkdir -p -m750 "${cfg.spoolDir}"
-        chown -R "${cfg.user}:${cfg.group}" "${cfg.spoolDir}"
-
         if [ -z "$(ls -A '${cfg.spoolDir}')" ]; then
           touch "${cfg.spoolDir}/.firstRun"
         fi
@@ -149,13 +138,18 @@ in {
           for src in ${dumps}; do
             find "$src" -type f | while read dump; do
               echo "Loading configuration dump at $dump"
-              chpst -u "${cfg.user}:${cfg.group}" ${ectl} load "$dump"
+              ${ectl} load "$dump"
             done
           done
         fi
       '';
     };
 
+    systemd.tmpfiles.rules = [
+      "d '${cfg.logsDir}' 0750 ${cfg.user} ${cfg.group} -"
+      "d '${cfg.spoolDir}' 0700 ${cfg.user} ${cfg.group} -"
+    ];
+
     security.pam.services.ejabberd = {};
 
   };