{ config, lib, pkgs, ... }: with lib; { imports = [ ../../accounts/email-test-accounts.nix ]; config = { programs.mbsync = { enable = true; # programs.mbsync.groups and # accounts.email.accounts..mbsync.groups should NOT be used at the # same time. # If they are, then the new version will take precedence. groups.inboxes = { "hm@example.com" = [ "Inbox1" "Inbox2" ]; hm-account = [ "Inbox" ]; }; }; accounts.email.accounts = { "hm@example.com".mbsync = { enable = true; extraConfig.account.TLSVersions = [ "+1.3" "+1.2" "-1.1" ]; groups.inboxes = { channels = { inbox1 = { farPattern = "Inbox1"; nearPattern = "Inboxes"; }; inbox2 = { farPattern = "Inbox2"; nearPattern = "Inboxes"; }; }; }; }; hm-account.mbsync = { enable = true; groups.hm-account = { channels.earlierPatternMatch = { farPattern = "Label"; nearPattern = "SomethingUnderLabel"; patterns = [ "ThingUnderLabel" "!NotThisMaildirThough" ''"[Weird] Label?"'' ]; }; channels.inbox = { farPattern = "Inbox"; nearPattern = "Inbox"; }; channels.strangeHostBoxName = { farPattern = "[Weird]/Label Mess"; nearPattern = "[AnotherWeird]/Label"; }; channels.patternMatch = { farPattern = "Label"; nearPattern = "SomethingUnderLabel"; patterns = [ "ThingUnderLabel" "!NotThisMaildirThough" ''"[Weird] Label?"'' ]; }; }; # No group should be printed. groups.emptyGroup = { }; # Group should be printed, but left with default channels. groups.emptyChannels = { channels.empty1 = { }; channels.empty2 = { }; }; }; }; test.stubs.isync = { }; nmt.script = '' assertFileExists home-files/.config/isyncrc assertFileContent home-files/.config/isyncrc ${./mbsync-expected.conf} ''; }; }