diff options
Diffstat (limited to 'modules/ejabberd/default.nix')
-rw-r--r-- | modules/ejabberd/default.nix | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/modules/ejabberd/default.nix b/modules/ejabberd/default.nix index 02c060d..9607741 100644 --- a/modules/ejabberd/default.nix +++ b/modules/ejabberd/default.nix @@ -131,6 +131,9 @@ in { systemd.services.ejabberd = { wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; + environment = { + HOME = cfg.stateDir; + }; reloadTriggers = [ config.environment.etc."ejabberd/ejabberd.yaml".source config.environment.etc."ejabberd/ejabberdctl.cfg".source @@ -139,6 +142,17 @@ in { ExecStartPre = [ "${pkgs.coreutils}/bin/ln -s \${CREDENTIALS_DIRECTORY} /tmp/credentials" "${gen-dhparam} ${cfg.stateDir}/dhfile" + (pkgs.writeDash "ejabberd-ensure-PREVIOUS.LOG" '' + set -efu + cd ${cfg.stateDir} + if ! test -e PREVIOUS.LOG; then + if test -f LATEST.LOG; then + ${pkgs.coreutils}/bin/ln LATEST.LOG PREVIOUS.LOG + else + ${pkgs.coreutils}/bin/touch PREVIOUS.LOG + fi + fi + '') ]; ExecStart = "${cfg.pkgs.ejabberd}/bin/ejabberdctl foreground"; ExecStop = [ @@ -155,7 +169,7 @@ in { PrivateDevices = true; PrivateTmp = true; SyslogIdentifier = "ejabberd"; - StateDirectory = "ejabberd"; + StateDirectory = lib.removePrefix "/var/lib/" cfg.stateDir; User = "ejabberd"; DynamicUser = true; TimeoutSec = 60; |