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