diff --git a/lib/module/default.nix b/lib/module/default.nix index 757bcd3..ee2a0a8 100644 --- a/lib/module/default.nix +++ b/lib/module/default.nix @@ -169,7 +169,7 @@ rec { { name, localAddress ? "127.0.0.1", - ports ? [ "80" ], + ports ? [ 80 ], bindMounts ? { }, config ? { }, }: diff --git a/modules/nixos/services/ai/default.nix b/modules/nixos/services/ai/default.nix index cbb3908..4dd085c 100755 --- a/modules/nixos/services/ai/default.nix +++ b/modules/nixos/services/ai/default.nix @@ -26,24 +26,30 @@ let group = "jallen-nas"; openFirewall = cfg.openFirewall; rocmOverrideGfx = "11.0.2"; - loadModels = [ "mistral:instruct" ]; + loadModels = [ ]; home = "${cfg.configDir}/ollama"; }; llama-cpp = { - enable = false; + enable = true; port = 8127; host = "0.0.0.0"; openFirewall = cfg.openFirewall; - # model = "${cfg.configDir}/llama-cpp/models/functionary-small-v3.2-GGUF/functionary-small-v3.2.Q4_0.gguf"; + model = "${cfg.configDir}/llama-cpp/models/Qwen3-Coder-Next-Q4_0.gguf"; package = pkgs.llama-cpp-rocm; extraFlags = [ - "--n_gpu-layers" - "500" - "-c" - "0" - "--numa" - "numactl" + "--fit" + "on" + "--seed" + "3407" + "--temp" + "1.0" + "--top-p" + "0.95" + "--min-p" + "0.01" + "--top-k" + "40" "--jinja" ]; }; @@ -78,4 +84,11 @@ let in { imports = [ aiConfig ]; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + amdgpu_top + python3Packages.huggingface-hub + ]; + }; } diff --git a/packages/comfyui/.asddefault.nix b/packages/comfyui/.asddefault.nix new file mode 100644 index 0000000..52e0292 --- /dev/null +++ b/packages/comfyui/.asddefault.nix @@ -0,0 +1,86 @@ +{ + lib, + stdenv, + fetchFromGitHub, + python3Packages, + ... +}: + +python3Packages.buildPythonPackage rec { + pname = "comfyui"; + version = "0.12.0"; + pyproject = true; + + disabled = python3Packages.pythonOlder "3.11"; + + src = fetchFromGitHub { + owner = "Comfy-Org"; + repo = "ComfyUI"; + tag = "v${version}"; + hash = "sha256-fCTMxtFkAy4TfUgtj42EKmvw/hr/L9Y3OKfHXpnSkPw="; + }; + + # pythonRelaxDeps = [ + # "aiomqtt" + # "pycryptodome" + # ]; + + build-system = with python3Packages; [ + + ]; + + dependencies = + with python3Packages; + [ + aiohttp + torch + torchaudio + torchvision + numpy + requests + + torchsde + einops + transformers + tokenizers + sentencepiece + safetensors + aiohttp + yarl + pyyaml + pillow + scipy + tqdm + psutil + alembic + sqlalchemy + av + requests + + #non essential dependencies: + kornia + # spandrel + pydantic + pydantic-settings + ]; + + nativeCheckInputs = with python3Packages; [ + + ]; + + setupPhase = null; + + # comfyui-frontend-package==1.37.11 + # comfyui-workflow-templates==0.8.31 + # comfyui-embedded-docs==0.4.0 + # comfy-kitchen + # comfy-aimdo + + + # pythonImportsCheck = [ "roborock" ]; + + meta = with lib; { + maintainers = [ ]; + mainProgram = "comfyui"; + }; +} diff --git a/packages/comfyui/comfyui-desktop/default.nix b/packages/comfyui/comfyui-desktop/default.nix new file mode 100644 index 0000000..2194fdc --- /dev/null +++ b/packages/comfyui/comfyui-desktop/default.nix @@ -0,0 +1,58 @@ +{ + stdenv, + lib, + python3Packages, + fetchFromGitHub, + ... +}: +stdenv.mkDerivation rec { + pname = "comfyui-desktop"; + version = "0.8.0"; + + src = fetchFromGitHub { + owner = "Comfy-Org"; + repo = "desktop"; + tag = "v${version}"; + hash = "sha256-hPqC6JsQp3pwx7JkrtTNjhxaKLp/4e2VBRT4wjrxvtE="; + }; + + dontUnpack = false; + dontBuild = true; + dontConfigure = true; + + nativeBuildInputs = [ ]; + + installPhase = '' + mkdir -p $out + cp -r $src $out + ''; + # ln -s ${comfyUiLauncher}/bin/comfy-ui $out/bin/comfy-ui + # ln -s $out/bin/comfy-ui $out/bin/comfyui + + passthru = { + inherit + # comfyuiSrc + # pythonRuntime + # modelDownloaderDir + # frontendRoot + # dependencies + version + ; + + }; + + meta = with lib; { + description = "ComfyUI - A powerful and modular diffusion model GUI"; + homepage = "https://github.com/comfyanonymous/ComfyUI"; + # ComfyUI is GPL-3.0; bundled custom nodes have various licenses + license = with licenses; [ + gpl3 # ComfyUI, Impact Pack, KJNodes + agpl3Only # bitsandbytes-NF4 + mit # rgthree-comfy, Florence2, MMAudio + asl20 # GGUF, LTXVideo, x-flux, PuLID, WanVideoWrapper + ]; + platforms = platforms.linux ++ platforms.darwin; + maintainers = [ ]; + mainProgram = "comfy-ui"; + }; +} \ No newline at end of file diff --git a/packages/comfyui/comfyui-frontend/default.nix b/packages/comfyui/comfyui-frontend/default.nix new file mode 100644 index 0000000..231a4b6 --- /dev/null +++ b/packages/comfyui/comfyui-frontend/default.nix @@ -0,0 +1,58 @@ +{ + stdenv, + lib, + python3Packages, + fetchFromGitHub, + ... +}: +stdenv.mkDerivation rec { + pname = "comfyui-frontend"; + version = "1.39.5"; + + src = fetchFromGitHub { + owner = "Comfy-Org"; + repo = "ComfyUI_frontend"; + tag = "v${version}"; + hash = "sha256-zEAPCR0Q4eo3HVImqCWB2T3mBDv55573vcJI/TYf32o="; + }; + + dontUnpack = false; + dontBuild = true; + dontConfigure = true; + + nativeBuildInputs = [ ]; + + installPhase = '' + mkdir -p $out + cp -r $src $out + ''; + # ln -s ${comfyUiLauncher}/bin/comfy-ui $out/bin/comfy-ui + # ln -s $out/bin/comfy-ui $out/bin/comfyui + + passthru = { + inherit + # comfyuiSrc + # pythonRuntime + # modelDownloaderDir + # frontendRoot + # dependencies + version + ; + + }; + + meta = with lib; { + description = "ComfyUI - A powerful and modular diffusion model GUI"; + homepage = "https://github.com/comfyanonymous/ComfyUI"; + # ComfyUI is GPL-3.0; bundled custom nodes have various licenses + license = with licenses; [ + gpl3 # ComfyUI, Impact Pack, KJNodes + agpl3Only # bitsandbytes-NF4 + mit # rgthree-comfy, Florence2, MMAudio + asl20 # GGUF, LTXVideo, x-flux, PuLID, WanVideoWrapper + ]; + platforms = platforms.linux ++ platforms.darwin; + maintainers = [ ]; + mainProgram = "comfy-ui"; + }; +} \ No newline at end of file diff --git a/packages/comfyui/comfyui/default.nix b/packages/comfyui/comfyui/default.nix new file mode 100644 index 0000000..0fcfa17 --- /dev/null +++ b/packages/comfyui/comfyui/default.nix @@ -0,0 +1,109 @@ +{ + stdenv, + lib, + python3Packages, + fetchFromGitHub, + pkgs, + namespace, + python3, + ... +}: +let + dependencies = + with python3Packages; + [ + aiohttp + torch + torchaudio + torchvision + numpy + requests + + torchsde + einops + transformers + tokenizers + sentencepiece + safetensors + aiohttp + yarl + pyyaml + pillow + scipy + tqdm + psutil + alembic + sqlalchemy + av + requests + + #non essential dependencies: + kornia + # spandrel + pydantic + pydantic-settings + ] + ++ (with pkgs.${namespace}; [ + comfy-aimdo + ]); + pythonEnv = python3.withPackages ( + _ps: dependencies + ); +in +stdenv.mkDerivation rec { + pname = "comfy-ui"; + version = "0.12.0"; + + src = fetchFromGitHub { + owner = "Comfy-Org"; + repo = "ComfyUI"; + tag = "v${version}"; + hash = "sha256-fCTMxtFkAy4TfUgtj42EKmvw/hr/L9Y3OKfHXpnSkPw="; + }; + + dontUnpack = false; + dontBuild = true; + dontConfigure = true; + + nativeBuildInputs = [ ]; + + installPhase = '' + mkdir -p $out/{bin,app} + ln -sf ${pythonEnv}/bin/python $out/bin/python + cp -r $src/* $out/app + ''; + # ln -s ${comfyUiLauncher}/bin/comfy-ui $out/bin/comfy-ui + # ln -s $out/bin/comfy-ui $out/bin/comfyui + + # passthru = { + # inherit + # # comfyuiSrc + # # pythonRuntime + # # modelDownloaderDir + # # frontendRoot + # dependencies + # version + # ; + + # }; + + meta = with lib; { + description = "ComfyUI - A powerful and modular diffusion model GUI"; + homepage = "https://github.com/comfyanonymous/ComfyUI"; + # ComfyUI is GPL-3.0; bundled custom nodes have various licenses + license = with licenses; [ + gpl3 # ComfyUI, Impact Pack, KJNodes + agpl3Only # bitsandbytes-NF4 + mit # rgthree-comfy, Florence2, MMAudio + asl20 # GGUF, LTXVideo, x-flux, PuLID, WanVideoWrapper + ]; + platforms = platforms.linux ++ platforms.darwin; + maintainers = [ + { + name = "James Brink"; + github = "utensils"; + } + ]; + mainProgram = "comfy-ui"; + }; +} \ No newline at end of file diff --git a/packages/linux-cachyos/prepare.nix b/packages/linux-cachyos/prepare.nix index 62c8253..8bc707b 100644 --- a/packages/linux-cachyos/prepare.nix +++ b/packages/linux-cachyos/prepare.nix @@ -121,6 +121,8 @@ let # _vma_config, defaults to "standard" "-e PER_VMA_LOCK" "-d PER_VMA_LOCK_STATS" + + "-m BCACHEFS_FS" ] ++ hugePagesConfig ++ damonConfig diff --git a/packages/python/comfy-aimdo/default.nix b/packages/python/comfy-aimdo/default.nix new file mode 100644 index 0000000..1e19414 --- /dev/null +++ b/packages/python/comfy-aimdo/default.nix @@ -0,0 +1,24 @@ +{ python3Packages, fetchFromGitHub, lib, ... }: +python3Packages.buildPythonPackage rec { + pname = "comfy-aimdo"; + version = "0.1.7"; + format = "pyproject"; +# Comfy-Org/comfy-aimdo/releases/tag/v0.1.7 + src = fetchFromGitHub { + owner = "Comfy-Org"; + repo = "comfy-aimdo"; + rev = "v${version}"; + sha256 = "sha256-RNORTKtnTHZ4lcEx5gM3jSr+ZffrV8cd+x74NeRhlsM="; + }; + + buildInputs = with python3Packages; [ + setuptools + setuptools-scm + ]; + nativeBuildInputs = with python3Packages; [ + build + wheel + ]; + + doCheck = false; +} diff --git a/packages/python/comfy-kitchen/default.nix b/packages/python/comfy-kitchen/default.nix new file mode 100644 index 0000000..3ffe418 --- /dev/null +++ b/packages/python/comfy-kitchen/default.nix @@ -0,0 +1,12 @@ +{ python3Packages, fetchurl, lib, ... }: +python3Packages.buildPythonPackage rec { + pname = "comfy-kitchen"; + version = "0.2.7"; + format = "wheel"; +# https://files.pythonhosted.org/packages/f8/65/d483613734d0b9753bd9bfa297ff334cb2c7766e82306099db6b259b4e2c/comfy_kitchen-0.2.7-py3-none-any.whl + src = fetchurl { + url = "https://files.pythonhosted.org/packages/f8/65/d483613734d0b9753bd9bfa297ff334cb2c7766e82306099db6b259b4e2c/comfy_kitchen-0.2.7-py3-none-any.whl"; + sha256 = "sha256-+PqlebadMx0vHqwJ6WqVWGwqa5WKVLwZ5/HBp3hS3TY="; + }; + doCheck = false; +} diff --git a/systems/x86_64-linux/jallen-nas/default.nix b/systems/x86_64-linux/jallen-nas/default.nix index c3b640b..d9ef56a 100755 --- a/systems/x86_64-linux/jallen-nas/default.nix +++ b/systems/x86_64-linux/jallen-nas/default.nix @@ -6,7 +6,15 @@ ... }: let - inherit (lib.${namespace}) enabled disabled; + inherit (lib.${namespace}) enabled disabled mkContainer; + + testcontainer = mkContainer { + name = "testContainer"; + localAddress = "10.1.1.3"; + ports = [ 80 ]; + bindMounts = { }; + config = { }; + }; in { imports = [ @@ -18,6 +26,7 @@ in ./services.nix ./sops.nix ./vpn.nix + # testcontainer ]; services.kmscon = disabled; @@ -331,12 +340,12 @@ in tpm2-tools tpm2-tss ]; - persistence."/media/nas/main/persist" = { - hideMounts = true; - directories = [ + # persistence."/media/nas/main/persist" = { + # hideMounts = true; + # directories = [ - ]; - }; + # ]; + # }; }; networking.firewall.checkReversePath = false;