From d6dcf9f1067515816c157277179fe74c6b079f6e Mon Sep 17 00:00:00 2001 From: Karl Hallsby Date: Fri, 26 Jun 2020 13:36:15 +0200 Subject: [PATCH] mbsync: option for configuring a channel A channel is a relationship between 2 directories/boxes/mailboxes between the local machine (slave) and the remote mail server (master). Each channel must be given at least: * an account-unique name * a pattern for which mailboxes to sync from master * a pattern for what directory where that mail ends up on the slave Additional options can be added later. --- modules/programs/mbsync-accounts.nix | 42 ++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/modules/programs/mbsync-accounts.nix b/modules/programs/mbsync-accounts.nix index 4de1965f..19f926c8 100644 --- a/modules/programs/mbsync-accounts.nix +++ b/modules/programs/mbsync-accounts.nix @@ -6,6 +6,48 @@ let extraConfigType = with lib.types; attrsOf (either (either str int) bool); + # Options for configuring channel(s) that will be composed together into a group. + groupChannel = { config, ... }: { + options = { + name = mkOption { + type = types.str; + default = "DEFAULT"; + description = '' + The unique name for THIS channel in THIS group. The group will refer to + this channel by this name. + + In addition, you can manually sync just this channel by specifying this + name to mbsync on the command line. + ''; + }; + + masterPattern = mkOption { + type = types.str; + default = ""; + description = '' + Regular expression pattern for which mailboxes on the remote mail server + to sync. + + If this is left as the default, then mbsync will default to the pattern + INBOX. + ''; + }; + + slavePattern = mkOption { + type = types.str; + default = ""; + description = '' + Name for where mail coming from the master mail server will end up + locally. The mailbox specified by the master's pattern will be placed + in this directory. + + If this is left as the default, then mbsync will default to the pattern + INBOX. + ''; + }; + }; + }; + in { options.mbsync = { enable = mkEnableOption "synchronization using mbsync";