diff --git a/pkgs/by-name/ll/llm/package.nix b/pkgs/by-name/ll/llm/package.nix index 1e918f81356d..03e745890117 100644 --- a/pkgs/by-name/ll/llm/package.nix +++ b/pkgs/by-name/ll/llm/package.nix @@ -15,6 +15,7 @@ enable-llm-openai-plugin ? false, enable-llm-openrouter ? false, enable-llm-venice ? false, + enable-llm-video-frames ? false, }: let @@ -35,6 +36,7 @@ let llm-openai-plugin llm-openrouter llm-venice + llm-video-frames ; in @@ -55,6 +57,7 @@ toPythonApplication ( ++ lib.optionals enable-llm-ollama [ llm-ollama ] ++ lib.optionals enable-llm-openai-plugin [ llm-openai-plugin ] ++ lib.optionals enable-llm-openrouter [ llm-openrouter ] - ++ lib.optionals enable-llm-venice [ llm-venice ]; + ++ lib.optionals enable-llm-venice [ llm-venice ] + ++ lib.optionals enable-llm-video-frames [ llm-video-frames ]; }) ) diff --git a/pkgs/development/python-modules/llm-video-frames/default.nix b/pkgs/development/python-modules/llm-video-frames/default.nix new file mode 100644 index 000000000000..5572eaad4ab6 --- /dev/null +++ b/pkgs/development/python-modules/llm-video-frames/default.nix @@ -0,0 +1,41 @@ +{ + lib, + callPackage, + buildPythonPackage, + fetchFromGitHub, + setuptools, + llm, +}: + +buildPythonPackage rec { + pname = "llm-video-frames"; + version = "0.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "simonw"; + repo = "llm-video-frames"; + tag = version; + hash = "sha256-brTyBymoFuvSQzsD/4aWzFGCrh3yEmWbpsUNGKT9dcU="; + }; + + build-system = [ + setuptools + llm + ]; + dependencies = [ ]; + + pythonImportsCheck = [ "llm_video_frames" ]; + + passthru.tests = { + llm-plugin = callPackage ./tests/llm-plugin.nix { }; + }; + + meta = { + description = "LLM plugin to turn a video into individual frames"; + homepage = "https://github.com/simonw/llm-video-frames"; + changelog = "https://github.com/simonw/llm-video-frames/releases/tag/${version}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ philiptaron ]; + }; +} diff --git a/pkgs/development/python-modules/llm-video-frames/tests/llm-plugin.nix b/pkgs/development/python-modules/llm-video-frames/tests/llm-plugin.nix new file mode 100644 index 000000000000..0d72352fe75d --- /dev/null +++ b/pkgs/development/python-modules/llm-video-frames/tests/llm-plugin.nix @@ -0,0 +1,22 @@ +{ + runCommand, + python, + yq, +}: +let + venv = python.withPackages (ps: [ + ps.llm + ps.llm-video-frames + ]); +in +runCommand "llm-video-frames-test-llm-plugin" + { + nativeBuildInputs = [ + venv + yq + ]; + } + '' + llm plugins | yq --exit-status 'any(.name == "llm-video-frames")' + touch "$out" + '' diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 06d1b4c68179..3934fc840e47 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8322,6 +8322,8 @@ self: super: with self; { llm-venice = callPackage ../development/python-modules/llm-venice { }; + llm-video-frames = callPackage ../development/python-modules/llm-video-frames { }; + llmx = callPackage ../development/python-modules/llmx { }; llvmlite = callPackage ../development/python-modules/llvmlite {