{ callPackage, lib, stdenv, fetchFromGitHub, rustPlatform, darwin, libiconv, testers, nix-update-script, maturin, }: rustPlatform.buildRustPackage rec { pname = "maturin"; version = "1.7.0"; src = fetchFromGitHub { owner = "PyO3"; repo = "maturin"; rev = "v${version}"; hash = "sha256-SjINeNtCbyMp3U+Op7ey+8lV7FYxLVpmO5g1a01ouBs="; }; cargoHash = "sha256-xJafCgpCeihyORj3gIVUus74vu9h3N1xuyKvkxSqYK4="; buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security libiconv ]; # Requires network access, fails in sandbox. doCheck = false; passthru = { tests = { version = testers.testVersion { package = maturin; }; pyo3 = callPackage ./pyo3-test { }; }; updateScript = nix-update-script { }; }; meta = { description = "Build and publish Rust crates Python packages"; longDescription = '' Build and publish Rust crates with PyO3, rust-cpython, and cffi bindings as well as Rust binaries as Python packages. This project is meant as a zero-configuration replacement for setuptools-rust and Milksnake. It supports building wheels for Python and can upload them to PyPI. ''; homepage = "https://github.com/PyO3/maturin"; changelog = "https://github.com/PyO3/maturin/blob/v${version}/Changelog.md"; license = with lib.licenses; [ asl20 # or mit ]; maintainers = with lib.maintainers; [ getchoo ]; mainProgram = "maturin"; }; }