switch all inlined deps to format=wheel (avoid monorepo/build-system/tag issues)

This commit is contained in:
2026-05-27 19:29:43 +02:00
parent ad923c5777
commit 256a9b025c

View File

@@ -6,285 +6,173 @@
}: }:
let let
# ── OpenTelemetry Python monorepo (api, sdk, proto, exporter-otlp-*) ── # Helper: fetch a wheel from PyPI (avoids sdist 404s, build-system issues, monorepo complexity)
otelPythonSrc = fetchFromGitHub { fetchWheel = { pname, version, hash, propagatedBuildInputs ? [ ], meta ? { } }:
owner = "open-telemetry"; python3Packages.buildPythonPackage {
repo = "opentelemetry-python"; inherit pname version;
rev = "v1.39.1"; format = "wheel";
hash = "sha256-GEcGADUdci6W2vfeXt/rjQOL/7r4RBxgyq+vy6tivBc="; src = fetchPypi {
}; inherit pname version hash;
format = "wheel";
dist = "py3";
python = "py3";
};
inherit propagatedBuildInputs;
doCheck = false;
inherit meta;
};
# ── OpenTelemetry Contrib monorepo (instrumentation-*, util-http) ── pythonvcard4 = fetchWheel {
otelContribSrc = fetchFromGitHub {
owner = "open-telemetry";
repo = "opentelemetry-python-contrib";
rev = "v0.60b1";
hash = "sha256-IDTSGsHQ8cCFvgSO7pDbSSHVNV0OIjjoEN9ZfkaPAvk=";
};
# ── Tier 1: leaf packages ──
pythonvcard4 = python3Packages.buildPythonPackage rec {
pname = "pythonvcard4"; pname = "pythonvcard4";
version = "0.2.0"; version = "0.2.0";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.setuptools python3Packages.wheel ];
src = fetchPypi { inherit pname version; hash = "sha256-I2u6J2nkWWRc+ndkB/8HhWrO1FtDcRa/QN2zm7zv220="; };
doCheck = false;
meta = with lib; { description = "vCard parsing library"; homepage = "https://github.com/GNOME/python-vcard4"; license = licenses.gpl3Plus; }; meta = with lib; { description = "vCard parsing library"; homepage = "https://github.com/GNOME/python-vcard4"; license = licenses.gpl3Plus; };
}; };
prometheus-client = python3Packages.buildPythonPackage rec { prometheus-client = fetchWheel {
pname = "prometheus_client"; pname = "prometheus_client";
version = "0.25.0"; version = "0.25.0";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.setuptools python3Packages.wheel ];
src = fetchPypi { inherit pname version; hash = "sha256-Xjc7dcMa+zyG8aUvoa1HDJqs4YCC057A0vkY0RzJuig="; };
doCheck = false;
meta = with lib; { description = "Prometheus monitoring system client"; homepage = "https://github.com/prometheus/client_python"; license = licenses.asl20; }; meta = with lib; { description = "Prometheus monitoring system client"; homepage = "https://github.com/prometheus/client_python"; license = licenses.asl20; };
}; };
python-json-logger = python3Packages.buildPythonPackage rec { python-json-logger = fetchWheel {
pname = "python-json-logger"; pname = "python-json-logger";
version = "4.1.0"; version = "4.1.0";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ];
src = fetchFromGitHub {
owner = "nhairs";
repo = "python-json-logger";
rev = "v${version}";
hash = "sha256-hJ29rDP04apLf1zaP1vQrYF5xm4GtKZlvno97b7g+hg=";
};
doCheck = false;
meta = with lib; { description = "JSON formatter for python logging"; homepage = "https://github.com/nhairs/python-json-logger"; license = licenses.bsd2; }; meta = with lib; { description = "JSON formatter for python logging"; homepage = "https://github.com/nhairs/python-json-logger"; license = licenses.bsd2; };
}; };
importlib-metadata = python3Packages.buildPythonPackage rec { importlib-metadata = fetchWheel {
pname = "importlib_metadata"; pname = "importlib_metadata";
version = "8.7.1"; version = "8.7.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.setuptools python3Packages.wheel ];
src = fetchPypi { inherit pname version; hash = "sha256-Sf7xrmRAwYIFL0B8jTSmj3Lvw225ypDcARM5jy/d6Ls="; };
propagatedBuildInputs = with python3Packages; [ zipp ]; propagatedBuildInputs = with python3Packages; [ zipp ];
doCheck = false;
meta = with lib; { description = "Read metadata from Python packages"; homepage = "https://github.com/python/importlib_metadata"; license = licenses.asl20; }; meta = with lib; { description = "Read metadata from Python packages"; homepage = "https://github.com/python/importlib_metadata"; license = licenses.asl20; };
}; };
googleapis-common-protos = python3Packages.buildPythonPackage rec { googleapis-common-protos = fetchWheel {
pname = "googleapis-common-protos"; pname = "googleapis-common-protos";
version = "1.75.0"; version = "1.75.0";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.setuptools python3Packages.wheel ];
src = fetchFromGitHub {
owner = "googleapis";
repo = "python-api-common-protos";
rev = "v${version}";
hash = lib.fakeHash;
};
propagatedBuildInputs = with python3Packages; [ protobuf ]; propagatedBuildInputs = with python3Packages; [ protobuf ];
doCheck = false;
meta = with lib; { description = "Common protobufs used in Google APIs"; homepage = "https://github.com/googleapis/python-api-common-protos"; license = licenses.asl20; }; meta = with lib; { description = "Common protobufs used in Google APIs"; homepage = "https://github.com/googleapis/python-api-common-protos"; license = licenses.asl20; };
}; };
opentelemetry-api = python3Packages.buildPythonPackage rec { opentelemetry-api = fetchWheel {
pname = "opentelemetry-api"; pname = "opentelemetry-api";
version = "1.39.1"; version = "1.39.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ deprecated ];
src = otelPythonSrc;
sourceRoot = "${src.name}/opentelemetry-api";
propagatedBuildInputs = with python3Packages; [ deprecated importlib-metadata ];
doCheck = false;
meta = with lib; { description = "OpenTelemetry Python API"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry Python API"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; };
}; };
opentelemetry-proto = python3Packages.buildPythonPackage rec { opentelemetry-proto = fetchWheel {
pname = "opentelemetry-proto"; pname = "opentelemetry-proto";
version = "1.39.1"; version = "1.39.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ];
src = otelPythonSrc;
sourceRoot = "${src.name}/opentelemetry-proto";
propagatedBuildInputs = with python3Packages; [ protobuf ]; propagatedBuildInputs = with python3Packages; [ protobuf ];
doCheck = false;
meta = with lib; { description = "OpenTelemetry Python Proto"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry Python Proto"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; };
}; };
# ── Tier 2 ── opentelemetry-semantic-conventions = fetchWheel {
opentelemetry-semantic-conventions = python3Packages.buildPythonPackage rec {
pname = "opentelemetry-semantic-conventions"; pname = "opentelemetry-semantic-conventions";
version = "0.60b1"; version = "0.60b1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ deprecated ];
src = fetchFromGitHub {
owner = "open-telemetry";
repo = "semantic-conventions";
rev = "v${version}";
hash = lib.fakeHash;
};
sourceRoot = "${src.name}/model";
propagatedBuildInputs = [ opentelemetry-api ] ++ (with python3Packages; [ deprecated ]);
doCheck = false;
meta = with lib; { description = "OpenTelemetry Semantic Conventions"; homepage = "https://github.com/open-telemetry/semantic-conventions"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry Semantic Conventions"; homepage = "https://github.com/open-telemetry/semantic-conventions"; license = licenses.asl20; };
}; };
opentelemetry-sdk = python3Packages.buildPythonPackage rec { opentelemetry-sdk = fetchWheel {
pname = "opentelemetry-sdk"; pname = "opentelemetry-sdk";
version = "1.39.1"; version = "1.39.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ typing-extensions ];
src = otelPythonSrc;
sourceRoot = "${src.name}/opentelemetry-sdk";
propagatedBuildInputs = [ opentelemetry-api opentelemetry-semantic-conventions ] ++ (with python3Packages; [ typing-extensions ]);
doCheck = false;
meta = with lib; { description = "OpenTelemetry Python SDK"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry Python SDK"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; };
}; };
x-wr-timezone = python3Packages.buildPythonPackage rec { x-wr-timezone = fetchWheel {
pname = "x_wr_timezone"; pname = "x_wr_timezone";
version = "2.0.1"; version = "2.0.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.setuptools python3Packages.wheel ]; propagatedBuildInputs = with python3Packages; [ icalendar click ];
src = fetchPypi { inherit pname version; hash = "sha256-kWbEDm/9TA7eurw1ThoeLP/Bu0c/iAB2lHk3V2hcyMM="; };
propagatedBuildInputs = with python3Packages; [ icalendar ];
doCheck = false;
meta = with lib; { description = "X-WR-TIMEZONE iCalendar property handling"; homepage = "https://github.com/niccokunzmann/x-wr-timezone"; license = licenses.lgpl3Plus; }; meta = with lib; { description = "X-WR-TIMEZONE iCalendar property handling"; homepage = "https://github.com/niccokunzmann/x-wr-timezone"; license = licenses.lgpl3Plus; };
}; };
opentelemetry-util-http = python3Packages.buildPythonPackage rec { opentelemetry-util-http = fetchWheel {
pname = "opentelemetry-util-http"; pname = "opentelemetry-util-http";
version = "0.60b1"; version = "0.60b1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ];
src = otelContribSrc;
sourceRoot = "${src.name}/util/opentelemetry-util-http";
doCheck = false;
meta = with lib; { description = "OpenTelemetry HTTP utilities"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry HTTP utilities"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; };
}; };
opentelemetry-exporter-otlp-proto-common = python3Packages.buildPythonPackage rec { opentelemetry-exporter-otlp-proto-common = fetchWheel {
pname = "opentelemetry-exporter-otlp-proto-common"; pname = "opentelemetry-exporter-otlp-proto-common";
version = "1.39.1"; version = "1.39.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ];
src = otelPythonSrc;
sourceRoot = "${src.name}/exporter/opentelemetry-exporter-otlp-proto-common";
propagatedBuildInputs = [ opentelemetry-proto ];
doCheck = false;
meta = with lib; { description = "OpenTelemetry OTLP exporter proto common"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry OTLP exporter proto common"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; };
}; };
# ── Tier 3 ── opentelemetry-instrumentation = fetchWheel {
opentelemetry-instrumentation = python3Packages.buildPythonPackage rec {
pname = "opentelemetry-instrumentation"; pname = "opentelemetry-instrumentation";
version = "0.60b1"; version = "0.60b1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ wrapt packaging ];
src = otelContribSrc;
sourceRoot = "${src.name}/opentelemetry-instrumentation";
propagatedBuildInputs = [ opentelemetry-api opentelemetry-semantic-conventions ] ++ (with python3Packages; [ wrapt packaging ]);
doCheck = false;
meta = with lib; { description = "OpenTelemetry instrumentation base"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry instrumentation base"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; };
}; };
recurring-ical-events = python3Packages.buildPythonPackage rec { recurring-ical-events = fetchWheel {
pname = "recurring-ical-events"; pname = "recurring-ical-events";
version = "3.8.2"; version = "3.8.2";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ icalendar python-dateutil ];
src = fetchFromGitHub {
owner = "niccokunzmann";
repo = "python-recurring-ical-events";
rev = "v${version}";
hash = "sha256-/xTv/JovC8IVZz14ygnEL5vg/W8xR4Ie78hTi+gG58M=";
};
propagatedBuildInputs = [ x-wr-timezone ] ++ (with python3Packages; [ icalendar python-dateutil ]);
doCheck = false;
meta = with lib; { description = "Recurring iCalendar event expander"; homepage = "https://github.com/niccokunzmann/python-recurring-ical-events"; license = licenses.lgpl3Plus; }; meta = with lib; { description = "Recurring iCalendar event expander"; homepage = "https://github.com/niccokunzmann/python-recurring-ical-events"; license = licenses.lgpl3Plus; };
}; };
opentelemetry-exporter-otlp-proto-grpc = python3Packages.buildPythonPackage rec { opentelemetry-exporter-otlp-proto-grpc = fetchWheel {
pname = "opentelemetry-exporter-otlp-proto-grpc"; pname = "opentelemetry-exporter-otlp-proto-grpc";
version = "1.39.1"; version = "1.39.1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ grpcio deprecated ];
src = otelPythonSrc;
sourceRoot = "${src.name}/exporter/opentelemetry-exporter-otlp-proto-grpc";
propagatedBuildInputs = [ opentelemetry-api opentelemetry-sdk opentelemetry-proto opentelemetry-exporter-otlp-proto-common googleapis-common-protos ] ++ (with python3Packages; [ grpcio deprecated ]);
doCheck = false;
meta = with lib; { description = "OpenTelemetry OTLP gRPC exporter"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry OTLP gRPC exporter"; homepage = "https://github.com/open-telemetry/opentelemetry-python"; license = licenses.asl20; };
}; };
qdrant-client = python3Packages.buildPythonPackage rec { qdrant-client = fetchWheel {
pname = "qdrant-client"; pname = "qdrant-client";
version = "1.18.0"; version = "1.18.0";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.poetry-core ];
src = fetchFromGitHub {
owner = "qdrant";
repo = "qdrant-client";
rev = "v${version}";
hash = "sha256-ZBP1D67u+KZmBi614nuToauI+xhdH1PKD3g6xRfFQxk=";
};
propagatedBuildInputs = with python3Packages; [ grpcio httpx numpy portalocker protobuf pydantic urllib3 ]; propagatedBuildInputs = with python3Packages; [ grpcio httpx numpy portalocker protobuf pydantic urllib3 ];
doCheck = false;
meta = with lib; { description = "Qdrant vector search engine client"; homepage = "https://github.com/qdrant/qdrant-client"; license = licenses.asl20; }; meta = with lib; { description = "Qdrant vector search engine client"; homepage = "https://github.com/qdrant/qdrant-client"; license = licenses.asl20; };
}; };
# ── Tier 4 ── opentelemetry-instrumentation-asgi = fetchWheel {
opentelemetry-instrumentation-asgi = python3Packages.buildPythonPackage rec {
pname = "opentelemetry-instrumentation-asgi"; pname = "opentelemetry-instrumentation-asgi";
version = "0.60b1"; version = "0.60b1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ asgiref ];
src = otelContribSrc;
sourceRoot = "${src.name}/instrumentation/opentelemetry-instrumentation-asgi";
propagatedBuildInputs = [ opentelemetry-api opentelemetry-instrumentation opentelemetry-semantic-conventions opentelemetry-util-http ] ++ (with python3Packages; [ asgiref ]);
doCheck = false;
meta = with lib; { description = "OpenTelemetry ASGI instrumentation"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry ASGI instrumentation"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; };
}; };
opentelemetry-instrumentation-httpx = python3Packages.buildPythonPackage rec { opentelemetry-instrumentation-httpx = fetchWheel {
pname = "opentelemetry-instrumentation-httpx"; pname = "opentelemetry-instrumentation-httpx";
version = "0.60b1"; version = "0.60b1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ]; propagatedBuildInputs = with python3Packages; [ httpx wrapt ];
src = otelContribSrc;
sourceRoot = "${src.name}/instrumentation/opentelemetry-instrumentation-httpx";
propagatedBuildInputs = [ opentelemetry-api opentelemetry-instrumentation opentelemetry-semantic-conventions opentelemetry-util-http ] ++ (with python3Packages; [ httpx wrapt ]);
doCheck = false;
meta = with lib; { description = "OpenTelemetry HTTPX instrumentation"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry HTTPX instrumentation"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; };
}; };
opentelemetry-instrumentation-logging = python3Packages.buildPythonPackage rec { opentelemetry-instrumentation-logging = fetchWheel {
pname = "opentelemetry-instrumentation-logging"; pname = "opentelemetry-instrumentation-logging";
version = "0.60b1"; version = "0.60b1";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.hatchling ];
src = otelContribSrc;
sourceRoot = "${src.name}/instrumentation/opentelemetry-instrumentation-logging";
propagatedBuildInputs = [ opentelemetry-api opentelemetry-instrumentation ];
doCheck = false;
meta = with lib; { description = "OpenTelemetry logging instrumentation"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; }; meta = with lib; { description = "OpenTelemetry logging instrumentation"; homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib"; license = licenses.asl20; };
}; };
langchain-text-splitters = python3Packages.buildPythonPackage rec { langchain-text-splitters = fetchWheel {
pname = "langchain-text-splitters"; pname = "langchain-text-splitters";
version = "1.1.2"; version = "1.1.2";
pyproject = true; hash = lib.fakeHash;
build-system = [ python3Packages.poetry-core ];
src = fetchFromGitHub {
owner = "langchain-ai";
repo = "langchain";
rev = "langchain-text-splitters==${version}";
hash = "sha256-AiRl8N2V2UfYLZfqxM8DHZmT76rH19I1gFyOYc/mpYY=";
};
sourceRoot = "${src.name}/libs/text-splitters";
propagatedBuildInputs = with python3Packages; [ langchain-core ]; propagatedBuildInputs = with python3Packages; [ langchain-core ];
doCheck = false;
meta = with lib; { description = "LangChain text splitting utilities"; homepage = "https://github.com/langchain-ai/langchain"; license = licenses.mit; }; meta = with lib; { description = "LangChain text splitting utilities"; homepage = "https://github.com/langchain-ai/langchain"; license = licenses.mit; };
}; };
@@ -304,11 +192,13 @@ python3Packages.buildPythonApplication rec {
build-system = [ python3Packages.hatchling ]; build-system = [ python3Packages.hatchling ];
dependencies = with python3Packages; [ dependencies = with python3Packages; [
# ── nixpkgs packages ──
mcp httpx pillow icalendar pydantic click caldav pyjwt mcp httpx pillow icalendar pydantic click caldav pyjwt
aiosqlite alembic authlib fastembed anthropic boto3 starlette aiosqlite alembic authlib fastembed anthropic boto3 starlette
jinja2 markdownify pymupdf pymupdf4llm openai dynaconf jinja2 markdownify pymupdf pymupdf4llm openai dynaconf
mistralai sqlalchemy mistralai sqlalchemy
# ── Inlined wheel packages ──
pythonvcard4 prometheus-client python-json-logger importlib-metadata pythonvcard4 prometheus-client python-json-logger importlib-metadata
googleapis-common-protos opentelemetry-api opentelemetry-proto googleapis-common-protos opentelemetry-api opentelemetry-proto
opentelemetry-semantic-conventions opentelemetry-sdk opentelemetry-semantic-conventions opentelemetry-sdk
@@ -326,7 +216,7 @@ python3Packages.buildPythonApplication rec {
--replace-fail '"mcp[cli]>=1.27,<1.28"' '"mcp"' \ --replace-fail '"mcp[cli]>=1.27,<1.28"' '"mcp"' \
--replace-fail '"pymupdf4llm>=0.2.2"' '"pymupdf4llm"' \ --replace-fail '"pymupdf4llm>=0.2.2"' '"pymupdf4llm"' \
--replace-fail '"pymupdf>=1.26.6"' '"pymupdf"' \ --replace-fail '"pymupdf>=1.26.6"' '"pymupdf"' \
--replace-fail '"qrant-client>=1.17.0"' '"qdrant-client"' \ --replace-fail '"qdrant-client>=1.17.0"' '"qdrant-client"' \
--replace-fail '"opentelemetry-api>=1.28.2"' '"opentelemetry-api"' \ --replace-fail '"opentelemetry-api>=1.28.2"' '"opentelemetry-api"' \
--replace-fail '"opentelemetry-sdk>=1.28.2"' '"opentelemetry-sdk"' \ --replace-fail '"opentelemetry-sdk>=1.28.2"' '"opentelemetry-sdk"' \
--replace-fail '"opentelemetry-instrumentation-asgi>=0.49b2"' '"opentelemetry-instrumentation-asgi"' \ --replace-fail '"opentelemetry-instrumentation-asgi>=0.49b2"' '"opentelemetry-instrumentation-asgi"' \