2026-04-17 13:14:48 -07:00
|
|
|
{ inputs, config, pkgs, specialArgs, ... }:
|
2026-04-26 13:51:30 -07:00
|
|
|
let
|
|
|
|
|
qwenRapidAioNsfwV23 = pkgs.fetchurl {
|
|
|
|
|
name = "Qwen-Rapid-AIO-NSFW-v23.safetensors";
|
|
|
|
|
url = "https://huggingface.co/Phr00t/Qwen-Image-Edit-Rapid-AIO/resolve/main/v23/Qwen-Rapid-AIO-NSFW-v23.safetensors";
|
|
|
|
|
hash = "sha256-/bkZ/IG+pj8TdZln/JLJEYFC5ccNTmeVGZIzo17vojM=";
|
|
|
|
|
passthru = {
|
|
|
|
|
comfyui.installPaths = [ "checkpoints" ];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
qwenImageEditPlusV2Node = pkgs.fetchurl {
|
|
|
|
|
name = "nodes_qwen.py";
|
|
|
|
|
url = "https://huggingface.co/Phr00t/Qwen-Image-Edit-Rapid-AIO/resolve/main/fixed-textencode-node/nodes_qwen.v2.py";
|
|
|
|
|
hash = "sha256-nfliiPRmygP31/qFh61TyAIbeE9C2qvcH1mmG3HEAjg=";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
qwenRapidAioWorkflow = pkgs.runCommand "qwen-rapid-aio-v23-nsfw-workflow.json" {
|
|
|
|
|
nativeBuildInputs = [ pkgs.jq ];
|
|
|
|
|
src = pkgs.fetchurl {
|
|
|
|
|
name = "Qwen-Rapid-AIO.json";
|
|
|
|
|
url = "https://huggingface.co/Phr00t/Qwen-Image-Edit-Rapid-AIO/resolve/main/Qwen-Rapid-AIO.json";
|
|
|
|
|
hash = "sha256-oLAF49cJuiQFoPfH2LW2HLHoN9py2REL9i/z/q4ijec=";
|
|
|
|
|
};
|
|
|
|
|
} ''
|
|
|
|
|
jq '
|
|
|
|
|
(.nodes[] | select(.type == "CheckpointLoaderSimple") | .widgets_values[0]) = "Qwen-Rapid-AIO-NSFW-v23.safetensors"
|
|
|
|
|
| (.nodes[] | select(.id == 7) | .title) = "Input Image 1"
|
|
|
|
|
| (.nodes[] | select(.id == 8) | .title) = "Optional Input Image 2"
|
|
|
|
|
| (.nodes[] | select(.id == 7) | .outputs[0].links) |= ((. // []) + [19])
|
|
|
|
|
| (.nodes[] | select(.id == 9) | .inputs) = [
|
|
|
|
|
{"name": "width", "type": "INT", "link": 20},
|
|
|
|
|
{"name": "height", "type": "INT", "link": 21}
|
|
|
|
|
]
|
|
|
|
|
| (.nodes[] | select(.id == 9) | .widgets_values) = [768, 768, 1]
|
|
|
|
|
| .nodes += [
|
|
|
|
|
{
|
|
|
|
|
"id": 10,
|
|
|
|
|
"type": "GetImageSize",
|
|
|
|
|
"pos": [-565.0, 735.0],
|
|
|
|
|
"size": [210.0, 82.0],
|
|
|
|
|
"flags": {},
|
|
|
|
|
"order": 8,
|
|
|
|
|
"mode": 0,
|
|
|
|
|
"inputs": [
|
|
|
|
|
{"name": "image", "type": "IMAGE", "link": 19}
|
|
|
|
|
],
|
|
|
|
|
"outputs": [
|
|
|
|
|
{"name": "width", "type": "INT", "links": [20]},
|
|
|
|
|
{"name": "height", "type": "INT", "links": [21]},
|
|
|
|
|
{"name": "batch_size", "type": "INT", "links": null}
|
|
|
|
|
],
|
|
|
|
|
"properties": {
|
|
|
|
|
"Node name for S&R": "GetImageSize"
|
|
|
|
|
},
|
|
|
|
|
"widgets_values": []
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
| .links += [
|
|
|
|
|
[19, 7, 0, 10, 0, "IMAGE"],
|
|
|
|
|
[20, 10, 0, 9, 0, "INT"],
|
|
|
|
|
[21, 10, 1, 9, 1, "INT"]
|
|
|
|
|
]
|
|
|
|
|
' "$src" > "$out"
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
nixifiedComfyuiPackages =
|
|
|
|
|
inputs.nixified-ai.packages.${pkgs.system}.comfyui-nvidia.passthru.pkgs;
|
|
|
|
|
|
|
|
|
|
patchedComfyuiPackages = nixifiedComfyuiPackages // {
|
|
|
|
|
comfyui-unwrapped = nixifiedComfyuiPackages.comfyui-unwrapped.overrideAttrs (old: {
|
|
|
|
|
postPatch = (old.postPatch or "") + ''
|
|
|
|
|
cp ${qwenImageEditPlusV2Node} comfy_extras/nodes_qwen.py
|
|
|
|
|
'';
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
comfyuiPackage = inputs.nixified-ai.packages.${pkgs.system}.comfyui-nvidia.override {
|
|
|
|
|
comfyuiPackages = patchedComfyuiPackages;
|
|
|
|
|
};
|
|
|
|
|
in
|
2024-09-26 14:15:27 -06:00
|
|
|
specialArgs.makeEnable config "myModules.nixified-ai" false {
|
2026-04-17 13:14:48 -07:00
|
|
|
imports = [
|
|
|
|
|
inputs.nixified-ai.nixosModules.comfyui
|
|
|
|
|
];
|
2023-07-18 11:39:18 -06:00
|
|
|
|
2026-04-17 13:14:48 -07:00
|
|
|
services.comfyui = {
|
|
|
|
|
enable = true;
|
2026-04-26 13:51:30 -07:00
|
|
|
package = comfyuiPackage;
|
2026-04-17 13:14:48 -07:00
|
|
|
host = "0.0.0.0";
|
|
|
|
|
acceleration = "cuda";
|
2026-04-26 13:51:30 -07:00
|
|
|
environmentVariables = {
|
|
|
|
|
PYTORCH_CUDA_ALLOC_CONF = "expandable_segments:True";
|
|
|
|
|
};
|
|
|
|
|
extraFlags = [
|
|
|
|
|
"--lowvram"
|
|
|
|
|
"--fp8_e4m3fn-text-enc"
|
|
|
|
|
"--cache-none"
|
|
|
|
|
"--reserve-vram"
|
|
|
|
|
"2.0"
|
|
|
|
|
"--disable-smart-memory"
|
|
|
|
|
];
|
2026-04-17 13:14:48 -07:00
|
|
|
models = [
|
2026-04-26 13:51:30 -07:00
|
|
|
qwenRapidAioNsfwV23
|
2026-04-17 13:14:48 -07:00
|
|
|
(pkgs.fetchurl {
|
|
|
|
|
name = "lustifySDXLNSFW_v20-inpainting.safetensors";
|
|
|
|
|
url = "https://huggingface.co/andro-flock/LUSTIFY-SDXL-NSFW-checkpoint-v2-0-INPAINTING/resolve/main/lustifySDXLNSFW_v20-inpainting.safetensors";
|
|
|
|
|
hash = "sha256-YV8hBx9c6PkWQNIlJTGQTOuL+HNmGVIavuSdlKX434Q=";
|
|
|
|
|
passthru = {
|
|
|
|
|
comfyui.installPaths = [ "checkpoints" ];
|
|
|
|
|
};
|
|
|
|
|
})
|
|
|
|
|
];
|
|
|
|
|
};
|
2026-04-26 13:51:30 -07:00
|
|
|
|
|
|
|
|
systemd.services.comfyui.serviceConfig.ExecStartPre = [
|
|
|
|
|
"+${pkgs.writeShellScript "install-qwen-rapid-aio-workflow" ''
|
|
|
|
|
rm -f /var/lib/comfyui/workflows/Qwen-Rapid-AIO-v23-SFW.json
|
|
|
|
|
rm -f /var/lib/comfyui/.local/share/comfyui/user/default/workflows/Qwen-Rapid-AIO-v23-SFW.json
|
|
|
|
|
install -D -m 0644 ${qwenRapidAioWorkflow} /var/lib/comfyui/workflows/Qwen-Rapid-AIO-v23-NSFW.json
|
|
|
|
|
install -D -m 0644 ${qwenRapidAioWorkflow} /var/lib/comfyui/.local/share/comfyui/user/default/workflows/Qwen-Rapid-AIO-v23-NSFW.json
|
|
|
|
|
''}"
|
|
|
|
|
];
|
2023-07-18 11:39:18 -06:00
|
|
|
}
|