anchor.diff:          url = "http://localhost";
         };
         metricProvider = {
  -        systemd.services.nc-pwfile = let
  -          passfile = (pkgs.writeText "pwfile" "snakeoilpw");
  -        in {
  -          requiredBy = [ "prometheus-nextcloud-exporter.service" ];
  -          before = [ "prometheus-nextcloud-exporter.service" ];
  -          serviceConfig.ExecStart = ''
  -            ${pkgs.coreutils}/bin/install -o nextcloud-exporter -m 0400 ${passfile} /var/nextcloud-pwfile
  -          '';
  -        };
  +        systemd.services.nc-pwfile =
  +          let
  +            passfile = (pkgs.writeText "pwfile" "snakeoilpw");
  +          in
  +          {
  +            requiredBy = [ "prometheus-nextcloud-exporter.service" ];
  +            before = [ "prometheus-nextcloud-exporter.service" ];
  +            serviceConfig.ExecStart = ''
  +              ${pkgs.coreutils}/bin/install -o nextcloud-exporter -m 0400 ${passfile} /var/nextcloud-pwfile
  +            '';
  +          };
           services.nginx = {
             enable = true;
             virtualHosts."localhost" = {
  
positive.code: { system ? builtins.currentSystem
  , config ? {}
  , pkgs ? import ../.. { inherit system config; }
  }:
  
  let
    inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
    inherit (pkgs.lib) concatStringsSep maintainers mapAttrs mkMerge
                       removeSuffix replaceChars singleton splitString;
  
  /*
   * The attrset `exporterTests` contains one attribute
   * for each exporter test. Each of these attributes
   * is expected to be an attrset containing:
   *
   *  `exporterConfig`:
   *    this attribute set contains config for the exporter itself
   *
   *  `exporterTest`
   *    this attribute set contains test instructions
   *
   *  `metricProvider` (optional)
   *    this attribute contains additional machine config
   *
   *  `nodeName` (optional)
   *    override an incompatible testnode name
   *
   *  Example:
   *    exporterTests.<exporterName> = {
   *      exporterConfig = {
   *        enable = true;
   *      };
   *      metricProvider = {
   *        services.<metricProvider>.enable = true;
   *      };
   *      exporterTest = ''
   *        wait_for_unit("prometheus-<exporterName>-exporter.service")
   *        wait_for_open_port("1234")
   *        succeed("curl -sSf 'localhost:1234/metrics'")
   *      '';
   *    };
   *
   *  # this would generate the following test config:
   *
   *    nodes.<exporterName> = {
   *      services.prometheus.<exporterName> = {
   *        enable = true;
   *      };
   *      services.<metricProvider>.enable = true;
   *    };
   *
   *    testScript = ''
   *      <exporterName>.start()
   *      <exporterName>.wait_for_unit("prometheus-<exporterName>-exporter.service")
   *      <exporterName>.wait_for_open_port("1234")
   *      <exporterName>.succeed("curl -sSf 'localhost:1234/metrics'")
   *      <exporterName>.shutdown()
   *    '';
   */
  
    exporterTests = {
       apcupsd = {
        exporterConfig = {
          enable = true;
        };
  
negative.code:           "plugin":"testplugin",
            "time":DATE
          }]
        ''; in
          ''
            wait_for_unit("prometheus-collectd-exporter.service")
            wait_for_open_port(9103)
            succeed(
                'echo \'${postData}\'> /tmp/data.json'
            )
            succeed('sed -ie "s DATE $(date +%s) " /tmp/data.json')
            succeed(
                "curl -sSfH 'Content-Type: application/json' -X POST --data @/tmp/data.json localhost:9103/collectd"
            )
            succeed(
                "curl -sSf localhost:9103/metrics | grep -q 'collectd_testplugin_gauge{instance=\"testhost\"} 23'"
            )
          '';
      };
  
      dnsmasq = {
  