{ config, lib, pkgs, ... }: with lib; { imports = [ ../../accounts/email-test-accounts.nix ]; test.asserts.warnings.expected = [ "mbsync channels no longer use masterPattern. Use farPattern in its place." "mbsync channels no longer use slavePattern. Use nearPattern in its place." ]; config = { programs.mbsync = { enable = true; # programs.mbsync.groups and # accounts.email.accounts.<name>.mbsync.groups should NOT be used at the # same time. # If they are, then the new version will take precendence. groups.inboxes = { "hm@example.com" = [ "Inbox1" "Inbox2" ]; hm-account = [ "Inbox" ]; }; }; accounts.email.accounts = { "hm@example.com".mbsync = { enable = true; 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.asserts.warnings.expected = [ "mbsync channels no longer use masterPattern. use farPattern in its place." "mbsync channels no longer use slavePattern. Use nearPattern in its place." ]; test.stubs.isync = { }; nmt.script = '' assertFileExists home-files/.mbsyncrc assertFileContent home-files/.mbsyncrc ${./mbsync-expected.conf} ''; }; }