ComfyUI Node Adder
This skill provides the procedural workflow for adding new ComfyUI custom nodes from GitHub or GitLab to this Nixified project.
Workflow
Add the Node to
npins:- Run the script via Nix:
nix run .#legacyPackages.x86_64-linux.nixified-ai.internal.add-comfyui-node -- <repository_url> - This script generates a sanitized lowercase node name (e.g.,
comfyui-node-name) and updatesflake-modules/projects/comfyui/customNodes-npins/sources.json.
- Run the script via Nix:
Analyze Dependencies:
- Check the target repository for a
requirements.txtorpyproject.toml. - Identify required Python packages.
- Check the target repository for a
Check Nixpkgs Availability:
- Check if dependencies exist in Nix using:
nix build .#comfyui-nvidia.passthru.python3Packages.<package_name>.pname --raw
- Check if dependencies exist in Nix using:
Create
package.nix(if needed):- Create
flake-modules/projects/comfyui/customNodes/<sanitized-node-name>/package.nix. - Do not set
pnameorversion. These are automatically generated from the npin source data by thenodePropsFromNpinSourcefunction inflake-modules/projects/comfyui/lib.nix. - Return an attrset of overrides (e.g.
{ propagatedBuildInputs = [ ... ]; }). - Include dependencies in
propagatedBuildInputs. - Note: If there are no dependencies and no impure installation scripts, a
package.nixis generally not needed.
- Create
Disable Impure Auto-Install Logic:
- Crucial: Many ComfyUI nodes attempt to run
pip installorapt-getat runtime (e.g., in__init__.py). This will crash in a Nix environment. - Patch these out using
postPatchin thepackage.nix:postPatch = '' # Safely replace function calls without breaking function definitions # Example: replacing `install_requirements()` with `pass` only when it's called sed -i -e 's/^\s*install_requirements().*/pass/g' __init__.py # Or, if a function is DEFINED in the file, make it return early: sed -i -e 's/def install_requirements():/def install_requirements():\n return/g' __init__.py ''; - Export any environment variables that skip auto-installs (e.g.,
env.DISABLE_TENSORRT_AUTO_INSTALL = "true";).
- Crucial: Many ComfyUI nodes attempt to run
Fix Inherited Build Tools (
ninja):- If the node inherits native build tools (like
ninjaorcmake) from dependencies, the NixbuildPhasemay incorrectly attempt to compile it and fail withninja: error: loading 'build.ninja'. - To bypass this, add to
package.nix:dontBuild = true; dontConfigure = true;
- If the node inherits native build tools (like
Verify the Build:
- Test the custom node derivation:
nix build .#comfyui-nvidia.passthru.comfyuiCustomNodes.<sanitized-node-name> -L --no-link
- Test the custom node derivation:
Format Code:
- Run
nix fmtin the workspace root to format the newly created and modified files.
- Run
Commit:
- Stage the changes to
sources.jsonand the newly createdpackage.nixfiles. - Commit the changes with an appropriate message.
- Stage the changes to