{
  programs.bat = {
    enable = true;

    config = {
      theme = "TwoDark";
      pager = "less -FR";
      map-syntax = [
        "*.jenkinsfile:Groovy"
        "*.props:Java Properties"
      ];
    };

    themes.testtheme = ''
      This is a test theme.
    '';

    syntaxes.testsyntax = ''
      This is a test syntax.
    '';
  };

  test.asserts.warnings.enable = true;
  test.asserts.warnings.expected = [
    ''
      Using programs.bat.themes as a string option is deprecated and will be
      removed in the future. Please change to using it as an attribute set
      instead.
    ''
    ''
      Using programs.bat.syntaxes as a string option is deprecated and will be
      removed in the future. Please change to using it as an attribute set
      instead.
    ''
  ];

  nmt.script = ''
    assertFileExists home-files/.config/bat/config
    assertFileContent home-files/.config/bat/config ${builtins.toFile "bat.expected" ''
      --map-syntax='*.jenkinsfile:Groovy'
      --map-syntax='*.props:Java Properties'
      --pager='less -FR'
      --theme=TwoDark
    ''}

    assertFileExists home-files/.config/bat/themes/testtheme.tmTheme
    assertFileContent home-files/.config/bat/themes/testtheme.tmTheme ${builtins.toFile "bat.expected" ''
      This is a test theme.
    ''}

    assertFileExists home-files/.config/bat/syntaxes/testsyntax.sublime-syntax
    assertFileContent home-files/.config/bat/syntaxes/testsyntax.sublime-syntax ${builtins.toFile "bat.expected" ''
      This is a test syntax.
    ''}
  '';
}
