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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
{
  stdenv,
  lib,
  nix,
  srcDir ? ./.,
  callPackage,
  meson,
  pkg-config,
  ninja,
  cmake,
  capnproto,
  clang-tools,
  nlohmann_json,
  boost,
}:

# gcc ICEs on coroutines at least until 14.3, possibly longer
assert stdenv.cc.isClang;

let
  sourceBase = if srcDir == null then ./. else srcDir;
  package = stdenv.mkDerivation (finalAttrs: {
    pname = "nix-eval-jobs";
    version = "2.93.0-dev";
    src = lib.fileset.toSource {
      root = sourceBase;
      fileset = lib.fileset.unions [
        ./meson.build
        ./src
      ];
    };
    buildInputs = [
      nlohmann_json
      nix
      boost
      capnproto
    ];
    nativeBuildInputs = [
      meson
      pkg-config
      ninja
      # nlohmann_json can be only discovered via cmake files
      cmake
      capnproto
    ]
    ++ (lib.optional stdenv.cc.isClang [ clang-tools ]);

    passthru = {
      inherit nix;
      tests.nix-eval-jobs = callPackage (
        {
          stdenv,
          python3Packages,
          path,
        }:
        let
          nejAttrs = finalAttrs;
        in
        stdenv.mkDerivation (finalAttrs: {
          pname = "nix-eval-jobs-tests";
          inherit (nejAttrs) version;
          src = lib.fileset.toSource {
            root = sourceBase;
            fileset = lib.fileset.unions [
              ./pyproject.toml
              ./tests
            ];
          };

          nativeBuildInputs = [
            python3Packages.pytest
            package
          ];

          env.NEJ_NIXPKGS_PATH = "${path}";

          dontConfigure = true;
          buildPhase = ''
            export NIX_REMOTE="$NIX_BUILD_TOP"
            export HOME="$(mktemp -d)"
            pytest -v
          '';
          installPhase = "touch $out";
        })
      ) { };
    };

    meta = {
      description = "Hydra's builtin hydra-eval-jobs as a standalone";
      homepage = "https://git.lix.systems/lix-project/lix/src/branch/main/subprojects/nix-eval-jobs";
      license = lib.licenses.gpl3;
      platforms = lib.platforms.unix;
      mainProgram = "nix-eval-jobs";
    };
  });
in
package