email: add support for JMAP

Co-authored-by: Eliza Velasquez <4576666+elizagamedev@users.noreply.github.com>
(cherry picked from commit 467617947d)
This commit is contained in:
Robert Helgesson 2022-06-22 00:11:53 +02:00 committed by Eliza Velasquez
parent ac2287df5a
commit 40ec43d367

View file

@ -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.
</para><para>
If both this option and <xref
linkend="opt-accounts.email.accounts._name_.jmap.sessionUrl"/> are specified,
<code>host</code> 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.
</para><para>
If both this option and <xref
linkend="opt-accounts.email.accounts._name_.jmap.host"/> are specified,
<code>host</code> is preferred by applications when establishing a
session.
'';
};
};
};
smtpModule = types.submodule { smtpModule = types.submodule {
options = { options = {
host = mkOption { host = mkOption {
@ -205,7 +237,7 @@ let
indicate the nature of the provider. indicate the nature of the provider.
</para><para> </para><para>
When this indicates a specific provider then, for example, 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. automatically.
''; '';
}; };
@ -234,7 +266,7 @@ let
default = null; default = null;
description = '' description = ''
The server username of this account. This will be used as 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 { signature = mkOption {
type = signatureModule; type = signatureModule;
default = { }; default = { };
@ -343,10 +383,16 @@ let
host = "smtp.fastmail.com"; host = "smtp.fastmail.com";
port = if config.smtp.tls.useStartTls then 587 else 465; port = if config.smtp.tls.useStartTls then 587 else 465;
}; };
imap = { imap = {
host = "imap.fastmail.com"; host = "imap.fastmail.com";
port = 993; port = 993;
}; };
jmap = {
host = "fastmail.com";
sessionUrl = "https://jmap.fastmail.com/.well-known/jmap";
};
}) })
(mkIf (config.flavor == "gmail.com") { (mkIf (config.flavor == "gmail.com") {
userName = mkDefault config.address; userName = mkDefault config.address;