nixos/grafana: option to configure smtp
This commit is contained in:
parent
7eb9c348fb
commit
9046673696
@ -4,6 +4,7 @@ with lib;
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.grafana;
|
cfg = config.services.grafana;
|
||||||
|
opt = options.services.grafana;
|
||||||
|
|
||||||
envOptions = {
|
envOptions = {
|
||||||
PATHS_DATA = cfg.dataDir;
|
PATHS_DATA = cfg.dataDir;
|
||||||
@ -41,6 +42,12 @@ let
|
|||||||
AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role;
|
AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role;
|
||||||
|
|
||||||
ANALYTICS_REPORTING_ENABLED = boolToString cfg.analytics.reporting.enable;
|
ANALYTICS_REPORTING_ENABLED = boolToString cfg.analytics.reporting.enable;
|
||||||
|
|
||||||
|
SMTP_ENABLE = boolToString cfg.smtp.enable;
|
||||||
|
SMTP_HOST = cfg.smtp.host;
|
||||||
|
SMTP_USER = cfg.smtp.user;
|
||||||
|
SMTP_PASSWORD = cfg.smtp.password;
|
||||||
|
SMTP_FROM_ADDRESS = cfg.smtp.fromAddress;
|
||||||
} // cfg.extraOptions;
|
} // cfg.extraOptions;
|
||||||
|
|
||||||
in {
|
in {
|
||||||
@ -205,6 +212,41 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
enable = mkEnableOption "smtp";
|
||||||
|
host = mkOption {
|
||||||
|
description = "Host to connect to";
|
||||||
|
default = "localhost:25";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
user = mkOption {
|
||||||
|
description = "User used for authentication";
|
||||||
|
default = "";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
password = mkOption {
|
||||||
|
description = ''
|
||||||
|
Password used for authentication.
|
||||||
|
This option is mutual exclusive with the passwordFile option.
|
||||||
|
'';
|
||||||
|
default = "";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
passwordFile = mkOption {
|
||||||
|
description = ''
|
||||||
|
Password used for authentication.
|
||||||
|
This option is mutual exclusive with the password option.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
};
|
||||||
|
fromAddress = mkOption {
|
||||||
|
description = "Email address used for sending";
|
||||||
|
default = "admin@grafana.localhost";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
allowSignUp = mkOption {
|
allowSignUp = mkOption {
|
||||||
description = "Disable user signup / registration";
|
description = "Disable user signup / registration";
|
||||||
@ -271,8 +313,8 @@ in {
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
warnings = optional (
|
warnings = optional (
|
||||||
cfg.database.password != options.services.grafana.database.password.default ||
|
cfg.database.password != opt.database.password.default ||
|
||||||
cfg.security.adminPassword != options.services.grafana.security.adminPassword.default
|
cfg.security.adminPassword != opt.security.adminPassword.default
|
||||||
) "Grafana passwords will be stored as plaintext in the Nix store!";
|
) "Grafana passwords will be stored as plaintext in the Nix store!";
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
@ -290,6 +332,10 @@ in {
|
|||||||
assertion = cfg.security.secretKeyFile != opt.security.secretKeyFile.default -> cfg.security.secretKeyFile == null;
|
assertion = cfg.security.secretKeyFile != opt.security.secretKeyFile.default -> cfg.security.secretKeyFile == null;
|
||||||
message = "Cannot set both secretKey and secretKeyFile";
|
message = "Cannot set both secretKey and secretKeyFile";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
assertion = cfg.smtp.password != opt.smtp.password.default -> cfg.smtp.passwordFile == null;
|
||||||
|
message = "Cannot set both password and secretKeyFile";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.services.grafana = {
|
systemd.services.grafana = {
|
||||||
@ -309,7 +355,11 @@ in {
|
|||||||
${optionalString (cfg.security.secretKeyFile != null) ''
|
${optionalString (cfg.security.secretKeyFile != null) ''
|
||||||
export GF_SECURITY_SECRET_KEY="$(cat ${escapeShellArg cfg.security.secretKeyFile})"
|
export GF_SECURITY_SECRET_KEY="$(cat ${escapeShellArg cfg.security.secretKeyFile})"
|
||||||
''}
|
''}
|
||||||
|
${optionalString (cfg.smtp.passwordFile != null) ''
|
||||||
|
export GF_SMTP_PASSWORD="$(cat ${escapeShellArg cfg.smtp.passwordFile})"
|
||||||
|
''}
|
||||||
exec ${cfg.package.bin}/bin/grafana-server -homepath ${cfg.dataDir}
|
exec ${cfg.package.bin}/bin/grafana-server -homepath ${cfg.dataDir}
|
||||||
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
WorkingDirectory = cfg.dataDir;
|
WorkingDirectory = cfg.dataDir;
|
||||||
User = "grafana";
|
User = "grafana";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user