diff --git a/flake.lock b/flake.lock index 850dbc4..c111c28 100755 --- a/flake.lock +++ b/flake.lock @@ -277,48 +277,6 @@ } }, "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "nixified-ai", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "nixified-ai", - "hercules-ci-effects", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "id": "flake-parts", - "type": "indirect" - } - }, - "flake-parts_5": { "inputs": { "nixpkgs-lib": [ "nur", @@ -398,7 +356,24 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_7" + "systems": "systems_6" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "id": "flake-utils", + "type": "indirect" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_8" }, "locked": { "lastModified": 1731533236, @@ -564,28 +539,6 @@ "type": "github" } }, - "hercules-ci-effects_2": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": [ - "nixified-ai", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733333617, - "narHash": "sha256-nMMQXREGvLOLvUa0ByhYFdaL0Jov0t1wzLbKjr05P2w=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "56f8ea8d502c87cf62444bec4ee04512e8ea24ea", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -1126,23 +1079,45 @@ "type": "github" } }, - "nixified-ai": { + "nix-comfyui": { "inputs": { - "flake-parts": "flake-parts_3", - "hercules-ci-effects": "hercules-ci-effects_2", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_3", + "poetry2nix": "poetry2nix" }, "locked": { - "lastModified": 1747142274, - "narHash": "sha256-5WuEIrM4yTSMMoxJHQ9RBwO0liBE9KcCldyiBfcYIHU=", - "owner": "nixified-ai", - "repo": "flake", - "rev": "ba83e9b493f5fd278abe8ee91040323296da3f39", + "lastModified": 1733961600, + "narHash": "sha256-kEM0Dck4K4dg9QYmdldy62av+XzsNz9XhfTAhtGWwzo=", + "owner": "dyscorv", + "repo": "nix-comfyui", + "rev": "cbd17e10b53dcf8fd9f5ba6f3c1ea1a550082659", "type": "github" }, "original": { - "owner": "nixified-ai", - "repo": "flake", + "owner": "dyscorv", + "repo": "nix-comfyui", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "nix-comfyui", + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729742964, + "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", "type": "github" } }, @@ -1230,18 +1205,16 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", + "lastModified": 1733749988, + "narHash": "sha256-+5qdtgXceqhK5ZR1YbP1fAUsweBIrhL38726oIEAtDs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", + "rev": "bc27f0fde01ce4e1bfec1ab122d72b7380278e68", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nixpkgs_4": { @@ -1294,11 +1267,11 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_5", + "flake-parts": "flake-parts_3", "nixpkgs": [ "nixpkgs" ], - "treefmt-nix": "treefmt-nix_2" + "treefmt-nix": "treefmt-nix_3" }, "locked": { "lastModified": 1749427072, @@ -1314,6 +1287,37 @@ "type": "github" } }, + "poetry2nix": { + "inputs": { + "flake-utils": [ + "nix-comfyui", + "flake-utils" + ], + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "nix-comfyui", + "nixpkgs" + ], + "systems": [ + "nix-comfyui", + "flake-utils", + "systems" + ], + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1731205797, + "narHash": "sha256-F7N1mxH1VrkVNHR3JGNMRvp9+98KYO4b832KS8Gl2xI=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "f554d27c1544d9c56e5f1f8e2b8aff399803674e", + "type": "github" + }, + "original": { + "id": "poetry2nix", + "type": "indirect" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat_2", @@ -1434,13 +1438,13 @@ "lix-module": "lix-module", "ngipkgs": "ngipkgs", "niri": "niri", - "nixified-ai": "nixified-ai", + "nix-comfyui": "nix-comfyui", "nixos-cosmic": "nixos-cosmic", "nixpkgs": "nixpkgs_5", "nur": "nur", "pre-commit-hooks-nix": "pre-commit-hooks-nix", "sops-nix": "sops-nix_2", - "systems": "systems_6", + "systems": "systems_7", "waybar": "waybar", "yazi": "yazi", "zed-editor": "zed-editor", @@ -1671,6 +1675,21 @@ } }, "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { "locked": { "lastModified": 1680978846, "narHash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=", @@ -1685,7 +1704,7 @@ "type": "github" } }, - "systems_7": { + "systems_8": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1723,6 +1742,28 @@ } }, "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "nix-comfyui", + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730120726, + "narHash": "sha256-LqHYIxMrl/1p3/kvm2ir925tZ8DkI0KA10djk8wecSk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "9ef337e492a5555d8e17a51c911ff1f02635be15", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { "inputs": { "nixpkgs": [ "nur", @@ -1840,7 +1881,7 @@ }, "yazi": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_5", "nixpkgs": "nixpkgs_6", "rust-overlay": "rust-overlay_3" }, diff --git a/flake.nix b/flake.nix index fb166fa..3dc0d8e 100755 --- a/flake.nix +++ b/flake.nix @@ -62,7 +62,7 @@ url = "gitlab:InvraNet/zen-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; - nixified-ai.url = "github:nixified-ai/flake"; + nix-comfyui.url = "github:dyscorv/nix-comfyui"; }; outputs = inputs: @@ -129,7 +129,6 @@ # inputs.ngipkgs.nixosModules."services.peertube" # inputs.ngipkgs.nixosModules.default inputs.sops-nix.nixosModules.sops - inputs.nixified-ai.nixosModules.comfyui ]; }; templates = { diff --git a/modules/config/instances/config/comfyui.nix b/modules/config/instances/config/comfyui.nix deleted file mode 100755 index b476b6f..0000000 --- a/modules/config/instances/config/comfyui.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ moduleFunctions }: -let - inherit (moduleFunctions.instancesFunctions) - domain3 - servicePath - sslPath - sopsPath - ; - - label = "ComfyUI"; - name = "comfyui"; -in -{ - label = label; - name = name; - short = label; - - sops = { - path0 = "${sopsPath}/${name}"; - }; - tags = [ - name - "comfy" - "ui" - ]; - paths = { - path0 = "${servicePath}/${label}"; - }; - ports = { - port0 = 8188; - }; - -} diff --git a/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/development.nix b/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/development.nix index 2535fb3..08f056f 100755 --- a/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/development.nix +++ b/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/development.nix @@ -20,21 +20,6 @@ in ]; keyword = "Discord"; } - { - name = "ComfyUI"; - url = "https://civitai.com"; - tags = [ - "comfyui" - "comfy" - "ui" - "stable" - "diffusion" - "ai" - "art" - "generation" - ]; - keyword = "Comfy"; - } { name = "Elm Packages"; url = "https://package.elm-lang.org/packages"; diff --git a/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/flake/selfHosted.nix b/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/flake/selfHosted.nix index c382efa..7082b16 100755 --- a/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/flake/selfHosted.nix +++ b/modules/home/gui/apps/browsers/floorp/config/bookmarks/config/flake/selfHosted.nix @@ -27,23 +27,23 @@ let suffix = "(Remote)"; urlTemplate = name: "https://${instances.${name}.domains.url0}"; services = [ - instances.audiobookshelf.name - instances.forgejo.name - instances.glance.name - instances.jellyfin.name - instances.mastodon.name - instances.ollama.name - instances.opencloud.name - instances.searx.name - instances.vaultwarden.name + "audiobookshelf" + "forgejo" + "glance" + "jellyfin" + "mastodon" + "ollama" + "opencloud" + "searx" + "vaultwarden" ]; } { suffix = "(Desktop)"; urlTemplate = name: "http://${mars.ip.address0}:${builtins.toString instances.${name}.ports.port0}"; services = [ - instances.ollama.name - instances.syncthing.name + "ollama" + "syncthing" ]; } { @@ -51,8 +51,7 @@ let urlTemplate = name: "http://${ceres.ip.address0}:${builtins.toString instances.${name}.ports.port0}"; services = [ - instances.jellyfin.name - instances.comfyui.name + "jellyfin" ]; } { @@ -60,7 +59,7 @@ let urlTemplate = name: "http://${synology.ip.address0}:${builtins.toString instances.${name}.ports.port0}"; services = [ - instances.syncthing.name + "syncthing" ]; } ]; diff --git a/modules/nixos/services/comfyui/default.nix b/modules/nixos/services/comfyui/default.nix old mode 100755 new mode 100644 index cb8615a..802eb49 --- a/modules/nixos/services/comfyui/default.nix +++ b/modules/nixos/services/comfyui/default.nix @@ -1,55 +1,96 @@ { config, + lib, pkgs, - flake, ... }: + let - inherit (flake.config.machines.devices) ceres; - inherit (flake.config.services.instances) comfyui web; - inherit (flake.config.people) user0; - service = comfyui; - localhost = web.localhost.address1; + cfg = config.services.comfyui; in { + options.services.comfyui = with lib; { + enable = mkEnableOption "ComfyUI service"; + package = mkOption { + type = types.package; + default = pkgs.comfyuiPackages.comfyui.override { + extensions = with pkgs.comfyuiPackages.extensions; [ + acly-inpaint + acly-tooling + cubiq-ipadapter-plus + fannovel16-controlnet-aux + ]; + commandLineArgs = [ + "--preview-method" + "auto" + ]; + }; + description = "The ComfyUI package to use"; + }; + + port = mkOption { + type = types.port; + default = 8188; + description = "Port to listen on"; + }; + + host = mkOption { + type = types.str; + default = "0.0.0.0"; + description = "Host to bind to"; + }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = "Open ports in the firewall"; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + networking.firewall = lib.mkIf cfg.openFirewall { + allowedTCPPorts = [ cfg.port ]; + }; + + systemd.services.comfyui = { + description = "ComfyUI Service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + Type = "simple"; + ExecStart = "${cfg.package}/bin/comfyui --port ${toString cfg.port} --listen ${cfg.host}"; + Restart = "on-failure"; + User = "comfyui"; + Group = "comfyui"; + WorkingDirectory = "/var/lib/comfyui"; + }; + }; + + users.users.comfyui = { + group = "comfyui"; + isSystemUser = true; + home = "/var/lib/comfyui"; + createHome = true; + }; + + users.groups.comfyui = { }; + }; services.comfyui = { enable = true; - # package = pkgs.comfyui-nvidia; - host = localhost; - user = service.name; - acceleration = "cuda"; - # models = builtins.attrValues { - # inherit (pkgs.nixified-ai) - # models - # ; - # }; - # customNodes = builtins.attrValues { - # inherit (comfyui.pkgs) - # comfyui-gguf - # comfyui-impact-pack - # ; - # }; - }; - fileSystems."/var/lib/${service.name}" = { - device = service.paths.path0; - fsType = "none"; - options = [ - "bind" - ]; - depends = [ - ceres.storage0.mount - ]; - }; - - systemd.tmpfiles.rules = [ - "Z ${service.paths.path0} 755 ${service.name} ${service.name} -" - ]; - - networking = { - firewall = { - allowedTCPPorts = [ - service.ports.port0 + package = pkgs.comfyuiPackages.comfyui.override { + extensions = with pkgs.comfyuiPackages.extensions; [ + acly-inpaint + acly-tooling + cubiq-ipadapter-plus + fannovel16-controlnet-aux + ]; + commandLineArgs = [ + "--preview-method" + "auto" ]; }; }; diff --git a/modules/nixos/services/samba/default.nix b/modules/nixos/services/samba/default.nix index 1aed976..3a0e051 100755 --- a/modules/nixos/services/samba/default.nix +++ b/modules/nixos/services/samba/default.nix @@ -4,10 +4,12 @@ ... }: let - inherit (flake.config.services) - instances + inherit (flake.config.services.instances) + samba + jellyfin + audiobookshelf ; - service = instances.samba; + service = samba; in { # If you ever need to start fresh, you need to add yourself to the Samba users database: @@ -18,16 +20,12 @@ in enable = true; openFirewall = true; settings = { - ${instances.jellyfin.name} = { - path = instances.jellyfin.paths.path0; + ${jellyfin.name} = { + path = jellyfin.paths.path0; writable = "true"; }; - ${instances.audiobookshelf.name} = { - path = instances.audiobookshelf.paths.path0; - writable = "true"; - }; - ${instances.comfyui.name} = { - path = instances.comfyui.paths.path0; + ${audiobookshelf.name} = { + path = audiobookshelf.paths.path0; writable = "true"; }; }; diff --git a/profiles/user0/default.nix b/profiles/user0/default.nix index a274ecf..6c49163 100755 --- a/profiles/user0/default.nix +++ b/profiles/user0/default.nix @@ -39,7 +39,6 @@ in "vaultwarden" "vboxusers" "wheel" - "comfyui" ]; }; }; diff --git a/systems/deimos/config/filesystem.nix b/systems/deimos/config/filesystem.nix index 211194c..401c2b5 100755 --- a/systems/deimos/config/filesystem.nix +++ b/systems/deimos/config/filesystem.nix @@ -15,7 +15,6 @@ let inherit (flake.config.services.instances) jellyfin audiobookshelf - comfyui ; synologySecrets = config.sops.secrets."network/synology".path; @@ -40,7 +39,6 @@ in remoteFolders = [ audiobookshelf.name jellyfin.name - comfyui.name ]; synologyMounts = synologyDrive: { diff --git a/systems/mars/config/filesystem.nix b/systems/mars/config/filesystem.nix index 59aabe4..09021bb 100755 --- a/systems/mars/config/filesystem.nix +++ b/systems/mars/config/filesystem.nix @@ -6,7 +6,7 @@ let inherit (flake.config.people) user0 user1; inherit (flake.config.machines.devices) mars ceres synology; - inherit (flake.config.services.instances) jellyfin audiobookshelf comfyui; + inherit (flake.config.services.instances) jellyfin audiobookshelf; synologySecrets = config.sops.secrets."network/synology".path; ceresSecrets = config.sops.secrets."network/server".path; in @@ -30,7 +30,6 @@ in sambaFolders = [ audiobookshelf.name jellyfin.name - comfyui.name ]; synologyMounts = synologyDrive: {