0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-14 06:00:33 +03:00

nixos/traefik: add environmentFiles option

This commit is contained in:
Sophie Tauchert 2023-03-05 00:12:06 +01:00
parent 67faa3e9b3
commit d568766fc7
No known key found for this signature in database
GPG key ID: 52701DE5F5F51125
2 changed files with 27 additions and 3 deletions

View file

@ -48,6 +48,11 @@ let
''
else
cfg.staticConfigFile;
finalStaticConfigFile =
if cfg.environmentFiles == []
then staticConfigFile
else "/run/traefik/config.toml";
in {
options.services.traefik = {
enable = mkEnableOption (lib.mdDoc "Traefik web server");
@ -127,6 +132,16 @@ in {
type = types.package;
description = lib.mdDoc "Traefik package to use.";
};
environmentFiles = mkOption {
default = [];
type = types.listOf types.path;
example = [ "/run/secrets/traefik.env" ];
description = lib.mdDoc ''
Files to load as environment file. Environment variables from this file
will be substituted into the static configuration file using envsubst.
'';
};
};
config = mkIf cfg.enable {
@ -139,8 +154,13 @@ in {
startLimitIntervalSec = 86400;
startLimitBurst = 5;
serviceConfig = {
ExecStart =
"${cfg.package}/bin/traefik --configfile=${staticConfigFile}";
EnvironmentFile = cfg.environmentFiles;
ExecStartPre = lib.optional (cfg.environmentFiles != [])
(pkgs.writeShellScript "pre-start" ''
umask 077
${pkgs.envsubst}/bin/envsubst -i "${staticConfigFile}" > "${finalStaticConfigFile}"
'');
ExecStart = "${cfg.package}/bin/traefik --configfile=${finalStaticConfigFile}";
Type = "simple";
User = "traefik";
Group = cfg.group;
@ -155,6 +175,7 @@ in {
ProtectHome = true;
ProtectSystem = "full";
ReadWriteDirectories = cfg.dataDir;
RuntimeDirectory = "traefik";
};
};