From 94328d682dc3a2f5bf58b435727111df29dcf628 Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Thu, 4 Sep 2025 20:43:14 -0700 Subject: [PATCH] It works! --- flake.lock | 6 +- flake.nix | 179 +++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 137 insertions(+), 48 deletions(-) diff --git a/flake.lock b/flake.lock index 3ed4c07..f5ea36b 100644 --- a/flake.lock +++ b/flake.lock @@ -37,11 +37,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755186698, - "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 69fc121..43242f8 100644 --- a/flake.nix +++ b/flake.nix @@ -10,58 +10,147 @@ }; }; - outputs = { comfyuigit, flake-utils, nixpkgs, ... }: + outputs = { flake-utils, nixpkgs, ... }: flake-utils.lib.eachDefaultSystem (system: - let pkgs = import nixpkgs { - inherit system; - }; - pyenv = pkgs.python312.buildEnv.override { - extraLibs = with pkgs.python312Packages; [ - torchvision - torchaudio - torchsde - - einops - transformers - safetensors - pyyaml - pillow - scipy - tqdm - psutil - kornia - numba - opencv4 - GitPython - numexpr - matplotlib - pandas - imageio-ffmpeg - scikit-image - pip - accelerate - ]; - }; + let pkgs = import nixpkgs { inherit system; config.rocmSupport = true; }; + python = (pkgs.python3.withPackages ( + ps: with ps; [ + alembic + torch + torchsde + torchvision + torchaudio + numpy + einops + transformers + tokenizers + sentencepiece + safetensors + aiohttp + yarl + pyyaml + pydantic + pydantic-settings + pillow + scipy + tqdm + psutil + av + sqlalchemy + soundfile + ] + )); in rec { - packages = rec { - comfyui = pkgs.stdenv.mkDerivation { - name = "comfyui"; - src = comfyuigit; - installPhase = '' - mkdir -p $out/bin - cp -r $src/* $out + + packages.comfyui_frontend = pkgs.python3Packages.buildPythonPackage rec { + pname = "comfyui-frontend-package"; + version = "1.23.4"; + pyproject = true; - echo "${pyenv}/bin/python main.py" > $out/bin/comfyui - chmod +x $out/bin/comfyui - ''; + src = pkgs.fetchPypi { + pname = "comfyui_frontend_package"; + inherit version; + sha256 = "sha256-8HrnNEO5rOuUez1MEzWUOJ512nraRTfH+BRJD5PwMfg="; }; - default = comfyui; + buildInputs = [ + python + python.pkgs.pip + ]; }; - devShell = pkgs.mkShell { - buildInputs = [packages.comfyuimain pyenv]; + packages.comfyui_workflow = pkgs.python3Packages.buildPythonPackage rec { + pname = "comfyui-workflow-templates"; + version = "0.1.59"; + pyproject = true; + + src = pkgs.fetchPypi { + pname = "comfyui_workflow_templates"; + inherit version; + sha256 = "sha256-dt8IbxOzNIZi36eAjVjcoPIXwaVkLjI2VUixIoIWXBo="; + }; + + buildInputs = [ + python + python.pkgs.pip + ]; + }; + + packages.comfyui_embedded_docs = pkgs.python3Packages.buildPythonPackage rec { + pname = "comfyui-embedded-docs"; + version = "0.2.6"; + pyproject = true; + + src = pkgs.fetchPypi { + pname = "comfyui_embedded_docs"; + inherit version; + sha256 = "sha256-ild/PuIWvo3NbAjpZYxvJX/7np6B9A8NNt6bSZJJdWo="; + }; + + buildInputs = [ + python + python.pkgs.pip + ]; + }; + + packages.comfyui = + let python_extended = (python.withPackages (ps: [ + ps.alembic + ps.torchWithRocm + ps.torchsde + ps.torchvision + ps.torchaudio + ps.numpy + ps.einops + ps.transformers + ps.tokenizers + ps.sentencepiece + ps.safetensors + ps.pydantic + ps.pydantic-settings + ps.aiohttp + ps.yarl + ps.pyyaml + ps.pillow + ps.scipy + ps.tqdm + ps.psutil + ps.av + ps.sqlalchemy + ps.soundfile + packages.comfyui_frontend + packages.comfyui_workflow + packages.comfyui_embedded_docs + ])); + in pkgs.stdenv.mkDerivation { + pname = "ComfyUI"; + version = "0.3.50"; + pyproject = true; + + src = pkgs.fetchFromGitHub { + owner = "comfyanonymous"; + repo = "ComfyUI"; + tag = "v0.3.50"; + sha256 = "sha256-vIw22ISbjUnfRB6+TFE7QKbVnEXu6BFAN8lmCGE74/M="; + }; + + buildInputs = [ + python_extended + python.pkgs.pip + packages.comfyui_frontend + ]; + + installPhase = '' + mkdir -p $out/bin + cp -r --no-preserve=mode,ownership $src/* $out + chmod -R u+w $out + + echo "#!/bin/sh" > $out/bin/ComfyUI + echo "export MALLOC=system" >> $out/bin/ComfyUI + echo "exec ${python_extended}/bin/python $out/main.py \"\$@\"" >> $out/bin/ComfyUI + chmod +x $out/bin/ComfyUI + ''; }; } - ); + ); }