nix/flakes/comfyui/module.nix
atagen 7485de646a current
linted
2025-02-02 17:07:42 +11:00

49 lines
1 KiB
Nix

{
pkgs,
lib,
config,
...
}:
let
inherit (lib)
mkEnableOption
mkOption
types
hasSuffix
;
cfg = config.programs.comfyui;
# comfyui only understands the path properly with a trailing slash
getStorage = if (hasSuffix "/" cfg.storage) then cfg.storage else cfg.storage + "/";
in
{
options.programs.comfyui = {
enable = mkEnableOption "ComfyUI";
storage = mkOption {
type = types.path;
description = "where to source models and store information";
};
plugins = mkOption {
type = with types; listOf package;
description = "list of comfyui plugins";
default = [ ];
};
};
config = lib.mkIf cfg.enable {
home.packages = [
# pkgs.comfyui
(pkgs.comfyui.override {
comfy_dir = getStorage;
inherit (cfg) plugins;
})
];
home.file = builtins.listToAttrs (
map (pkg: {
name = "${getStorage}/custom_nodes/${pkg.name}";
value = {
recursive = true;
source = "${pkg}";
};
}) cfg.plugins
);
};
}