diff --git a/pkgs/development/python-modules/ckzg/default.nix b/pkgs/development/python-modules/ckzg/default.nix new file mode 100644 index 000000000000..135c354d1224 --- /dev/null +++ b/pkgs/development/python-modules/ckzg/default.nix @@ -0,0 +1,60 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + clang, + # dependencies + pyyaml, + blst, + # checkPhase dependencies + python, +}: + +buildPythonPackage rec { + pname = "ckzg"; + version = "2.0.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ethereum"; + repo = "c-kzg-4844"; + tag = "v${version}"; + hash = "sha256-kOoodri80p5tz8RlMz6mqsZRAuXBxZm4vr+VWJEtfA0="; + }; + + build-system = [ setuptools ]; + + nativeBuildInputs = [ clang ]; + + dependencies = [ + pyyaml + blst + ]; + + postPatch = + # unvendor "blst" + '' + substituteInPlace setup.py \ + --replace-fail '"build_ext": CustomBuild,' "" + ''; + + checkPhase = '' + runHook preCheck + + cd bindings/python + ${python.interpreter} tests.py + + runHook postCheck + ''; + + pythonImportsCheck = [ "ckzg" ]; + + meta = { + description = "Minimal implementation of the Polynomial Commitments API for EIP-4844 and EIP-7594"; + homepage = "https://github.com/ethereum/c-kzg-4844"; + changelog = "https://github.com/ethereum/c-kzg-4844/releases/tag/v${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ hellwolf ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c0b4b6e5bfd4..77018732cb41 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2332,6 +2332,8 @@ self: super: with self; { ckcc-protocol = callPackage ../development/python-modules/ckcc-protocol { }; + ckzg = callPackage ../development/python-modules/ckzg { }; + clarabel = callPackage ../development/python-modules/clarabel { }; clarifai = callPackage ../development/python-modules/clarifai { };