summary refs log tree commit diff
path: root/nix/package.nix
blob: 50ed1bdf5ed86154a761b7297e490ef5ccde9223 (plain) (blame)
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
{inputs, ...}: {
  perSystem = {
    lib,
    system,
    pkgs,
    ...
  }: let
    inherit (inputs) advisory-db crane fenix;

    craneLib = crane.mkLib pkgs;
    src = craneLib.cleanCargoSource ../.;

    commonArgs = {
      inherit src;
      strictDeps = true;
    };

    craneLibLlvmTools =
      craneLib.overrideToolchain
      (fenix.packages.${system}.complete.withComponents [
        "cargo"
        "llvm-tools"
        "rustc"
      ]);

    cargoArtifacts = craneLib.buildDepsOnly commonArgs;

    vuw-scraper = craneLib.buildPackage (commonArgs
      // {
        inherit cargoArtifacts;
      });
  in {
    checks = {
      inherit vuw-scraper;

      vuw-scraper-clippy = craneLib.cargoClippy (commonArgs
        // {
          inherit cargoArtifacts;
          cargoClippyExtraArgs = "--all-targets -- --deny warnings";
        });

      vuw-scraper-doc = craneLib.cargoDoc (commonArgs
        // {
          inherit cargoArtifacts;
        });

      vuw-scraper-audit = craneLib.cargoAudit {
        inherit src advisory-db;
      };

      vuw-scraper-nextest = craneLib.cargoNextest (commonArgs
        // {
          inherit cargoArtifacts;
          partitions = 1;
          partitionType = "count";
        });
    };

    packages =
      {
        default = vuw-scraper;
      }
      // lib.optionalAttrs (!pkgs.stdenv.isDarwin) {
        vuw-scraper-llvm-coverage = craneLibLlvmTools.cargoLlvmCov (commonArgs
          // {
            inherit cargoArtifacts;
          });
      };
  };
}