feat: nix module with smtp options
This commit is contained in:
parent
1ffd479013
commit
546eb1fe33
1 changed files with 40 additions and 1 deletions
41
module.nix
41
module.nix
|
|
@ -41,6 +41,39 @@ in
|
||||||
description = "Port the relay server listens on.";
|
description = "Port the relay server listens on.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1";
|
||||||
|
description = "SMTP server hostname.";
|
||||||
|
};
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 1025;
|
||||||
|
description = "SMTP server port.";
|
||||||
|
};
|
||||||
|
from = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "noreply@trictrac.local";
|
||||||
|
description = "Sender address for outgoing mail.";
|
||||||
|
};
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
description = "SMTP username (leave empty to skip authentication).";
|
||||||
|
};
|
||||||
|
passwordFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
example = "/run/secrets/trictrac-smtp-password";
|
||||||
|
description = ''
|
||||||
|
Path to a file containing a single line: SMTP_PASSWORD=<secret>.
|
||||||
|
Loaded as a systemd EnvironmentFile so the secret never appears in
|
||||||
|
the Nix store or process environment of other units.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
createDatabaseLocally = mkOption {
|
createDatabaseLocally = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -136,8 +169,13 @@ in
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
# Use TCP + trust auth (matches NixOS postgresql.authentication above)
|
|
||||||
DATABASE_URL = "postgresql://${cfg.user}@127.0.0.1/${cfg.user}";
|
DATABASE_URL = "postgresql://${cfg.user}@127.0.0.1/${cfg.user}";
|
||||||
|
APP_URL = "${cfg.protocol}://${cfg.hostname}";
|
||||||
|
SMTP_HOST = cfg.smtp.host;
|
||||||
|
SMTP_PORT = toString cfg.smtp.port;
|
||||||
|
SMTP_FROM = cfg.smtp.from;
|
||||||
|
} // optionalAttrs (cfg.smtp.user != "") {
|
||||||
|
SMTP_USER = cfg.smtp.user;
|
||||||
};
|
};
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
@ -149,6 +187,7 @@ in
|
||||||
WorkingDirectory = "/var/lib/trictrac";
|
WorkingDirectory = "/var/lib/trictrac";
|
||||||
ExecStartPre = "${setupScript}";
|
ExecStartPre = "${setupScript}";
|
||||||
ExecStart = "${pkgs.trictrac}/bin/relay-server";
|
ExecStart = "${pkgs.trictrac}/bin/relay-server";
|
||||||
|
EnvironmentFile = mkIf (cfg.smtp.passwordFile != null) cfg.smtp.passwordFile;
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue