{
  mkShell,
  rustPlatform,
  rustc,
  cargo,
  rust-analyzer,
  rustfmt,
  clippy,
  taplo,
  pkg-config,
  nixVersions,
  glibc,
}:
let
  inherit (rustc) llvmPackages;
  nixForBindings = nixVersions.nix_2_34;
in
mkShell {
  name = "evix";

  strictDeps = true;
  nativeBuildInputs = [
    pkg-config
    cargo
    rustc
    llvmPackages.lld
    rustfmt
    clippy
    taplo
    rust-analyzer
  ];

  buildInputs = [
    nixForBindings.dev
    glibc.dev
  ];

  env = {
    RUST_SRC_PATH = "${rustPlatform.rustLibSrc}";
    LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
    BINDGEN_EXTRA_CLANG_ARGS = "--sysroot=${glibc.dev}";
  };
}
