{ lib , stdenv , fetchFromGitHub , rustPlatform , cmake , python3Packages , Security }: rustPlatform.buildRustPackage rec { pname = "rust-cbindgen"; version = "0.24.6"; src = fetchFromGitHub { owner = "mozilla"; repo = "cbindgen"; rev = "v${version}"; hash = "sha256-RHh97hwWmjV6hw+fX+fOtixX/DGedTf9cx+PYPW6/wI="; }; cargoSha256 = "sha256-7G/16arXYwt7Nrs1isWyrPubm8GMi8NsjLjWAD8x6aM="; buildInputs = lib.optional stdenv.isDarwin Security; nativeCheckInputs = [ cmake python3Packages.cython ]; checkFlags = [ # Disable tests that require rust unstable features # https://github.com/eqrion/cbindgen/issues/338 "--skip test_expand" "--skip test_bitfield" "--skip lib_default_uses_debug_build" "--skip lib_explicit_debug_build" "--skip lib_explicit_release_build" ] ++ lib.optionals stdenv.isDarwin [ # WORKAROUND: test_body fails when using clang # https://github.com/eqrion/cbindgen/issues/628 "--skip test_body" ]; meta = with lib; { changelog = "https://github.com/mozilla/cbindgen/blob/v${version}/CHANGES"; description = "A project for generating C bindings from Rust code"; homepage = "https://github.com/mozilla/cbindgen"; license = licenses.mpl20; maintainers = with maintainers; [ hexa ]; }; }