Repository navigation
Conversation
Upstream ComfyUI calls Python 3.13 "very well supported" and ships it in its portable builds, and it is the default Python of nixpkgs. Linux moves from 3.12 to 3.13. macOS stays on 3.12, because the pinned PyTorch 2.5.1 has no cp313 wheel for macOS. The interpreter is now selected in one place, `nix/python.nix`. Interpreter-specific wheel pins in `nix/versions.nix` become a URL template, with one hash per interpreter tag. `nix/python-overrides.nix` derives the tag from the selected Python, so the next bump only has to add hashes. A new `wheel-pins` check fails evaluation when a pin lacks the hash for the selected Python. The launcher derives the venv paths from the interpreter instead of hardcoding `python3.12`. It rewrites `pyvenv.cfg` and the interpreter links on every start, since both name a store path that changes with each update. It also prints a note when site-packages of another Python version are left in the venv, because packages installed by ComfyUI-Manager under 3.12 are not visible to 3.13. The bundled PyAV wheel goes from 17.0.0 to 17.0.1. With 17.0.0 on Python 3.13, imageio's `test_lagging_video_stream` hangs and fails the build every time. Overrides that Linux no longer needs on nixpkgs' default Python are reduced. On Linux the affected packages now come from the binary cache, or build with their test suites enabled. - macOS only, grouped in one block: open-clip-torch, torchmetrics, inline-snapshot, backrefs - macOS only, same block: jupyter-server, ultralytics, mss, filterpy - Only where PyTorch comes from a pre-built wheel: timm, torchsde - Removed: albumentations, which nixpkgs dropped - Removed: bitsandbytes, which nixpkgs already builds with ninja - Removed: `allowBrokenPredicate` for open-clip-torch, which is no longer marked broken Tested on x86_64-linux with an RTX 5090. - `nix flake check` passes, building the CPU, CUDA, ROCm 7.1 and XPU packages - The ROCm 7.2 package builds - The CUDA package starts and loads all bundled custom nodes - It registers the same 1693 nodes as the 3.12 build - A model-free workflow that saves PNG and h264 output succeeds macOS is only verified to evaluate. The PyAV bump and the `allowBrokenPredicate` removal also affect it.
There was a problem hiding this comment.
🟡 Changes recommended
The manual-linting heading in CLAUDE.md is joined to the wheel-pins bullet, making the manual commands appear to belong to the CI-check list.
1 open issue
What changed in this PR
Moves Linux builds to Python 3.13 while keeping macOS on Python 3.12 for compatibility with its pinned PyTorch wheels.
Changes:
- Centralizes interpreter selection and adds interpreter-specific wheel hashes with an evaluation check.
- Updates launcher virtual-environment paths and interpreter links, with guidance for reinstalling older dependencies.
- Upgrades PyAV to 17.0.1 and narrows package overrides that Linux no longer needs.
| File | Description |
|---|---|
| README.md | Updates the documented Python versions. |
| pyproject.toml | Updates the project description to Python 3.13. |
| nix/versions.nix | Adds wheel URL templates and Python 3.13 hashes. |
| nix/python.nix | Centralizes platform-specific interpreter selection. |
| nix/python-overrides.nix | Resolves wheel pins, upgrades PyAV, and narrows overrides. |
| nix/packages.nix | Adapts the launcher and virtual environment to the selected Python. |
| nix/checks.nix | Adds wheel-hash validation and adjusts the mss assertion. |
| flake.nix | Uses shared interpreter selection and removes obsolete broken-package allowances. |
| CLAUDE.md | Documents interpreter selection and the wheel-pin check. |
| CHANGELOG.md | Records the migration and dependency changes. |
Review effort: Balanced
The `wheel-pins` bullet in `CLAUDE.md` had lost its trailing newline, so the "Manual linting in dev shell" heading rendered as part of that check's description. The manual commands below it then looked like entries of the CI check list.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Upstream ComfyUI calls Python 3.13 "very well supported" and ships it in its portable builds,
and it is the default Python of nixpkgs.
Linux moves from 3.12 to 3.13.
macOS stays on 3.12,
because the pinned PyTorch 2.5.1 has no cp313 wheel for macOS.
The interpreter is now selected in one place,
nix/python.nix.Interpreter-specific wheel pins in
nix/versions.nixbecome a URL template,with one hash per interpreter tag.
nix/python-overrides.nixderives the tag from the selected Python,so the next bump only has to add hashes.
A new
wheel-pinscheck fails evaluation when a pin lacks the hash for the selected Python.The launcher derives the venv paths from the interpreter instead of hardcoding
python3.12.It rewrites
pyvenv.cfgand the interpreter links on every start,since both name a store path that changes with each update.
It also prints a note when site-packages of another Python version are left in the venv,
because packages installed by ComfyUI-Manager under 3.12 are not visible to 3.13.
The bundled PyAV wheel goes from 17.0.0 to 17.0.1.
With 17.0.0 on Python 3.13,
imageio's
test_lagging_video_streamhangs and fails the build every time.Overrides that Linux no longer needs on nixpkgs' default Python are reduced.
On Linux the affected packages now come from the binary cache,
or build with their test suites enabled.
allowBrokenPredicatefor open-clip-torch, which is no longer marked brokenTested on x86_64-linux with an RTX 5090.
nix flake checkpasses, building the CPU, CUDA, ROCm 7.1 and XPU packagesmacOS is only verified to evaluate.
The PyAV bump and the
allowBrokenPredicateremoval also affect it.