home-manager/modules/programs/mbsync-accounts.nix
Matthieu Coudron 9d9d826054 mbsync: Adds extraConfig.{local|remote}
... to be able to limit the number of mails to be retrieved.
local refers to the "store" configuration, remote to the "channel".
2018-09-23 18:07:30 +09:00

83 lines
1.8 KiB
Nix

{ lib, ... }:
with lib;
let
extraConfigType = with lib.types; attrsOf (either (either str int) bool);
in
{
options.mbsync = {
enable = mkEnableOption "synchronization using mbsync";
flatten = mkOption {
type = types.nullOr types.str;
default = null;
example = ".";
description = ''
If set, flattens the hierarchy within the maildir by
substituting the canonical hierarchy delimiter
<literal>/</literal> with this value.
'';
};
create = mkOption {
type = types.enum [ "none" "maildir" "imap" "both" ];
default = "none";
example = "maildir";
description = ''
Automatically create missing mailboxes within the
given mail store.
'';
};
remove = mkOption {
type = types.enum [ "none" "maildir" "imap" "both" ];
default = "none";
example = "imap";
description = ''
Propagate mailbox deletions to the given mail store.
'';
};
expunge = mkOption {
type = types.enum [ "none" "maildir" "imap" "both" ];
default = "none";
example = "both";
description = ''
Permanently remove messages marked for deletion from
the given mail store.
'';
};
patterns = mkOption {
type = types.listOf types.str;
default = [ "*" ];
description = ''
Pattern of mailboxes to synchronize.
'';
};
extraConfig.local = mkOption {
type = extraConfigType;
default = {};
description = ''
Per store extra config.
'';
};
extraConfig.remote = mkOption {
type = extraConfigType;
default = {};
example = literalExample ''
{
MaxMessages = 10000;
MaxSize = 1m;
};
'';
description = ''
Per channel extra config.
'';
};
};
}