diff --git a/pkgs/by-name/ll/llm/package.nix b/pkgs/by-name/ll/llm/package.nix index 4e67480d7d64..6f57ce6bbda3 100644 --- a/pkgs/by-name/ll/llm/package.nix +++ b/pkgs/by-name/ll/llm/package.nix @@ -6,6 +6,7 @@ enable-llm-command-r ? false, enable-llm-deepseek ? false, enable-llm-fragments-github ? false, + enable-llm-fragments-pypi ? false, enable-llm-gemini ? false, enable-llm-grok ? false, enable-llm-groq ? false, @@ -31,6 +32,7 @@ let llm-command-r llm-deepseek llm-fragments-github + llm-fragments-pypi llm-gemini llm-gguf llm-grok @@ -57,6 +59,7 @@ toPythonApplication ( ++ lib.optionals enable-llm-cmd [ llm-command-r ] ++ lib.optionals enable-llm-deepseek [ llm-deepseek ] ++ lib.optionals enable-llm-fragments-github [ llm-fragments-github ] + ++ lib.optionals enable-llm-fragments-pypi [ llm-fragments-pypi ] ++ lib.optionals enable-llm-gemini [ llm-gemini ] ++ lib.optionals enable-llm-gguf [ llm-gguf ] ++ lib.optionals enable-llm-grok [ llm-grok ] diff --git a/pkgs/development/python-modules/llm-fragments-pypi/default.nix b/pkgs/development/python-modules/llm-fragments-pypi/default.nix new file mode 100644 index 000000000000..8c7dc9f9168a --- /dev/null +++ b/pkgs/development/python-modules/llm-fragments-pypi/default.nix @@ -0,0 +1,42 @@ +{ + lib, + callPackage, + buildPythonPackage, + fetchFromGitHub, + hatchling, + llm, + httpx, +}: + +buildPythonPackage rec { + pname = "llm-fragments-pypi"; + version = "0.1.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "samueldg"; + repo = "llm-fragments-pypi"; + tag = version; + hash = "sha256-1XqAmuZ1WMHD6JbLbLsK9K4Uf3FvvKJD4mn1G2J/3C8="; + }; + + build-system = [ + hatchling + llm + ]; + dependencies = [ httpx ]; + + pythonImportsCheck = [ "llm_fragments_pypi" ]; + + passthru.tests = { + llm-plugin = callPackage ./tests/llm-plugin.nix { }; + }; + + meta = { + description = "LLM fragments plugin for PyPI packages metadata"; + homepage = "https://github.com/samueldg/llm-fragments-pypi"; + changelog = "https://github.com/samueldg/llm-fragments-pypi/releases/tag/${version}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ philiptaron ]; + }; +} diff --git a/pkgs/development/python-modules/llm-fragments-pypi/tests/llm-plugin.nix b/pkgs/development/python-modules/llm-fragments-pypi/tests/llm-plugin.nix new file mode 100644 index 000000000000..96329d01bf6b --- /dev/null +++ b/pkgs/development/python-modules/llm-fragments-pypi/tests/llm-plugin.nix @@ -0,0 +1,22 @@ +{ + runCommand, + python, + yq, +}: +let + venv = python.withPackages (ps: [ + ps.llm + ps.llm-fragments-pypi + ]); +in +runCommand "llm-fragments-pypi-test-llm-plugin" + { + nativeBuildInputs = [ + venv + yq + ]; + } + '' + llm plugins | yq --exit-status 'any(.name == "llm-fragments-pypi")' + touch "$out" + '' diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 84c80e42193d..f50ae4b7cd99 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8304,6 +8304,8 @@ self: super: with self; { llm-fragments-github = callPackage ../development/python-modules/llm-fragments-github { }; + llm-fragments-pypi = callPackage ../development/python-modules/llm-fragments-pypi { }; + llm-gemini = callPackage ../development/python-modules/llm-gemini { }; llm-gguf = callPackage ../development/python-modules/llm-gguf { };