anchor.diff:    # a test script fragment `createPartitions', which must create
     # partitions and filesystems.
     testScriptFun = { createPartitions, testChannel, grubVersion, grubDevice
  -                  , grubIdentifier, extraConfig
  +                  , grubIdentifier, preBootCommands, extraConfig
                     }:
       let
         # FIXME: OVMF doesn't boot from virtio http://www.mail-archive.com/edk2-devel@lists.sourceforge.net/msg01501.html
  
positive.code: 
        # Check whether a writable store build works
        $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}" });
        $machine->waitForUnit("multi-user.target");
        $machine->copyFileFromHost(
            "${ makeConfig { inherit testChannel grubVersion grubDevice grubIdentifier extraConfig; readOnly = false; forceGrubReinstallCount = 2; } }",
  
negative.code:       # And just to be sure, check that the machine still boots after
        # "nixos-rebuild switch".
        $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}" });
        ${preBootCommands}
        $machine->waitForUnit("network.target");
        $machine->shutdown;
      '';
  
  
    makeInstallerTest = name:
      { createPartitions, preBootCommands ? "", extraConfig ? ""
      , testChannel ? false, grubVersion ? 2, grubDevice ? "/dev/vda"
      , grubIdentifier ? "uuid"
      }:
      makeTest {
        inherit iso;
        name = "installer-" + name;
        nodes = if testChannel then { inherit webserver; } else { };
        testScript = testScriptFun {
          inherit createPartitions preBootCommands testChannel grubVersion
                  grubDevice grubIdentifier extraConfig;
        };
      };
  
  