nixos/prosody: substitute environment variables to allow securely loading secrets

This commit is contained in:
Sandro Jäckel
2025-08-06 00:49:58 +02:00
parent 8d4fa332df
commit 68bcdbfc9e
+12 -2
View File
@@ -879,7 +879,11 @@ in
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Additional prosody configuration";
description = ''
Additional prosody configuration
The generated file is processed by `envsubst` to allow secrets to be passed securely via environment variables.
'';
};
log = mkOption {
@@ -973,13 +977,19 @@ in
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
restartTriggers = [ config.environment.etc."prosody/prosody.cfg.lua".source ];
preStart = ''
${pkgs.envsubst}/bin/envsubst -i ${
config.environment.etc."prosody/prosody.cfg.lua".source
} -o /run/prosody/prosody.cfg.lua
'';
serviceConfig = mkMerge [
{
User = cfg.user;
Group = cfg.group;
Type = "simple";
RuntimeDirectory = [ "prosody" ];
RuntimeDirectory = "prosody";
PIDFile = "/run/prosody/prosody.pid";
Environment = "PROSODY_CONFIG=/run/prosody/prosody.cfg.lua";
ExecStart = "${lib.getExe cfg.package} -F";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
Restart = "on-abnormal";