diff --git a/modules/programs/himalaya.nix b/modules/programs/himalaya.nix
index 1faee8202..92328153f 100644
--- a/modules/programs/himalaya.nix
+++ b/modules/programs/himalaya.nix
@@ -11,7 +11,7 @@ let
toHimalayaConfig = account:
{
email = account.address;
- name = account.realName;
+ display-name = account.realName;
default = account.primary;
mailboxes = {
@@ -20,30 +20,46 @@ let
draft = account.folders.drafts;
# NOTE: himalaya does not support configuring the name of the trash folder
};
-
+ } // (lib.optionalAttrs (account.signature.showSignature == "append") {
+ # FIXME: signature cannot be attached
+ signature = account.signature.text;
+ signature-delim = account.signature.delimiter;
+ }) // (if account.himalaya.backend == null then {
+ backend = "none";
+ } else if account.himalaya.backend == "imap" then {
# FIXME: does not support disabling TLS altogether
# NOTE: does not accept sequence of strings for password commands
+ backend = account.himalaya.backend;
imap-login = account.userName;
imap-passwd-cmd = lib.escapeShellArgs account.passwordCommand;
imap-host = account.imap.host;
imap-port = account.imap.port;
imap-starttls = account.imap.tls.useStartTls;
-
+ } else if account.himalaya.backend == "maildir" then {
+ backend = account.himalaya.backend;
+ maildir-root-dir = account.maildirBasePath;
+ } else
+ throw "Unsupported backend: ${account.himalaya.backend}")
+ // (if account.himalaya.sender == null then {
+ sender = "none";
+ } else if account.himalaya.sender == "smtp" then {
+ sender = account.himalaya.sender;
smtp-login = account.userName;
smtp-passwd-cmd = lib.escapeShellArgs account.passwordCommand;
smtp-host = account.smtp.host;
smtp-port = account.smtp.port;
smtp-starttls = account.smtp.tls.useStartTls;
- } // (lib.optionalAttrs (account.signature.showSignature == "append") {
- # FIXME: signature cannot be attached
- signature = account.signature.text;
- }) // account.himalaya.settings;
+ } else if account.himalaya.sender == "sendmail" then {
+ sender = account.himalaya.sender;
+ } else
+ throw "Unsupported sender: ${account.himalaya.sender}")
+ // account.himalaya.settings;
in {
# NOTE: will not start without this configured, but each account overrides it
- name = "";
+ display-name = "";
} // cfg.settings // (lib.mapAttrs (_: toHimalayaConfig) enabledAccounts);
in {
- meta.maintainers = with lib.hm.maintainers; [ ambroisie ];
+ meta.maintainers = with lib.hm.maintainers; [ toastal ];
options = with lib; {
programs.himalaya = {
@@ -63,7 +79,8 @@ in {
default = { };
example = lib.literalExpression ''
{
- default-page-size = 50;
+ email-listing-page-size = 50;
+ watch-cmds = [ "mbsync -a" ]
}
'';
description = ''
@@ -80,6 +97,22 @@ in {
the himalaya mail client for this account
'';
+ backend = mkOption {
+ # TODO: “notmuch” (requires compile flag for himalaya, libnotmuch)
+ type = types.nullOr (types.enum [ "imap" "maildir" ]);
+ description = ''
+ The method for which himalaya will fetch, store,
+ etc. mail.
+ '';
+ };
+
+ sender = mkOption {
+ type = types.nullOr (types.enum [ "smtp" "sendmail" ]);
+ description = ''
+ The method for which himalaya will send mail.
+ '';
+ };
+
settings = mkOption {
type = tomlFormat.type;
default = { };
diff --git a/tests/modules/programs/himalaya/himalaya-expected.toml b/tests/modules/programs/himalaya/himalaya-expected.toml
index 6c2dfb84c..ca7ada66d 100644
--- a/tests/modules/programs/himalaya/himalaya-expected.toml
+++ b/tests/modules/programs/himalaya/himalaya-expected.toml
@@ -1,16 +1,18 @@
+display-name = ""
downloads-dir = "/data/download"
-name = ""
["hm@example.com"]
+backend = "imap"
default = true
-default-page-size = 50
+display-name = "H. M. Test"
email = "hm@example.com"
+email-listing-page-size = 50
imap-host = "imap.example.com"
imap-login = "home.manager"
imap-passwd-cmd = "'password-command'"
imap-port = 995
imap-starttls = false
-name = "H. M. Test"
+sender = "smtp"
smtp-host = "smtp.example.com"
smtp-login = "home.manager"
smtp-passwd-cmd = "'password-command'"
diff --git a/tests/modules/programs/himalaya/himalaya.nix b/tests/modules/programs/himalaya/himalaya.nix
index 13872d158..4d556ff86 100644
--- a/tests/modules/programs/himalaya/himalaya.nix
+++ b/tests/modules/programs/himalaya/himalaya.nix
@@ -10,7 +10,9 @@ with lib;
himalaya = {
enable = true;
- settings = { default-page-size = 50; };
+ backend = "imap";
+ sender = "smtp";
+ settings = { email-listing-page-size = 50; };
};
folders = {
@@ -38,4 +40,3 @@ with lib;
}
'';
}
-