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 <option>flatten</option> 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: