{
inputs = {
nixpkgs.url = "nixpkgs/nixos-22.11";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
};
outputs = {
nixpkgs,
rust-overlay,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (
system: let
overlays = [(import rust-overlay)];
pkgs = import nixpkgs {
inherit system overlays;
};
rust = pkgs.rust-bin.stable.latest.default.override {
extensions = ["rust-src" "cargo" "rustc" "clippy" "llvm-tools-preview"];
};
nativeBuildInputs = with pkgs; [
rust
pkg-config
];
buildInputs = with pkgs; [
libuv
systemd.dev
];
packages = with pkgs; [
rust-analyzer
nil
cargo-llvm-cov
];
in {
formatter = pkgs.alejandra;
devShell = pkgs.mkShell {
inherit nativeBuildInputs buildInputs packages;
RUST_SRC_PATH = "${rust}/lib/rustlib/src/rust/library";
};
}
);
}