From a156ea7687ad131ce5b60a2801e337fd30e57681 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Mon, 11 May 2026 17:17:02 -0700 Subject: [PATCH] =?UTF-8?q?C1:=20shower=20=E2=80=94=20copy=20wheel=20to=20?= =?UTF-8?q?clean=20filename=20before=20pip=20install?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nix store paths embed a 32-char hash prefix, which pip rejects as "Invalid wheel filename (invalid version)". Copy the wheel into TMPDIR under its bare name first, then install from there. Co-Authored-By: Claude Opus 4.7 (1M context) --- containers/shower/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/containers/shower/default.nix b/containers/shower/default.nix index 6e97d6b..4d055bf 100644 --- a/containers/shower/default.nix +++ b/containers/shower/default.nix @@ -82,10 +82,16 @@ let ${python}/bin/python -m venv "$TMPDIR/venv" "$TMPDIR/venv/bin/pip" install --upgrade pip + + # Nix store paths embed a 32-char hash prefix, which pip's wheel + # filename parser rejects ("Invalid wheel filename"). Copy to a + # clean filename in TMPDIR before installing. + cp ${showerWheel} "$TMPDIR/${showerWheel.name}" + "$TMPDIR/venv/bin/pip" install \ --no-cache-dir \ --index-url=https://pypi.ops.eblu.me/root/pypi/+simple/ \ - ${showerWheel} \ + "$TMPDIR/${showerWheel.name}" \ gunicorn runHook postBuild