diff --git a/modules/programs/meli.nix b/modules/programs/meli.nix index 6a32cf04..d8c61ed3 100644 --- a/modules/programs/meli.nix +++ b/modules/programs/meli.nix @@ -24,7 +24,8 @@ let meliAccounts = (lib.attrsets.mapAttrs (name: value: (mkMeliAccounts name value)) enabledAccounts); mkMeliAccounts = ( - name: account: { + name: account: + { root_mailbox = "${config.accounts.email.maildirBasePath}/${account.maildir.path}"; format = "Maildir"; identity = account.address; @@ -33,6 +34,7 @@ let send_mail = mkSmtp account; mailboxes = account.meli.mailboxAliases; } + // account.meli.settings ); mkSmtp = account: { @@ -153,6 +155,14 @@ in }; description = "Folder display name"; }; + + settings = mkOption { + type = types.submodule { + freeformType = tomlFormat.type; + }; + default = { }; + description = "Account specific meli configuration"; + }; }; } ) @@ -160,6 +170,15 @@ in }; }; config = mkIf config.programs.meli.enable { + assertions = [ + { + assertion = cfg.settings ? accounts == false; + message = '' + programs.meli.settings.accounts override the accounts.email values. + Use per-email accounts.email..meli.settings instead''; + } + ]; + home.packages = [ config.programs.meli.package ]; # Generate meli configuration from email accounts diff --git a/tests/modules/programs/meli/expected.toml b/tests/modules/programs/meli/expected.toml index b945fb88..f33a2b88 100644 --- a/tests/modules/programs/meli/expected.toml +++ b/tests/modules/programs/meli/expected.toml @@ -5,6 +5,9 @@ identity = "hm@example.com" root_mailbox = "/home/hm-user/Mail/hm@example.com" subscribed_mailboxes = ["Inbox", "Sent", "Trash", "Drafts"] +[accounts."hm@example.com".listing] +index_style = "compact" + [accounts."hm@example.com".mailboxes] [accounts."hm@example.com".send_mail] diff --git a/tests/modules/programs/meli/meli.nix b/tests/modules/programs/meli/meli.nix index d4e93723..a93c5d2a 100644 --- a/tests/modules/programs/meli/meli.nix +++ b/tests/modules/programs/meli/meli.nix @@ -16,7 +16,12 @@ }; accounts.email.accounts = { "hm@example.com" = { - meli.enable = true; + meli = { + enable = true; + settings = { + listing.index_style = "compact"; + }; + }; smtp.port = 1848; }; };