diff --git a/flake.lock b/flake.lock index 59ed740..d9c4299 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,55 @@ { "nodes": { + "comfyui": { + "inputs": { + "comfyui": "comfyui_2", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-Fv6zq7iMMhVlpU0sRue/TPbMD0He4vlZevbkneu8HrY=", + "path": "./flakes/ComfyUI", + "type": "path" + }, + "original": { + "path": "./flakes/ComfyUI", + "type": "path" + } + }, + "comfyui-plugins": { + "inputs": { + "gguf": "gguf", + "nixpkgs": "nixpkgs_2", + "openpose": "openpose", + "tensorrt": "tensorrt" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-F3jyn6y/IkuICRHOv3+jcu6FkyZsK2CchqyvJV+wKqA=", + "path": "./flakes/ComfyUI-Plugins", + "type": "path" + }, + "original": { + "path": "./flakes/ComfyUI-Plugins", + "type": "path" + } + }, + "comfyui_2": { + "flake": false, + "locked": { + "lastModified": 1729105110, + "narHash": "sha256-M/by34k6P4Sj/dfsW1FdVRZmaTHxZ0mMX/cuYXIPeaw=", + "owner": "comfyanonymous", + "repo": "ComfyUI", + "rev": "7390ff3b1ec2e15017ba4a52d6eaabc4aa4636e3", + "type": "github" + }, + "original": { + "owner": "comfyanonymous", + "repo": "ComfyUI", + "type": "github" + } + }, "crane": { "inputs": { "nixpkgs": [ @@ -173,11 +223,11 @@ }, "flatpaks": { "locked": { - "lastModified": 1728416205, - "narHash": "sha256-t30gsrwiBc2oBsd89DwdsVZuEbMT5ed81PYY57CIOJE=", + "lastModified": 1729025406, + "narHash": "sha256-uYbDN6JikC19WfD3zg0kpOpJVZFvBhHXYo3YJo28vOs=", "owner": "gmodena", "repo": "nix-flatpak", - "rev": "d65dbf59900de4beaaaba8b42a15994f8433c1bc", + "rev": "8d1193a959c7810f01610c10a055b0020390bf4e", "type": "github" }, "original": { @@ -186,6 +236,22 @@ "type": "github" } }, + "gguf": { + "flake": false, + "locked": { + "lastModified": 1728958305, + "narHash": "sha256-XJwWx9gm1Qo/B4t7olPajJlPqKJvciTRpB+9fyf8aXQ=", + "owner": "city96", + "repo": "ComfyUI-GGUF", + "rev": "68ad5fb2149ead7e4978f83f14e045ecd812a394", + "type": "github" + }, + "original": { + "owner": "city96", + "repo": "ComfyUI-GGUF", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -212,15 +278,15 @@ "inputs": { "crane": "crane", "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_3", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1728372216, - "narHash": "sha256-amGNilpQ/vohlgerF/5D4QNsXCRbh2H06nmWyz/xyS8=", + "lastModified": 1729068734, + "narHash": "sha256-JOqmdtcdQohQL1qvTDrVJvd+nkydRm+Lyf3qVF5iQ5E=", "owner": "helix-editor", "repo": "helix", - "rev": "761f70d61179f38152e76c1f224589a53b62d00f", + "rev": "d1b8129491124ce6068e95ccc58a7fefb1c9db45", "type": "github" }, "original": { @@ -269,11 +335,11 @@ "lix": { "flake": false, "locked": { - "lastModified": 1728506278, - "narHash": "sha256-ZAPqzjR86En31Yfau0auQmkDuyzr2QfD8yW+7205e8A=", - "rev": "9865ebaaa618d82a7b7fdccc636cbaa7dfa42427", + "lastModified": 1729199869, + "narHash": "sha256-buAN+K/8zIPo6dmb984BNOzZzQlK9TBdKPYLbdwWWGM=", + "rev": "52b64662a4924741e465b9caed6b2b4f8539aced", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/9865ebaaa618d82a7b7fdccc636cbaa7dfa42427.tar.gz?rev=9865ebaaa618d82a7b7fdccc636cbaa7dfa42427" + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/52b64662a4924741e465b9caed6b2b4f8539aced.tar.gz?rev=52b64662a4924741e465b9caed6b2b4f8539aced" }, "original": { "type": "tarball", @@ -338,8 +404,8 @@ "utils": "utils" }, "locked": { - "lastModified": 1728536463, - "narHash": "sha256-MiNMW959lzG4ewbDNif1mKZNa+yXb/6TOlAm+QvMfw8=", + "lastModified": 1728878008, + "narHash": "sha256-+7Lv9bu6WzX1aYRilirx72FisvjWIBQZruKLlLvq+tw=", "path": "/home/bolt/code/meat", "type": "path" }, @@ -348,9 +414,26 @@ "type": "path" } }, + "murex": { + "flake": false, + "locked": { + "lastModified": 1729016342, + "narHash": "sha256-/Sa6kqv13nx7XJw7m6/+xt+07W3GvUCLE1bWXcHfcvQ=", + "owner": "lmorg", + "repo": "murex", + "rev": "b215b50c4a1df475652a6ff88ad3ae505d9483a7", + "type": "github" + }, + "original": { + "owner": "lmorg", + "ref": "develop", + "repo": "murex", + "type": "github" + } + }, "murex-jump": { "inputs": { - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_4", "src": "src" }, "locked": { @@ -366,7 +449,7 @@ }, "murex-starship": { "inputs": { - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_5", "src": "src_2" }, "locked": { @@ -382,7 +465,7 @@ }, "nh": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1728371783, @@ -400,14 +483,14 @@ }, "nix-index-database": { "inputs": { - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1728263287, - "narHash": "sha256-GJDtsxz2/zw6g/Nrp4XVWBS5IaZ7ZUkuvxPOBEDe7pg=", + "lastModified": 1728790083, + "narHash": "sha256-grMdAd4KSU6uPqsfLzA1B/3pb9GtGI9o8qb0qFzEU/Y=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "5fce10c871bab6d7d5ac9e5e7efbb3a2783f5259", + "rev": "5c54c33aa04df5dd4b0984b7eb861d1981009b22", "type": "github" }, "original": { @@ -442,7 +525,7 @@ "inputs": { "flake-parts": "flake-parts", "flake-root": "flake-root", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_9", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -462,16 +545,16 @@ "nixos-cosmic": { "inputs": { "flake-compat": "flake-compat_3", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_10", "nixpkgs-stable": "nixpkgs-stable_2", "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1728591802, - "narHash": "sha256-/HefSuC9DgRAVfiZ64+E32L5WHu9mpqrcnnZA9em2iY=", + "lastModified": 1729209055, + "narHash": "sha256-QN0W/LJzUZGFdx4dYz8L7Z7uioAc3Po+AtGUs/IyV4Y=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "7a40bf82de534822d22503e195f2b71715277ad6", + "rev": "e1c81bcb1321916bc1546d3da4907f31c5a5e948", "type": "github" }, "original": { @@ -482,18 +565,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709479366, - "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", - "type": "github" + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", + "path": "/nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", + "type": "path" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nixpkgs-lib": { @@ -547,11 +627,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1728328465, - "narHash": "sha256-a0a0M1TmXMK34y3M0cugsmpJ4FJPT/xsblhpiiX1CXo=", + "lastModified": 1728909085, + "narHash": "sha256-WLxED18lodtQiayIPDE5zwAfkPJSjHJ35UhZ8h3cJUg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bfbbbe5bbf888d675397c66bfdb275d0b99361c", + "rev": "c0b1da36f7c34a7146501f684e9ebdf15d2bebf8", "type": "github" }, "original": { @@ -561,7 +641,52 @@ "type": "github" } }, + "nixpkgs_10": { + "locked": { + "lastModified": 1728888510, + "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { + "locked": { + "lastModified": 1728888510, + "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", + "path": "/nix/store/xnjw9gmfmpppdj6bxpw6cfkspc3h6xwl-source", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1709479366, + "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1728018373, "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", @@ -574,7 +699,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_5": { "locked": { "lastModified": 1728241625, "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", @@ -587,7 +712,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_6": { "locked": { "lastModified": 1727540905, "narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=", @@ -603,13 +728,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_7": { "locked": { - "lastModified": 1728018373, - "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", "type": "github" }, "original": { @@ -619,7 +744,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_8": { "locked": { "lastModified": 1681303793, "narHash": "sha256-JEdQHsYuCfRL2PICHlOiH/2ue3DwoxUX7DJ6zZxZXFk=", @@ -635,7 +760,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_9": { "locked": { "lastModified": 1714562304, "narHash": "sha256-Mr3U37Rh6tH0FbaDFu0aZDwk9mPAe7ASaqDOGgLqqLU=", @@ -651,45 +776,45 @@ "type": "github" } }, - "nixpkgs_8": { + "nur": { "locked": { - "lastModified": 1728241625, - "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1", + "lastModified": 1729210014, + "narHash": "sha256-46JsGJ8/wovNwq4jxlIVHewcel8yHLugACHhASWvNhM=", + "owner": "nix-community", + "repo": "NUR", + "rev": "7dced12690c675f0ea371f342e433060846b908a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "NUR", "type": "github" } }, - "nur": { + "openpose": { + "flake": false, "locked": { - "lastModified": 1728602745, - "narHash": "sha256-UcWXwxHP2SX3lJ/XGYQbKu+KKALsPp/BC+3YWfbgOuo=", - "owner": "nix-community", - "repo": "NUR", - "rev": "0eb5a0ee12c355e8e897e0fe23e1ff9df332a9a6", + "lastModified": 1685841563, + "narHash": "sha256-GUjs8mIUFAbjJEVL+EsT44HG42mAiumKOBlBas1xxrM=", + "owner": "space-nuko", + "repo": "ComfyUI-OpenPose-Editor", + "rev": "4d8fe730acdb11ab2fcd592129d91d338d270adf", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "NUR", + "owner": "space-nuko", + "repo": "ComfyUI-OpenPose-Editor", "type": "github" } }, "podman": { "flake": false, "locked": { - "lastModified": 1728581139, - "narHash": "sha256-O38TzXJ69kbIonMA5+NpFA9J4JLoLcKlKu17PCHX/dY=", + "lastModified": 1729175227, + "narHash": "sha256-UL/G8RrBWLOoJ30QZxT+/88YjIhOFXbkQ/Le7ObVcMY=", "owner": "containers", "repo": "podman", - "rev": "d512e4414754a2ddda793d1fefe34cdb7ba88568", + "rev": "740f1d1fc710d4560d2463b11333cc9ad68e22bd", "type": "github" }, "original": { @@ -706,7 +831,7 @@ "flake-utils" ], "gitignore": "gitignore", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_8", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -725,6 +850,8 @@ }, "root": { "inputs": { + "comfyui": "comfyui", + "comfyui-plugins": "comfyui-plugins", "flatpaks": "flatpaks", "helix": "helix", "home-manager": "home-manager", @@ -732,6 +859,7 @@ "lix-module": "lix-module", "madness": "madness", "meat": "meat", + "murex": "murex", "murex-jump": "murex-jump", "murex-starship": "murex-starship", "nh": "nh", @@ -784,11 +912,11 @@ ] }, "locked": { - "lastModified": 1728461096, - "narHash": "sha256-cd0cXB85B3kGpm+iumP9xCnqFErspXL9Z/2X59kQ6c4=", + "lastModified": 1729045942, + "narHash": "sha256-HjmK0x5Zm2TK2vFpC7XBM2e3EDNVnAIuEoU2FkeN8xw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "e310b9bd71fa6c6a9fec0a8cf5af43ce798a0ad6", + "rev": "9de3cea452d2401d6f93c06ad985178a4e11d1fc", "type": "github" }, "original": { @@ -889,6 +1017,22 @@ "type": "github" } }, + "tensorrt": { + "flake": false, + "locked": { + "lastModified": 1728519788, + "narHash": "sha256-tqiodF60IVlmvJknYxEwL0U7GIrrfl49k6Tg+8jGRVU=", + "owner": "comfyanonymous", + "repo": "ComfyUI_TensorRT", + "rev": "5bcc3f1e5c2424bb20bcb586e340c25ebe4a954f", + "type": "github" + }, + "original": { + "owner": "comfyanonymous", + "repo": "ComfyUI_TensorRT", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 3387905..384419a 100644 --- a/flake.nix +++ b/flake.nix @@ -55,11 +55,19 @@ inputs.rust-overlay.follows = "rust-overlay"; }; + comfyui.url = "path:./flakes/ComfyUI"; + comfyui-plugins.url = "path:./flakes/ComfyUI-Plugins"; + podman = { flake = false; url = "github:containers/podman"; }; + murex = { + url = "github:lmorg/murex/develop"; + flake = false; + }; + murex-jump.url = "path:./flakes/murex-module-jump"; murex-starship.url = "path:./flakes/murex-module-starship"; }; @@ -75,6 +83,7 @@ madness, lix-module, meat, + comfyui, ... } @ inputs: let inherit (self) outputs; @@ -82,8 +91,6 @@ inherit (lib) mapAttrs; sharedModules = [ meat.nixosModules.meat - # comes with meat - # lix-module.nixosModules.default madness.nixosModules.madness nur.nixosModules.nur nix-index-database.nixosModules.nix-index @@ -121,12 +128,8 @@ overlays = import ./util/overlay.nix {inherit inputs;}; nixosConfigurations = createSystems { - quiver = { - user = "bolt"; - }; - adrift = { - user = "plank"; - }; + quiver.user = "bolt"; + adrift.user = "plank"; }; }; } diff --git a/flakes/ComfyUI-Plugins/essentials/default.nix b/flakes/ComfyUI-Plugins/essentials/default.nix new file mode 100644 index 0000000..ce8c73c --- /dev/null +++ b/flakes/ComfyUI-Plugins/essentials/default.nix @@ -0,0 +1,21 @@ +{ + pkgs, + src, + python3Packages, + ... +}: let + inherit (python3Packages) numba colour-science rembg pixeloe transparent-background; +in + pkgs.stdenvNoCC.mkDerivation { + pname = "comfyui-essentials"; + version = "dev-${builtins.toString src.lastModified}"; + src = src; + + propagatedBuildInputs = [ + numba + colour-science + rembg + pixeloe + transparent-background + ]; + } diff --git a/flakes/ComfyUI-Plugins/flake.lock b/flakes/ComfyUI-Plugins/flake.lock new file mode 100644 index 0000000..26b4acb --- /dev/null +++ b/flakes/ComfyUI-Plugins/flake.lock @@ -0,0 +1,92 @@ +{ + "nodes": { + "essentials": { + "flake": false, + "locked": { + "lastModified": 1728478639, + "narHash": "sha256-JFkrtxLXx9wyJ5ZUlnXX+U5NGh5agiz0VOHQ5SA6jTs=", + "owner": "cubiq", + "repo": "ComfyUI_essentials", + "rev": "f320ada61353c14e9d506592e20397398be6b952", + "type": "github" + }, + "original": { + "owner": "cubiq", + "repo": "ComfyUI_essentials", + "type": "github" + } + }, + "gguf": { + "flake": false, + "locked": { + "lastModified": 1728958305, + "narHash": "sha256-XJwWx9gm1Qo/B4t7olPajJlPqKJvciTRpB+9fyf8aXQ=", + "owner": "city96", + "repo": "ComfyUI-GGUF", + "rev": "68ad5fb2149ead7e4978f83f14e045ecd812a394", + "type": "github" + }, + "original": { + "owner": "city96", + "repo": "ComfyUI-GGUF", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1728888510, + "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", + "path": "/nix/store/xnjw9gmfmpppdj6bxpw6cfkspc3h6xwl-source", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "openpose": { + "flake": false, + "locked": { + "lastModified": 1685841563, + "narHash": "sha256-GUjs8mIUFAbjJEVL+EsT44HG42mAiumKOBlBas1xxrM=", + "owner": "space-nuko", + "repo": "ComfyUI-OpenPose-Editor", + "rev": "4d8fe730acdb11ab2fcd592129d91d338d270adf", + "type": "github" + }, + "original": { + "owner": "space-nuko", + "repo": "ComfyUI-OpenPose-Editor", + "type": "github" + } + }, + "root": { + "inputs": { + "essentials": "essentials", + "gguf": "gguf", + "nixpkgs": "nixpkgs", + "openpose": "openpose", + "tensorrt": "tensorrt" + } + }, + "tensorrt": { + "flake": false, + "locked": { + "lastModified": 1728519788, + "narHash": "sha256-tqiodF60IVlmvJknYxEwL0U7GIrrfl49k6Tg+8jGRVU=", + "owner": "comfyanonymous", + "repo": "ComfyUI_TensorRT", + "rev": "5bcc3f1e5c2424bb20bcb586e340c25ebe4a954f", + "type": "github" + }, + "original": { + "owner": "comfyanonymous", + "repo": "ComfyUI_TensorRT", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flakes/ComfyUI-Plugins/flake.nix b/flakes/ComfyUI-Plugins/flake.nix new file mode 100644 index 0000000..9c92f3b --- /dev/null +++ b/flakes/ComfyUI-Plugins/flake.nix @@ -0,0 +1,48 @@ +{ + inputs = { + gguf = { + url = "github:city96/ComfyUI-GGUF"; + flake = false; + }; + + tensorrt = { + url = "github:comfyanonymous/ComfyUI_TensorRT"; + flake = false; + }; + + # needs some deps packaged + # essentials = { + # url = "github:cubiq/ComfyUI_essentials"; + # flake = false; + # }; + + openpose = { + url = "github:space-nuko/ComfyUI-OpenPose-Editor"; + flake = false; + }; + }; + + outputs = { + self, + nixpkgs, + ... + }: let + pkgs = import nixpkgs { + system = "x86_64-linux"; + }; + inherit (pkgs) lib callPackage; + inherit (builtins) mapAttrs; + filteredInputs = lib.filterAttrs (n: v: n != "nixpkgs") self.inputs; + in { + overlays.comfyui-plugins = final: prev: { + comfyui-plugins = + mapAttrs + (name: value: final.callPackage ./${name}/default.nix {src = value;}) + filteredInputs; + }; + packages.x86_64-linux = + mapAttrs + (name: value: callPackage ./${name}/default.nix {src = value;}) + filteredInputs; + }; +} diff --git a/flakes/ComfyUI-Plugins/gguf/default.nix b/flakes/ComfyUI-Plugins/gguf/default.nix new file mode 100644 index 0000000..9800f1a --- /dev/null +++ b/flakes/ComfyUI-Plugins/gguf/default.nix @@ -0,0 +1,21 @@ +{ + pkgs, + src, + python3Packages, + ... +}: let + inherit (python3Packages) gguf numpy; +in + pkgs.stdenvNoCC.mkDerivation { + pname = "comfyui-gguf"; + version = "dev-${builtins.toString src.lastModified}"; + src = src; + propagatedBuildInputs = [ + gguf + numpy + ]; + installPhase = '' + mkdir -p $out + cp -r * $out/ + ''; + } diff --git a/flakes/ComfyUI-Plugins/openpose/default.nix b/flakes/ComfyUI-Plugins/openpose/default.nix new file mode 100644 index 0000000..66391cd --- /dev/null +++ b/flakes/ComfyUI-Plugins/openpose/default.nix @@ -0,0 +1,19 @@ +{ + pkgs, + src, + ... +}: +pkgs.stdenvNoCC.mkDerivation { + pname = "comfyui-openpose-editor"; + version = "dev-${builtins.toString src.lastModified}"; + inherit src; + + patches = [ + ./openpose_no_update.patch + ]; + + installPhase = '' + mkdir -p $out + cp -r * $out/ + ''; +} diff --git a/flakes/ComfyUI-Plugins/openpose/openpose_no_update.patch b/flakes/ComfyUI-Plugins/openpose/openpose_no_update.patch new file mode 100644 index 0000000..2f440de --- /dev/null +++ b/flakes/ComfyUI-Plugins/openpose/openpose_no_update.patch @@ -0,0 +1,12 @@ +diff --git a/__init__.py b/__init__.py +index e4cf8bb..7d8f894 100644 +--- a/__init__.py ++++ b/__init__.py +@@ -35,6 +35,6 @@ def update_javascript(): + shutil.copy(src_file, dst_file) + + +-update_javascript() ++# update_javascript() + + print('\033[34mOpenPose Editor: \033[92mLoaded\033[0m') diff --git a/flakes/ComfyUI-Plugins/tensorrt/default.nix b/flakes/ComfyUI-Plugins/tensorrt/default.nix new file mode 100644 index 0000000..713b1b3 --- /dev/null +++ b/flakes/ComfyUI-Plugins/tensorrt/default.nix @@ -0,0 +1,23 @@ +{ + pkgs, + src, + python3Packages, + ... +}: let + inherit (python3Packages) tensorrt onnx; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "comfyui-tensorrt"; + version = "dev-${builtins.toString src.lastModified}"; + src = src; + + propagatedBuildInputs = [ + tensorrt + onnx + ]; + + installPhase = '' + mkdir -p $out + cp -r * $out + ''; +} diff --git a/flakes/ComfyUI/default.nix b/flakes/ComfyUI/default.nix new file mode 100644 index 0000000..2076906 --- /dev/null +++ b/flakes/ComfyUI/default.nix @@ -0,0 +1,72 @@ +{ + pkgs, + lib, + config, + comfyui, + comfy_dir ? "/run/user/1000/comfyui/", + spandrel, + plugins ? config.comfyui.plugins, + ... +}: let + inherit (pkgs) python3; + python = python3.withPackages ( + ps: + with ps; [ + torch + torchsde + torchvision + torchaudio + einops + transformers + tokenizers + sentencepiece + safetensors + aiohttp + pyyaml + pillow + scipy + tqdm + psutil + kornia + soundfile + + spandrel + ] ++ plugins + ); +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"; + } diff --git a/flakes/ComfyUI/flake.lock b/flakes/ComfyUI/flake.lock new file mode 100644 index 0000000..37ea9cf --- /dev/null +++ b/flakes/ComfyUI/flake.lock @@ -0,0 +1,41 @@ +{ + "nodes": { + "comfyui": { + "flake": false, + "locked": { + "lastModified": 1729105110, + "narHash": "sha256-M/by34k6P4Sj/dfsW1FdVRZmaTHxZ0mMX/cuYXIPeaw=", + "owner": "comfyanonymous", + "repo": "ComfyUI", + "rev": "7390ff3b1ec2e15017ba4a52d6eaabc4aa4636e3", + "type": "github" + }, + "original": { + "owner": "comfyanonymous", + "repo": "ComfyUI", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", + "path": "/nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "comfyui": "comfyui", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flakes/ComfyUI/flake.nix b/flakes/ComfyUI/flake.nix new file mode 100644 index 0000000..7be3042 --- /dev/null +++ b/flakes/ComfyUI/flake.nix @@ -0,0 +1,48 @@ +{ + inputs = { + comfyui = { + url = "github:comfyanonymous/ComfyUI"; + flake = false; + }; + }; + + nixConfig = { + extra-substituters = ["https://nix-community.cachix.org" "https://cuda-maintainers.cachix.org"]; + extra-trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + ]; + }; + + outputs = { + self, + nixpkgs, + comfyui, + }: { + homeManagerModules.comfyui = import ./module.nix; + + overlays.comfyui = final: _prev: { + comfyui = let + spandrel = final.callPackage ./spandrel.nix {}; + in + final.callPackage ./default.nix { + cudaSupport = true; + inherit comfyui spandrel; + }; + }; + + packages.x86_64-linux = let + system = "x86_64-linux"; + pkgs = import nixpkgs { + config.allowUnfree = true; + config.cudaSupport = true; + inherit system; + }; + spandrel = pkgs.callPackage ./spandrel.nix {}; + in { + default = pkgs.callPackage ./default.nix { + inherit comfyui spandrel; + }; + }; + }; +} diff --git a/flakes/ComfyUI/folder_paths.patch b/flakes/ComfyUI/folder_paths.patch new file mode 100644 index 0000000..457a571 --- /dev/null +++ b/flakes/ComfyUI/folder_paths.patch @@ -0,0 +1,28 @@ +diff --git a/folder_paths.py b/folder_paths.py +index 01ae821..27906ac 100644 +--- a/folder_paths.py ++++ b/folder_paths.py +@@ -11,7 +11,7 @@ supported_pt_extensions: set[str] = {'.ckpt', '.pt', '.bin', '.pth', '.safetenso + + folder_names_and_paths: dict[str, tuple[list[str], set[str]]] = {} + +-base_path = os.path.dirname(os.path.realpath(__file__)) ++base_path = os.path.dirname(os.environ['COMFY_DIR']) + models_dir = os.path.join(base_path, "models") + folder_names_and_paths["checkpoints"] = ([os.path.join(models_dir, "checkpoints")], supported_pt_extensions) + folder_names_and_paths["configs"] = ([os.path.join(models_dir, "configs")], [".yaml"]) +@@ -39,10 +39,10 @@ folder_names_and_paths["photomaker"] = ([os.path.join(models_dir, "photomaker")] + + folder_names_and_paths["classifiers"] = ([os.path.join(models_dir, "classifiers")], {""}) + +-output_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "output") +-temp_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "temp") +-input_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "input") +-user_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "user") ++output_directory = os.path.join(base_path, "output") ++temp_directory = os.path.join(base_path, "temp") ++input_directory = os.path.join(base_path, "input") ++user_directory = os.path.join(base_path, "user") + + filename_list_cache: dict[str, tuple[list[str], dict[str, float], float]] = {} + diff --git a/flakes/ComfyUI/module.nix b/flakes/ComfyUI/module.nix new file mode 100644 index 0000000..3e2c760 --- /dev/null +++ b/flakes/ComfyUI/module.nix @@ -0,0 +1,44 @@ +{ + 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"; + }; + }; + config = lib.mkIf cfg.enable { + home.packages = [ + (pkgs.comfyui.override { + comfy_dir = getStorage; + plugins = cfg.plugins; + }) + ]; + home.file = builtins.listToAttrs (map ( + pkg: { + name = "${getStorage}/custom_nodes/${pkg.name}"; + value = { + recursive = true; + source = "${pkg}"; + }; + } + ) + cfg.plugins); + }; +} diff --git a/flakes/ComfyUI/spandrel.nix b/flakes/ComfyUI/spandrel.nix new file mode 100644 index 0000000..0ae7153 --- /dev/null +++ b/flakes/ComfyUI/spandrel.nix @@ -0,0 +1,43 @@ +{ + lib, + python3Packages, + fetchPypi, + ... +}: +python3Packages.buildPythonPackage rec { + pname = "spandrel"; + version = "0.4.0"; + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-9FUmiT+SOhLvN1QsROREsSCJdlk7x8zfpU/QTHw+gMo="; + }; + + build-system = let + inherit (python3Packages) setuptools; + in [ + setuptools + ]; + + dependencies = let + inherit + (python3Packages) + torch + torchvision + safetensors + numpy + einops + typing-extensions + ; + in [ + torch + torchvision + safetensors + numpy + einops + typing-extensions + ]; + + doCheck = false; +} diff --git a/home/bolt.nix b/home/bolt.nix index bd8b9c9..719b74a 100644 --- a/home/bolt.nix +++ b/home/bolt.nix @@ -1,4 +1,10 @@ -{pkgs, ...}: { +{ + inputs, + pkgs, + lib, + config, + ... +}: { imports = [ ./home.nix ./util/local-webapp.nix @@ -6,6 +12,7 @@ # ./programs/stable-diffusion.nix # ./programs/openwebui.nix ./programs/anything-llm.nix + inputs.comfyui.homeManagerModules.comfyui ]; mainUser = "bolt"; @@ -13,4 +20,16 @@ home.packages = with pkgs; [ nicotine-plus ]; + + programs.comfyui = { + enable = true; + storage = "/home/${config.mainUser}/.local/share/comfyui/"; + plugins = let + inherit (pkgs.comfyui-plugins) gguf openpose; + in [ + gguf + # essentials + openpose + ]; + }; } diff --git a/home/programs/helix-ai.nix b/home/programs/helix-ai.nix new file mode 100644 index 0000000..7a08d47 --- /dev/null +++ b/home/programs/helix-ai.nix @@ -0,0 +1,291 @@ +{ + config, + lib, + pkgs, + ... +}: let + palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette; + palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette; +in { + programs.helix = { + enable = true; + themes = with palette-hex; { + nix-rice = { + "attribute" = bright.cyan; + "keyword" = {fg = normal.red;}; + "keyword.directive" = normal.red; + "namespace" = bright.cyan; + "punctuation" = bright.yellow; + "punctuation.delimiter" = bright.yellow; + "operator" = bright.magenta; + "special" = normal.magenta; + "variable.other.member" = bright.blue; + "variable" = util.fg; + "variable.builtin" = bright.yellow; + "variable.parameter" = bright.white; + "type" = normal.yellow; + "type.builtin" = normal.yellow; + "constructor" = { + fg = bright.magenta; + modifiers = ["bold"]; + }; + "function" = { + fg = normal.green; + modifiers = ["bold"]; + }; + "function.macro" = bright.cyan; + "function.builtin" = normal.yellow; + "tag" = normal.red; + "comment" = { + fg = normal.magenta; + modifiers = ["italic"]; + }; + "constant" = {fg = bright.magenta;}; + "constant.builtin" = { + fg = bright.magenta; + modifiers = ["bold"]; + }; + "string" = normal.green; + "constant.numeric" = bright.magenta; + "constant.character.escape" = { + fg = bright.white; + modifiers = ["bold"]; + }; + "label" = bright.cyan; + "module" = bright.cyan; + "diff.plus" = bright.green; + "diff.delta" = bright.yellow; + "diff.minus" = bright.red; + "warning" = bright.yellow; + "error" = bright.red; + "info" = bright.cyan; + "hint" = bright.blue; + "ui.background" = {bg = util.bg;}; + "ui.linenr" = {fg = normal.cyan;}; + "ui.linenr.selected" = { + fg = normal.yellow; + modifiers = ["bold"]; + }; + "ui.cursorline" = {bg = normal.black;}; + "ui.statusline" = { + fg = util.fg; + bg = bright.black; + }; + "ui.statusline.normal" = { + fg = util.fg; + bg = bright.black; + }; + "ui.statusline.insert" = { + fg = util.fg; + bg = normal.blue; + }; + "ui.statusline.select" = { + fg = util.fg; + bg = bright.yellow; + }; + "ui.statusline.inactive" = { + fg = normal.white; + bg = normal.black; + }; + "ui.popup" = {bg = normal.black;}; + "ui.window" = {bg = normal.black;}; + "ui.help" = { + bg = normal.black; + fg = util.fg; + }; + "ui.text" = {fg = util.fg;}; + "ui.text.focus" = {fg = util.fg;}; + "ui.selection" = { + # modifiers = ["reversed"]; + bg = bright.yellow; + }; + "ui.selection.primary" = {modifiers = ["reversed"];}; + # "ui.selection.primary" = { bg = bright.cyan; }; + "ui.cursor.primary" = { + bg = normal.white; + fg = normal.black; + }; + "ui.cursor.match" = {bg = bright.cyan;}; + "ui.menu" = { + fg = util.fg; + bg = bright.black; + }; + "ui.menu.selected" = { + fg = bright.black; + bg = bright.blue; + modifiers = ["bold"]; + }; + "ui.virtual.whitespace" = bright.black; + "ui.virtual.ruler" = {bg = normal.black;}; + "ui.virtual.inlay-hint" = {fg = normal.magenta;}; + "diagnostic.warning" = { + underline = { + color = bright.yellow; + style = "curl"; + }; + }; + "diagnostic.error" = { + underline = { + color = bright.red; + style = "curl"; + }; + }; + "diagnostic.info" = { + underline = { + color = bright.cyan; + style = "curl"; + }; + }; + "diagnostic.hint" = { + underline = { + color = bright.blue; + style = "curl"; + }; + }; + "markup.heading" = bright.cyan; + "markup.bold" = {modifiers = ["bold"];}; + "markup.italic" = {modifiers = ["italic"];}; + "markup.strikethrough" = {modifiers = ["crossed_out"];}; + "markup.link.url" = { + fg = bright.green; + modifiers = ["underlined"]; + }; + "markup.link.text" = bright.red; + "markup.raw" = bright.red; + }; + }; + + # theme = "nix-rice" + + # [editor] + # bufferline = "multiple" + # cursorline = true + # true-color = true + + # [editor.cursor-shape] + # insert = "bar" + # normal = "block" + # select = "underline" + + # [editor.lsp] + # display-messages = true + + # [editor.statusline] + # left = ["mode", "spinner", "version-control", "file-name", "file-modification-indicator"] + + settings = { + theme = "nix-rice"; + editor = { + bufferline = "multiple"; + cursorline = true; + true-color = true; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + statusline.left = ["mode" "spinner" "version-control" "file-name" "file-modification-indicator"]; + lsp.display-messages = true; + keys = let + extend = { + "A-x" = "extend_to_line_bounds"; + "X" = ["extend_line_up" "extend_to_line_bounds"]; + }; + in { + normal = extend; + select = extend; + }; + }; + }; + + languages = { + language = [ + { + name = "rust"; + language-servers = ["rust-analyzer" "lsp-ai"]; + auto-format = true; + } + { + name = "nix"; + language-servers = ["nixd" "lsp-ai"]; + file-types = ["nix"]; + # auto-format = true; + formatter = { + command = "alejandra"; + }; + } + { + name = "ocaml"; + language-servers = ["ocamllsp" "lsp-ai"]; + file-types = ["ml" "mli"]; + auto-format = true; + formatter = { + command = "ocamlformat"; + }; + } + ]; + + language-server = { + nixd = { + command = "nixd"; + }; + + lsp-ai = { + command = "lsp-ai"; + config = { + memory.fileStore = {}; + models = { + llama32 = { + type = "ollama"; + model = "llama3.2"; + }; + starcoder2 = { + type = "ollama"; + model = "starcoder2:7b"; + }; + }; + completion = { + model = "starcoder2"; + parameters = { + maxContext = 1024; + options = { + numPredict = 32; + }; + postProcess = { + removeDuplicateStart = true; + removeDuplicateEnd = true; + }; + }; + }; + chat = { + trigger = "!C"; + action_display_name = "Chat"; + model = "llama32"; + parameters = { + max_context = 4096; + max_tokens = 1024; + system = "You are a code assistant chatbot. The user will ask you for assistance coding and you will do your best to answer succinctly and accurately."; + }; + }; + }; + }; + + rust-analyzer = { + config = { + cargo = { + buildScripts = { + enable = true; + }; + }; + procMacro = { + enable = true; + }; + check = { + command = "clippy"; + }; + }; + }; + }; #language-server + }; #languages + }; #helix config +} diff --git a/home/programs/helix.nix b/home/programs/helix.nix index 71519c3..8936848 100644 --- a/home/programs/helix.nix +++ b/home/programs/helix.nix @@ -155,9 +155,47 @@ in { }; }; + # theme = "nix-rice" + + # [editor] + # bufferline = "multiple" + # cursorline = true + # true-color = true + + # [editor.cursor-shape] + # insert = "bar" + # normal = "block" + # select = "underline" + + # [editor.lsp] + # display-messages = true + + # [editor.statusline] + # left = ["mode", "spinner", "version-control", "file-name", "file-modification-indicator"] + settings = { theme = "nix-rice"; - editor.lsp.display-messages = true; + editor = { + bufferline = "multiple"; + cursorline = true; + true-color = true; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + statusline.left = ["mode" "spinner" "version-control" "file-name" "file-modification-indicator"]; + lsp.display-messages = true; + # keys = let + # extend = { + # "A-x" = "extend_to_line_bounds"; + # "X" = ["extend_line_up" "extend_to_line_bounds"]; + # }; + # in { + # normal = extend; + # select = extend; + # }; + }; }; languages = { @@ -170,7 +208,7 @@ in { name = "nix"; language-servers = ["nixd"]; file-types = ["nix"]; - auto-format = true; + # auto-format = true; formatter = { command = "alejandra"; }; diff --git a/home/programs/murex.nix b/home/programs/murex.nix index 1f0ba85..1d7346a 100644 --- a/home/programs/murex.nix +++ b/home/programs/murex.nix @@ -17,27 +17,27 @@ mount -> column -t -> culr -t 80 -o roygbiv-split } - function la_culr { - if { $1 } { - eza -lha --group-directories-first --icons --color=always $1 -> culr -t 80 -o roygbiv-split - } else { + function la_culr (!path: str) { + if { is-null $path } { eza -lha --group-directories-first --icons --color=always -> culr -t 80 -o roygbiv-split - } - } - - function ls_culr { - if { $1 } { - eza -lh --group-directories-first --icons --color=always $1 -> culr -t 80 -o roygbiv-split } else { - eza -lh --group-directories-first --icons --color=always -> culr -t 80 -o roygbiv-split + eza -lha --group-directories-first --icons --color=always $path -> culr -t 80 -o roygbiv-split } } - function ps_culr { - if { $1 } { - ps ww$1 | culr -t 80 -o roygbiv-split - } else { + function ls_culr (!path: str) { + if { is-null $path } { + eza -lh --group-directories-first --icons --color=always -> culr -t 80 -o roygbiv-split + } else { + eza -lh --group-directories-first --icons --color=always $path -> culr -t 80 -o roygbiv-split + } + } + + function ps_culr (!cmd: str) { + if { is-null $cmd } { ps ww | culr -t 80 -o roygbiv-split + } else { + ps ww$cmd | culr -t 80 -o roygbiv-split } } diff --git a/system/cachix.nix b/system/cachix.nix index 5ada952..a3caae1 100644 --- a/system/cachix.nix +++ b/system/cachix.nix @@ -11,7 +11,19 @@ in { inherit imports; nix.settings = { - substituters = ["https://cache.nixos.org" "https://nix-community.cachix.org" "https://helix.cachix.org" "https://cosmic.cachix.org"]; - trusted-public-keys = ["cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs=" "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="]; + substituters = [ + "https://cache.nixos.org" + "https://nix-community.cachix.org" + "https://helix.cachix.org" + "https://cosmic.cachix.org" + "https://cuda-maintainers.cachix.org" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs=" + "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + ]; }; } diff --git a/system/configuration.nix b/system/configuration.nix index e626d4c..472c34a 100644 --- a/system/configuration.nix +++ b/system/configuration.nix @@ -13,12 +13,16 @@ inputs.nixd.overlays.default outputs.overlays.additions outputs.overlays.rice + outputs.overlays.murex outputs.overlays.murex-starship outputs.overlays.murex-jump + outputs.overlays.comfyui + outputs.overlays.comfyui-plugins ]; config = { allowUnfree = true; allowUnfreePredicate = _: true; + cudaSupport = true; }; }; diff --git a/system/quiver.nix b/system/quiver.nix index 9422a5f..ddc11b4 100644 --- a/system/quiver.nix +++ b/system/quiver.nix @@ -91,14 +91,14 @@ # }; }; - services.minidlna = { - enable = true; - settings = { - notify_interval = 120; - friendly_name = "PC"; - media_dir = ["A,/data/Music/Slsk"]; - }; - }; + # services.minidlna = { + # enable = true; + # settings = { + # notify_interval = 120; + # friendly_name = "PC"; + # media_dir = ["A,/data/Music/Slsk"]; + # }; + # }; services.xserver.videoDrivers = ["nvidia"]; # TODO figure out why i can't resume properly @@ -111,14 +111,16 @@ }; programs.xwayland.enable = true; - systemd.services.no-rgb = { - wantedBy = ["multi-user.target"]; - description = "rgb led turn-off-er"; - serviceConfig = { - Type = "oneshot"; - ExecStart = ''${pkgs.openrgb}/bin/openrgb -d "HyperX Fury RGB" -m static -c 000000''; - }; - }; + # openrgb no longer recognises the device? + # systemd.services.no-rgb = { + # wantedBy = ["multi-user.target"]; + # description = "rgb led turn-off-er"; + # serviceConfig = { + # Type = "oneshot"; + # ExecStart = ''${pkgs.openrgb}/bin/openrgb -d "HyperX Fury RGB" -m static -c 000000''; + # After = ["openrgb"]; + # }; + # }; services.hardware.openrgb = { enable = true; diff --git a/util/overlay.nix b/util/overlay.nix index 97ffc66..46b8390 100644 --- a/util/overlay.nix +++ b/util/overlay.nix @@ -3,4 +3,13 @@ rice = import ./rice.nix; murex-jump = inputs.murex-jump.overlays.murex-jump; murex-starship = inputs.murex-starship.overlays.murex-starship; + comfyui = inputs.comfyui.overlays.comfyui; + comfyui-plugins = inputs.comfyui-plugins.overlays.comfyui-plugins; + murex = final: prev: { + murex = prev.murex.overrideAttrs { + version = "6.4.0309-dev"; + src = inputs.murex; + vendorHash = "sha256-NIhg8D8snCNxpb3i2JG5tLcZteYBCGN4QbOowG/vgJE="; + }; + }; }