summary refs log tree commit diff
path: root/nix/package.nix
blob: ef9ac8f013a0b4b241c0d125f2f7a24e7844eb31 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
{inputs, ...}: {
  perSystem = {
    lib,
    system,
    pkgs,
    ...
  }: let
    inherit (inputs) advisory-db crane fenix;

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

    commonArgs = {
      inherit src;
      strictDeps = true;

      nativeBuildInputs = with pkgs; [openssl openssl.dev pkg-config];

      LD_LIBRARY_PATH = lib.makeLibraryPath [pkgs.openssl];
      PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
    };

    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;
          });
      };

    devenv.shells.default = {
      env = {
        inherit (commonArgs) LD_LIBRARY_PATH PKG_CONFIG_PATH;
      };

      packages = commonArgs.nativeBuildInputs;
    };
  };
}