diff --git a/pkgs/development/python-modules/ggml-python/default.nix b/pkgs/development/python-modules/ggml-python/default.nix new file mode 100644 index 000000000000..e8d9ba375597 --- /dev/null +++ b/pkgs/development/python-modules/ggml-python/default.nix @@ -0,0 +1,102 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + replaceVars, + + # build-system + cmake, + ninja, + scikit-build-core, + + # buildInputs + ggml, + + # dependencies + numpy, + typing-extensions, + + # optional-dependencies + accelerate, + sentencepiece, + torch, + torchaudio, + torchvision, + transformers, + cairosvg, + mkdocs, + mkdocs-material, + mkdocstrings, + pillow, + + # tests + pytestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "ggml-python"; + version = "0.0.37"; + pyproject = true; + + src = fetchFromGitHub { + owner = "abetlen"; + repo = "ggml-python"; + tag = "v${finalAttrs.version}"; + # ggml-python expects an older version of ggml than pkgs.ggml's + fetchSubmodules = true; + hash = "sha256-QFpUGQ8m4c0SpHWnHhoyPdQkcywBToeLahDtG+JMcmA="; + }; + + build-system = [ + cmake + ninja + scikit-build-core + ]; + dontUseCmakeConfigure = true; + + buildInputs = [ + ggml + ]; + + dependencies = [ + numpy + typing-extensions + ]; + + optional-dependencies = { + convert = [ + accelerate + numpy + sentencepiece + torch + torchaudio + torchvision + transformers + ]; + docs = [ + cairosvg + mkdocs + mkdocs-material + mkdocstrings + pillow + ]; + }; + + pythonImportsCheck = [ "ggml" ]; + + preCheck = '' + rm -rf ggml + ''; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Python bindings for ggml"; + homepage = "https://github.com/abetlen/ggml-python"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 56376101a6cb..e8cb7b69dc79 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6111,6 +6111,8 @@ self: super: with self; { gftools = callPackage ../development/python-modules/gftools { }; + ggml-python = callPackage ../development/python-modules/ggml-python { }; + gguf = callPackage ../development/python-modules/gguf { }; ghapi = callPackage ../development/python-modules/ghapi { };