{ pkgs, lib, config, comfyui, comfy_dir ? "/run/user/1000/comfyui/", spandrel, plugins ? config.comfyui.plugins or [], ... }: let inherit (pkgs) python3; inherit (pkgs.python3Packages) torch torchsde torchvision torchaudio einops transformers tokenizers sentencepiece safetensors aiohttp pyyaml pillow scipy tqdm psutil kornia soundfile ; python = python3.buildEnv.override { extraLibs = [ torch torchsde torchvision torchaudio einops transformers tokenizers sentencepiece safetensors aiohttp pyyaml pillow scipy tqdm psutil kornia soundfile spandrel ] ++ plugins; }; # python = python3.withPackages ( # ps: # with ps; [ # torch # torchsde # torchvision # torchaudio # einops # transformers # tokenizers # sentencepiece # safetensors # aiohttp # pyyaml # pillow # scipy # tqdm # psutil # kornia # soundfile # spandrel # ] # ); in pkgs.stdenvNoCC.mkDerivation { name = "comfyui"; pname = "comfyui"; version = "dev-${builtins.toString comfyui.lastModified}"; src = comfyui; nativeBuildInputs = let inherit (pkgs) makeWrapper; in [ makeWrapper ]; propagatedBuildInputs = let inherit (pkgs.cudaPackages) cudatoolkit; in [ python cudatoolkit ]; patches = [./folder_paths.patch]; installPhase = let launcher = pkgs.writeShellScript "launch.sh" '' mkdir -p $COMFY_DIR/custom_nodes mkdir -p $COMFY_DIR/models/{checkpoints,configs,loras,vae,clip,unet,diffusion_models,clip_vision,style_models,embeddings,diffusers,vae_approx,controlnet,gligen,upscale_models,hypernetworks,photomaker,classifiers} ${python}/bin/python3 $COMFY/comfyui/main.py --output-directory $(mktemp) ''; in '' mkdir -p $out/comfyui cp -r * $out/comfyui mkdir -p $out/bin makeWrapper ${launcher} $out/bin/comfyui --prefix PATH : ${lib.makeBinPath [python]} \ --set PYTHONPATH ${lib.makeLibraryPath [python]} --set COMFY $out --set COMFY_DIR ${comfy_dir} ''; meta.mainProgram = "comfyui"; }