{ pkgs, lib, }: let version = "4.9.9"; src = pkgs.fetchFromGitHub { owner = "kreuzberg-dev"; repo = "kreuzberg"; rev = "v${version}"; hash = "sha256-eu0qjyxoRiDLHsBLPPPAqb/DKVaPzqgP/4hHPjgOBoM="; }; in pkgs.rustPlatform.buildRustPackage { pname = "kreuzberg-cli"; inherit version src; cargoDeps = pkgs.rustPlatform.fetchCargoVendor { inherit src; hash = "sha256-j1tmjQ7KQQAMz3QxhQGTGracMqqdcaX/+74lpUfU/kE="; }; buildFeatures = [ "all" ]; doCheck = false; nativeBuildInputs = [ pkgs.cmake pkgs.makeWrapper pkgs.pkg-config ]; buildInputs = [ pkgs.pdfium-binaries pkgs.openssl pkgs.onnxruntime pkgs.tesseract pkgs.leptonica ]; dontUseCmakeConfigure = true; env = { KREUZBERG_PDFIUM_PREBUILT = pkgs.pdfium-binaries; ORT_LIB_PATH = "${pkgs.onnxruntime}/lib"; ORT_PREFER_DYNAMIC_LINK = "1"; }; postPatch = '' substituteInPlace crates/kreuzberg/Cargo.toml \ --replace 'kreuzberg-tesseract = { path = "../kreuzberg-tesseract", version = "4.9.9", optional = true }' \ 'kreuzberg-tesseract = { path = "../kreuzberg-tesseract", version = "4.9.9", optional = true, default-features = false, features = ["dynamic-linking"] }' for f in crates/kreuzberg-tesseract/src/*.rs; do substituteInPlace "$f" \ --replace 'any(feature = "build-tesseract", feature = "build-tesseract-wasm")' \ 'any(feature = "build-tesseract", feature = "build-tesseract-wasm", feature = "dynamic-linking")' done ''; postFixup = '' wrapProgram $out/bin/kreuzberg \ --prefix LD_LIBRARY_PATH : ${ lib.makeLibraryPath [ pkgs.tesseract pkgs.onnxruntime ] } \ --set TESSDATA_PREFIX ${pkgs.tesseract}/share ln -s kreuzberg $out/bin/kreuzberg-cli ''; meta = { description = "High-performance document intelligence CLI with a Rust core"; homepage = "https://github.com/kreuzberg-dev/kreuzberg"; license = lib.licenses.unfree; platforms = [ "x86_64-linux" ]; mainProgram = "kreuzberg"; }; }