{ pkgs, lib, ... }: let # Define all packages in a recursive attribute set pythonPackages = rec { llm = pkgs.python3.pkgs.buildPythonPackage rec { pname = "llm"; version = "0.24.2"; format = "setuptools"; src = pkgs.fetchurl { url = "https://files.pythonhosted.org/packages/source/l/llm/llm-0.24.2.tar.gz"; sha256 = "sha256-4U8nIhg4hM4JaSIBtUzdlhlCSS8Nk8p0mmLQKzuL9Do="; }; # Dependencies propagatedBuildInputs = with pkgs.python3.pkgs; [ pyyaml click click-default-group condense-json openai pip pluggy puremagic pydantic python-ulid setuptools sqlite-migrate sqlite-utils ]; # Disable tests - enable if you have specific test dependencies doCheck = false; # Basic import check pythonImportsCheck = [ "llm" ]; meta = with lib; { description = "CLI utility and Python library for interacting with Large Language Models from organizations like OpenAI, Anthropic and Gemini plus local models installed on your own machine."; homepage = "https://github.com/simonw/llm"; license = licenses.asl20; }; }; # Note, these are available in nixpkgs unstable, but are still behind the latest versions llm-anthropic = pkgs.python3.pkgs.buildPythonPackage rec { pname = "llm-anthropic"; version = "0.15.1"; format = "pyproject"; src = pkgs.fetchurl { url = "https://files.pythonhosted.org/packages/source/l/llm_anthropic/llm_anthropic-0.15.1.tar.gz"; sha256 = "sha256-C8xNs4oS51YxAn1iJkk8j4sJ5dO0pVOwIiP4mv/MnQk="; }; nativeBuildInputs = with pkgs.python3.pkgs; [ setuptools wheel ]; # Dependencies propagatedBuildInputs = with pkgs.python3.pkgs; [ anthropic llm # Use the llm we defined above ]; # Disable tests - enable if you have specific test dependencies doCheck = false; # Basic import check pythonImportsCheck = [ "llm_anthropic" ]; meta = with lib; { description = "LLM access to models by Anthropic, including the Claude series"; homepage = "https://github.com/simonw/llm-anthropic"; license = licenses.asl20; }; }; }; in pythonPackages