{ 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" ]; }; }; }; }