1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
  mkNixBuildTest =
    { name, expressionFile, extraMachineConfig ? {}, testScriptPre ? "", testScriptPost ? "" }:
    { lib, pkgs, ... }:
    {
      inherit name;

      nodes.machine = {
        imports = [extraMachineConfig];
        nix.nixPath = ["nixpkgs=${pkgs.path}"];
        nix.settings.substituters = lib.mkForce [];
        virtualisation.additionalPaths = [
          expressionFile
          (pkgs.callPackage expressionFile {}).inputDerivation
        ];
      };

      testScript = { nodes }: ''
        start_all()

        ${testScriptPre}

        machine.succeed('nix-build --expr "let pkgs = import <nixpkgs> {}; in pkgs.callPackage ${expressionFile} {}"')

        ${testScriptPost}
      '';
    };
}