{
description = "lazyspec - specification management tool";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, crane, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
craneLib = crane.mkLib pkgs;
src = craneLib.cleanCargoSource ./.;
commonArgs = {
inherit src;
strictDeps = true;
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = pkgs.lib.optionals pkgs.stdenv.isDarwin [
pkgs.apple-sdk_15
];
};
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
in
{
packages.default = craneLib.buildPackage (commonArgs // {
inherit cargoArtifacts;
doCheck = false;
});
checks = {
clippy = craneLib.cargoClippy (commonArgs // {
inherit cargoArtifacts;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
});
fmt = craneLib.cargoFmt {
inherit src;
};
test = craneLib.cargoTest (commonArgs // {
inherit cargoArtifacts;
nativeBuildInputs = commonArgs.nativeBuildInputs ++ [ pkgs.git ];
preCheck = ''
export HOME=$(mktemp -d)
git config --global user.email "nix@test"
git config --global user.name "nix"
git init
git add -A
git commit -m "init" --allow-empty
'';
});
};
formatter = pkgs.nixfmt;
devShells.default = craneLib.devShell {
checks = self.checks.${system};
packages = [
pkgs.clippy
pkgs.rustfmt
pkgs.rust-analyzer
pkgs.ast-grep
pkgs.ripgrep
];
};
}
);
}