meli: support account specific settings

also assert when overriding accounts. I had overriden settings when
testing this module, forgot about it and then wondered why my email
accounts were ignored.
This commit is contained in:
teto 2025-06-09 00:11:45 +02:00 committed by Matthieu Coudron
parent d2e0458d65
commit 80cca72314
3 changed files with 29 additions and 2 deletions

View file

@ -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.<ACCOUNT>.meli.settings instead'';
}
];
home.packages = [ config.programs.meli.package ];
# Generate meli configuration from email accounts