{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
futils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, rust-overlay, futils } @ inputs:
let
inherit (nixpkgs) lib;
inherit (lib) recursiveUpdate;
inherit (futils.lib) eachDefaultSystem defaultSystems;
nixpkgsFor = lib.genAttrs defaultSystems (system: import nixpkgs {
inherit system;
overlays = [
rust-overlay.overlays.default
];
});
anySystemOutputs = {};
multipleSystemsOutputs = eachDefaultSystem (system:
let
pkgs = nixpkgsFor.${system};
in
{
devShell = pkgs.mkShell {
buildInputs = with pkgs; [
(rust-bin.fromRustupToolchainFile ./rust-toolchain.toml)
cargo-audit
cargo-edit
cargo-expand
cargo-flamegraph
cargo-release
cargo-sort
cargo-tarpaulin
git
pre-commit
];
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
};
});
in
recursiveUpdate multipleSystemsOutputs anySystemOutputs;
}