{
  programs.bat = {
    enable = true;

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

      # False boolean options should not appear in the config
      lessopen = false;
    };

    themes.testtheme.src = builtins.toFile "testtheme.tmTheme" ''
      This is a test theme.
    '';

    syntaxes.testsyntax.src = builtins.toFile "testsyntax.sublime-syntax" ''
      This is a test syntax.
    '';
  };

  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
        --show-all
      ''
    }

    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.
      ''
    }
  '';
}