Merge pull request #206746 from georgyo/mastodon-secretenv

Sandro 9cf61a28 791c80ae

Changed files
+18 -6
nixos
modules
services
web-apps
+18 -6
nixos/modules/services/web-apps/mastodon.nix
···
] else []
) env))));
-
mastodonTootctl = pkgs.writeShellScriptBin "mastodon-tootctl" ''
+
mastodonTootctl = let
+
sourceExtraEnv = lib.concatMapStrings (p: "source ${p}\n") cfg.extraEnvFiles;
+
in pkgs.writeShellScriptBin "mastodon-tootctl" ''
set -a
export RAILS_ROOT="${cfg.package}"
source "${envFile}"
source /var/lib/mastodon/.secrets_env
+
${sourceExtraEnv}
sudo=exec
if [[ "$USER" != ${cfg.user} ]]; then
···
'';
};
+
extraEnvFiles = lib.mkOption {
+
type = with lib.types; listOf path;
+
default = [];
+
description = lib.mdDoc ''
+
Extra environment files to pass to all mastodon services. Useful for passing down environemntal secrets.
+
'';
+
example = [ "/etc/mastodon/s3config.env" ];
+
};
+
automaticMigrations = lib.mkOption {
type = lib.types.bool;
default = true;
···
};
serviceConfig = {
Type = "oneshot";
-
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ];
+
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
WorkingDirectory = cfg.package;
# System Call Filtering
SystemCallFilter = [ ("~" + lib.concatStringsSep " " (systemCallsList ++ [ "@resources" ])) "@chown" "pipe" "pipe2" ];
···
ExecStart = "${cfg.package}/run-streaming.sh";
Restart = "always";
RestartSec = 20;
-
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ];
+
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
WorkingDirectory = cfg.package;
# Runtime directory and mode
RuntimeDirectory = "mastodon-streaming";
···
ExecStart = "${cfg.package}/bin/puma -C config/puma.rb";
Restart = "always";
RestartSec = 20;
-
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ];
+
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
WorkingDirectory = cfg.package;
# Runtime directory and mode
RuntimeDirectory = "mastodon-web";
···
ExecStart = "${cfg.package}/bin/sidekiq -c ${toString cfg.sidekiqThreads} -r ${cfg.package}";
Restart = "always";
RestartSec = 20;
-
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ];
+
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
WorkingDirectory = cfg.package;
# System Call Filtering
SystemCallFilter = [ ("~" + lib.concatStringsSep " " systemCallsList) "@chown" "pipe" "pipe2" ];
···
environment = env;
serviceConfig = {
Type = "oneshot";
-
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ];
+
EnvironmentFile = [ "/var/lib/mastodon/.secrets_env" ] ++ cfg.extraEnvFiles;
} // cfgService;
script = let
olderThanDays = toString cfg.mediaAutoRemove.olderThanDays;