diff --git a/modules/programs/mbsync-accounts.nix b/modules/programs/mbsync-accounts.nix index c1bd551fa..cdd5997f1 100644 --- a/modules/programs/mbsync-accounts.nix +++ b/modules/programs/mbsync-accounts.nix @@ -125,6 +125,16 @@ in { ''; }; + subFolders = mkOption { + type = types.enum [ "Verbatim" "Maildir++" "Legacy" ]; + default = "Verbatim"; + example = "Maildir++"; + description = '' + The on-disk folder naming style. This option has no + effect when is used. + ''; + }; + create = mkOption { type = types.enum [ "none" "maildir" "imap" "both" ]; default = "none"; diff --git a/modules/programs/mbsync.nix b/modules/programs/mbsync.nix index f9713da3a..7d55c7343 100644 --- a/modules/programs/mbsync.nix +++ b/modules/programs/mbsync.nix @@ -65,10 +65,13 @@ let + genSection "IMAPStore ${name}-remote" ({ Account = name; } // mbsync.extraConfig.remote) + "\n" + genSection "MaildirStore ${name}-local" ({ - Path = "${maildir.absPath}/"; Inbox = "${maildir.absPath}/${folders.inbox}"; - SubFolders = "Verbatim"; - } // optionalAttrs (mbsync.flatten != null) { Flatten = mbsync.flatten; } + } // optionalAttrs + (mbsync.subFolders != "Maildir++" || mbsync.flatten != null) { + Path = "${maildir.absPath}/"; + } // optionalAttrs (mbsync.flatten == null) { + SubFolders = mbsync.subFolders; + } // optionalAttrs (mbsync.flatten != null) { Flatten = mbsync.flatten; } // mbsync.extraConfig.local) + "\n" + genChannels account; genChannels = account: