{ description = "tricc"; inputs = { nixpkgs.url = github:NixOS/nixpkgs/release-22.11; crane = { url = github:ipetkov/crane; inputs.nixpkgs.follows = "nixpkgs"; }; fenix = { url = github:nix-community/fenix; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = github:numtide/flake-utils; }; outputs = inputs@{ self, nixpkgs, crane, fenix, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ fenix.overlays.default ]; }; inherit (pkgs) lib; toolchain = pkgs.fenix.fromToolchainFile { file = ./rust-toolchain.toml; sha256 = "sha256-n8LtGbpj/yCUGo0NFJ7FNv9fSdT9oKEUl+EPLg06JdQ="; }; craneLib = (crane.mkLib pkgs).overrideToolchain toolchain; src = craneLib.cleanCargoSource (craneLib.path ./.); commonArgs = { inherit src; }; cargoArtifacts = craneLib.buildDepsOnly commonArgs; tricc = craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; doCheck = false; }); in { packages = { inherit tricc; default = tricc; # not using flake checks to run them individually checks = { clippy = craneLib.cargoClippy (commonArgs // { inherit cargoArtifacts; }); fmt = craneLib.cargoFmt { inherit src; }; doc = craneLib.cargoDoc (commonArgs // { inherit cargoArtifacts; }); nextest = craneLib.cargoNextest (commonArgs // { inherit cargoArtifacts; partitions = 1; partitionType = "count"; }); }; }; devShells.default = pkgs.mkShell { nativeBuildInputs = [ toolchain ]; }; formatter = pkgs.nixpkgs-fmt; }); }