Files
sp-config/sp-modules/simple-nixos-mailserver/options.nix

88 lines
2.4 KiB
Nix
Raw Normal View History

2025-09-13 15:44:04 +03:00
{ config, lib, ... }:
{
options.selfprivacy.modules.simple-nixos-mailserver = {
2025-06-18 19:53:44 +03:00
enable =
(lib.mkOption {
default = false;
type = lib.types.bool;
description = "Enable mail server";
})
// {
meta = {
type = "enable";
};
2024-12-18 15:40:15 +03:00
};
2025-06-18 19:53:44 +03:00
location =
(lib.mkOption {
type = lib.types.str;
description = "Location";
})
// {
meta = {
type = "location";
};
2024-12-18 15:40:15 +03:00
};
2025-06-18 19:53:44 +03:00
enableSso =
(lib.mkOption {
default = true;
type = lib.types.bool;
description = "Enable SSO for mail server";
})
// {
meta = {
type = "enable";
};
};
};
2025-09-13 15:44:04 +03:00
options.sp.email = with lib; mkOption {
type = types.attrsOf (
types.submodule (
{ name, ... }: {
options = {
subdomain = mkOption {
type = with types; strMatching "[A-Za-z0-9][A-Za-z0-9\-]{0,61}[A-Za-z0-9]";
example = "myservice";
default = config.sp.domain;
description = "Email subdomain";
};
systemdTargets = mkOption {
type = with types; listOf strMatchig "[a-zA-Z0-9@%:_.\-]+[.](service|socket|device|mount|automount|swap|target|path|timer|scope|slice)";
default = [];
example = [ "generate-mastodon-email-password.service" ];
description = "Systemd target which generates password file.";
};
sendOnly = mkOption {
type = with types; bool;
default = true;
example = "false";
description = "Specifies if the account should be a send-only account. Emails sent to send-only accounts will be rejected.";
};
hashedPasswordFile = mkOption {
type = with types; str;
example = "/run/keys/mastodon/email_password";
description = "Path where a file containing password hash located.";
};
};
}
)
);
description = ''
Don't use this option to create regular users!!!
This option gives modules possibility to create mailboxes to send emails, e.g. notifications or reminders.
'';
example = {
"noreply@mastodon.example.tld" = {
hashedPasswordFile = "/run/keys/mastodon/email_password";
systemdTargets = [ "generate-mastodon-email-password.service" ];
};
};
};
}