diff --git a/modules/accounts/email.nix b/modules/accounts/email.nix index 72eb538b..ef22b43c 100644 --- a/modules/accounts/email.nix +++ b/modules/accounts/email.nix @@ -123,6 +123,38 @@ let }; }; + jmapModule = types.submodule { + options = { + host = mkOption { + type = types.nullOr types.str; + default = null; + example = "jmap.example.org"; + description = '' + Hostname of JMAP server. + + If both this option and are specified, + host is preferred by applications when establishing a + session. + ''; + }; + + sessionUrl = mkOption { + type = types.nullOr types.str; + default = null; + example = "https://jmap.example.org:443/.well-known/jmap"; + description = '' + URL for the JMAP Session resource. + + If both this option and are specified, + host is preferred by applications when establishing a + session. + ''; + }; + }; + }; + smtpModule = types.submodule { options = { host = mkOption { @@ -205,7 +237,7 @@ let indicate the nature of the provider. When this indicates a specific provider then, for example, - the IMAP and SMTP server configuration may be set + the IMAP, SMTP, and JMAP server configuration may be set automatically. ''; }; @@ -234,7 +266,7 @@ let default = null; description = '' The server username of this account. This will be used as - the SMTP and IMAP user name. + the SMTP, IMAP, and JMAP user name. ''; }; @@ -299,6 +331,14 @@ let ''; }; + jmap = mkOption { + type = types.nullOr jmapModule; + default = null; + description = '' + The JMAP configuration to use for this account. + ''; + }; + signature = mkOption { type = signatureModule; default = { }; @@ -343,10 +383,16 @@ let host = "smtp.fastmail.com"; port = if config.smtp.tls.useStartTls then 587 else 465; }; + imap = { host = "imap.fastmail.com"; port = 993; }; + + jmap = { + host = "fastmail.com"; + sessionUrl = "https://jmap.fastmail.com/.well-known/jmap"; + }; }) (mkIf (config.flavor == "gmail.com") { userName = mkDefault config.address;