| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- {
- inputs = {
- flake-utils.url = "github:numtide/flake-utils";
- naersk.url = "github:nix-community/naersk";
- nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- treefmt-nix.url = "github:numtide/treefmt-nix";
- rust-overlay.url = "github:oxalica/rust-overlay";
- };
- outputs = {
- self,
- flake-utils,
- naersk,
- nixpkgs,
- treefmt-nix,
- rust-overlay,
- }:
- flake-utils.lib.eachDefaultSystem (
- system: let
- overlays = [(import rust-overlay)];
- pkgs = (import nixpkgs) {
- inherit system overlays;
- };
- toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
- naersk' = pkgs.callPackage naersk {
- cargo = toolchain;
- rustc = toolchain;
- clippy = toolchain;
- };
- treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
- in rec {
- # For `nix fmt`
- formatter = treefmtEval.config.build.wrapper;
- packages = {
- # For `nix build` & `nix run`:
- default = naersk'.buildPackage {
- src = ./.;
- doCheck = true; # run `cargo test` on build
- };
- # Run `nix build .#check` to check code
- check = naersk'.buildPackage {
- src = ./.;
- mode = "check";
- };
- # Run `nix build .#test` to run tests
- test = naersk'.buildPackage {
- src = ./.;
- mode = "test";
- };
- # Run `nix build .#clippy` to lint code
- clippy = naersk'.buildPackage {
- src = ./.;
- mode = "clippy";
- };
- };
- # For `nix develop`:
- devShells.default = pkgs.mkShell {
- nativeBuildInputs = with pkgs; [toolchain];
- };
- # for `nix flake check`
- checks = {
- formatting = treefmtEval.config.build.check self;
- build = packages.check;
- test = packages.test;
- lint = packages.clippy;
- };
- }
- );
- }
|