{ lib , rustPlatform , fetchCrate , pkg-config , curl , openssl , stdenv , CoreFoundation , libiconv , Security }: rustPlatform.buildRustPackage rec { pname = "cargo-c"; version = "0.9.2"; src = fetchCrate { inherit pname; # this version may need to be updated along with package version version = "${version}+cargo-0.55"; sha256 = "sha256-yh5vAtKlBvoSlJBsW2RSduSK6T8aOssM84WQMNjLZqA="; }; cargoSha256 = "sha256-YikTjAeroaHyNe3ygUWRHSXJwdm2BSBV7RgIDN4suZ4="; nativeBuildInputs = [ pkg-config (lib.getDev curl) ]; buildInputs = [ openssl curl ] ++ lib.optionals stdenv.isDarwin [ CoreFoundation libiconv Security ]; # Ensure that we are avoiding build of the curl vendored in curl-sys doInstallCheck = stdenv.hostPlatform.libc == "glibc"; installCheckPhase = '' runHook preInstallCheck ldd "$out/bin/cargo-cbuild" | grep libcurl.so runHook postInstallCheck ''; meta = with lib; { description = "A cargo subcommand to build and install C-ABI compatibile dynamic and static libraries"; longDescription = '' Cargo C-ABI helpers. A cargo applet that produces and installs a correct pkg-config file, a static library and a dynamic library, and a C header to be used by any C (and C-compatible) software. ''; homepage = "https://github.com/lu-zero/cargo-c"; changelog = "https://github.com/lu-zero/cargo-c/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ ]; }; }