nixos/dendrite: always substitute environment variables in config

Before this patch, services.dendrite.environmentFile is used for
secrets and environment variable substitution only happens when this
option is used.

systemd-247 provides a mechanism called LoadCredential for secrets and
it is better than environment file. See the section of Environment=
in the manual of systemd.exec for more information.

This patch always substitute environment variables, which enables the
usage of systemd LoadCredential.
This commit is contained in:
linj 2022-03-14 18:13:57 +08:00 committed by Cole Helbling
parent 31747079c1
commit 1e32d28824

View File

@ -248,14 +248,11 @@ in
RuntimeDirectory = "dendrite"; RuntimeDirectory = "dendrite";
RuntimeDirectoryMode = "0700"; RuntimeDirectoryMode = "0700";
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile; EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
ExecStartPre = ExecStartPre = ''
if (cfg.environmentFile != null) then '' ${pkgs.envsubst}/bin/envsubst \
${pkgs.envsubst}/bin/envsubst \ -i ${configurationYaml} \
-i ${configurationYaml} \ -o /run/dendrite/dendrite.yaml
-o /run/dendrite/dendrite.yaml '';
'' else ''
${pkgs.coreutils}/bin/cp ${configurationYaml} /run/dendrite/dendrite.yaml
'';
ExecStart = lib.strings.concatStringsSep " " ([ ExecStart = lib.strings.concatStringsSep " " ([
"${pkgs.dendrite}/bin/dendrite-monolith-server" "${pkgs.dendrite}/bin/dendrite-monolith-server"
"--config /run/dendrite/dendrite.yaml" "--config /run/dendrite/dendrite.yaml"