Hello there!
I’ve recently started trying to build a Rust project while on NixOS. The problem I’m having is that one of the dependencies I am wanting to use requires bindgen
.
Since flakes seems to be all-the-rage lately, I’ve been using rust-overlay
in my flake, and from what I can see in the manual I should be able to use rustPlatform.bindgenHook
in order to overcome clang not being able to find the appropriate libraries/headers for the dependencies I am wanting to use, my flake is as follows:
{
description = "Test Project";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.11";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.rust-overlay.url = "github:oxalica/rust-overlay";
outputs = { self, nixpkgs, flake-utils, rust-overlay, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs { inherit system overlays; };
in
{
devShell = with pkgs; mkShell {
buildInputs = [
rust-bin.stable.latest.default
openssl
];
nativeBuildInputs = with pkgs; [
pkg-config
rustPlatform.bindgenHook
];
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
BINDGEN_EXTRA_CLANG_ARGS = "-isystem ${llvmPackages.libclang.lib}/lib/clang/${lib.getVersion clang}/include";
};
});
}
This leads me to the following error though, when attempting to run nix develop
:
error: attribute 'bindgenHook' missing
at /nix/store/7s4xwp7ksrcbwn1y1nnpmnmzcz7z62c4-source/flake.nix:23:13:
22| pkg-config
23| rustPlatform.bindgenHook
| ^
24| ];
(use '--show-trace' to show detailed location information)
Every where that I’ve searched, it seems bindgenHook
should still exist, but my system is unable to find it. My knowledge of Nix and Flakes is still incredibly new, so I get the feeling that I’m just overlooking something simple.
If anyone has any ideas, I’d appreciate it!