88 lines
2.4 KiB
Nix
88 lines
2.4 KiB
Nix
{ config, lib, ... }:
|
|
{
|
|
options.selfprivacy.modules.simple-nixos-mailserver = {
|
|
enable =
|
|
(lib.mkOption {
|
|
default = false;
|
|
type = lib.types.bool;
|
|
description = "Enable mail server";
|
|
})
|
|
// {
|
|
meta = {
|
|
type = "enable";
|
|
};
|
|
};
|
|
location =
|
|
(lib.mkOption {
|
|
type = lib.types.str;
|
|
description = "Location";
|
|
})
|
|
// {
|
|
meta = {
|
|
type = "location";
|
|
};
|
|
};
|
|
enableSso =
|
|
(lib.mkOption {
|
|
default = true;
|
|
type = lib.types.bool;
|
|
description = "Enable SSO for mail server";
|
|
})
|
|
// {
|
|
meta = {
|
|
type = "enable";
|
|
};
|
|
};
|
|
};
|
|
|
|
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" ];
|
|
};
|
|
};
|
|
};
|
|
}
|