1{ 2 lib, 3 buildPythonPackage, 4 fetchFromGitHub, 5 hatchling, 6 setuptools-scm, 7 # python dependencies 8 docling, 9 docling-jobkit, 10 docling-mcp, 11 fastapi, 12 httpx, 13 pydantic-settings, 14 python-multipart, 15 scalar-fastapi, 16 uvicorn, 17 websockets, 18 tesserocr, 19 typer, 20 rapidocr, 21 onnxruntime, 22 torch, 23 torchvision, 24 gradio, 25 nodejs, 26 which, 27 withUI ? false, 28 withTesserocr ? false, 29 withRapidocr ? false, 30 withCPU ? false, 31}: 32 33buildPythonPackage rec { 34 pname = "docling-serve"; 35 version = "1.5.1"; 36 pyproject = true; 37 38 src = fetchFromGitHub { 39 owner = "docling-project"; 40 repo = "docling-serve"; 41 tag = "v${version}"; 42 hash = "sha256-JUHXrvsZBF/WHxsMT1xkPzpuX483RxF3ZlO+/NUMZ/8="; 43 }; 44 45 build-system = [ 46 hatchling 47 setuptools-scm 48 ]; 49 50 pythonRelaxDeps = [ 51 "websockets" 52 ]; 53 54 pythonRemoveDeps = [ 55 "mlx-vlm" # not yet available on nixpkgs 56 ]; 57 58 dependencies = [ 59 docling 60 docling-jobkit 61 docling-mcp 62 fastapi 63 httpx 64 pydantic-settings 65 python-multipart 66 scalar-fastapi 67 typer 68 uvicorn 69 websockets 70 ] 71 ++ lib.optionals withUI optional-dependencies.ui 72 ++ lib.optionals withTesserocr optional-dependencies.tesserocr 73 ++ lib.optionals withRapidocr optional-dependencies.rapidocr 74 ++ lib.optionals withCPU optional-dependencies.cpu; 75 76 optional-dependencies = { 77 ui = [ 78 gradio 79 nodejs 80 which 81 ]; 82 tesserocr = [ 83 tesserocr 84 ]; 85 rapidocr = [ 86 rapidocr 87 onnxruntime 88 ]; 89 cpu = [ 90 torch 91 torchvision 92 ]; 93 }; 94 95 pythonImportsCheck = [ 96 "docling_serve" 97 ]; 98 99 # Require network 100 doCheck = false; 101 102 meta = { 103 changelog = "https://github.com/docling-project/docling-serve/blob/${src.tag}/CHANGELOG.md"; 104 description = "Running Docling as an API service"; 105 homepage = "https://github.com/docling-project/docling-serve"; 106 license = lib.licenses.mit; 107 mainProgram = "docling-serve"; 108 maintainers = with lib.maintainers; [ ]; 109 }; 110}