From 7e5bfd450fc4acd456639965894b76f75dc95b35 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 3 Oct 2017 23:57:33 +0200
Subject: [PATCH] tv ejabberd: symlinkJoin ejabberd wrapper

---
 tv/3modules/ejabberd/default.nix | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/tv/3modules/ejabberd/default.nix b/tv/3modules/ejabberd/default.nix
index d7b8deb7e..36992883b 100644
--- a/tv/3modules/ejabberd/default.nix
+++ b/tv/3modules/ejabberd/default.nix
@@ -34,18 +34,24 @@ in {
     hosts = mkOption {
       type = with types; listOf str;
     };
-    pkgs.ejabberdctl = mkOption {
+    pkgs.ejabberd = mkOption {
       type = types.package;
-      default = pkgs.writeDashBin "ejabberdctl" ''
-        exec ${pkgs.ejabberd}/bin/ejabberdctl \
-            --config ${toFile "ejabberd.yaml" (import ./config.nix {
-              inherit pkgs;
-              config = cfg;
-            })} \
-            --logs ${shell.escape cfg.user.home} \
-            --spool ${shell.escape cfg.user.home} \
-            "$@"
-      '';
+      default = pkgs.symlinkJoin {
+        name = "ejabberd-wrapper";
+        paths = [
+          (pkgs.writeDashBin "ejabberdctl" ''
+            exec ${pkgs.ejabberd}/bin/ejabberdctl \
+                --config ${toFile "ejabberd.yaml" (import ./config.nix {
+                  inherit pkgs;
+                  config = cfg;
+                })} \
+                --logs ${shell.escape cfg.user.home} \
+                --spool ${shell.escape cfg.user.home} \
+                "$@"
+          '')
+          pkgs.ejabberd
+        ];
+      };
     };
     registration_watchers = mkOption {
       type = types.listOf types.str;
@@ -66,7 +72,7 @@ in {
     };
   };
   config = lib.mkIf cfg.enable {
-    environment.systemPackages = [ cfg.pkgs.ejabberdctl ];
+    environment.systemPackages = [ cfg.pkgs.ejabberd ];
 
     krebs.secret.files = {
       ejabberd-certfile = cfg.certfile;
@@ -79,7 +85,7 @@ in {
       after = [ "network.target" "secret.service" ];
       serviceConfig = {
         ExecStartPre = "${gen-dhparam} ${cfg.dhfile.path}";
-        ExecStart = "${cfg.pkgs.ejabberdctl}/bin/ejabberdctl foreground";
+        ExecStart = "${cfg.pkgs.ejabberd}/bin/ejabberdctl foreground";
         PermissionsStartOnly = true;
         SyslogIdentifier = "ejabberd";
         User = cfg.user.name;