From e00ceee20bd03c1c7790e1b264952b66ea854d77 Mon Sep 17 00:00:00 2001 From: Adrian G L Date: Tue, 19 May 2026 17:27:03 +0200 Subject: [PATCH] fix llama cpp ui --- flake.nix | 12 +++++++-- packages/llama-cpp-nightly/default.nix | 7 +++++- packages/llama-cpp-nightly/ui.nix | 35 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 packages/llama-cpp-nightly/ui.nix diff --git a/flake.nix b/flake.nix index d371b2a..80b1425 100644 --- a/flake.nix +++ b/flake.nix @@ -86,6 +86,7 @@ s2cpp s2-model vllm-omni + llama-cpp-ui llama-cpp-nightly llama-cpp-nightly-vulkan llama-cpp-nightly-sycl @@ -104,12 +105,19 @@ s2cpp = final.callPackage ./packages/s2cpp { }; s2-model = final.callPackage ./packages/s2-model { }; vllm-omni = final.python3Packages.callPackage ./packages/vllm-omni { }; - llama-cpp-nightly = final.callPackage ./packages/llama-cpp-nightly { }; - llama-cpp-nightly-vulkan = final.callPackage ./packages/llama-cpp-nightly { vulkanSupport = true; }; + llama-cpp-ui = final.callPackage ./packages/llama-cpp-nightly/ui.nix { }; + llama-cpp-nightly = final.callPackage ./packages/llama-cpp-nightly { + uiAssets = final.custom.llama-cpp-ui; + }; + llama-cpp-nightly-vulkan = final.callPackage ./packages/llama-cpp-nightly { + vulkanSupport = true; + uiAssets = final.custom.llama-cpp-ui; + }; llama-cpp-nightly-sycl = final.callPackage ./packages/llama-cpp-nightly { syclSupport = true; mkl = final.mkl; oneDNN = final.oneDNN; + uiAssets = final.custom.llama-cpp-ui; }; android-cli = final.callPackage ./packages/android-cli { }; }; diff --git a/packages/llama-cpp-nightly/default.nix b/packages/llama-cpp-nightly/default.nix index eca2276..825557c 100644 --- a/packages/llama-cpp-nightly/default.nix +++ b/packages/llama-cpp-nightly/default.nix @@ -43,6 +43,8 @@ syclStdenv ? null, syclF16Support ? false, syclDeviceArch ? "", + + uiAssets ? null, }: let @@ -116,6 +118,9 @@ effectiveStdenv.mkDerivation (finalAttrs: { preConfigure = '' prependToVar cmakeFlags "-DLLAMA_BUILD_COMMIT:STRING=$(cat COMMIT)" + '' + optionalString (uiAssets != null) '' + mkdir -p $sourceRoot/build/tools/ui/dist + cp ${uiAssets}/* $sourceRoot/build/tools/ui/dist/ ''; cmakeFlags = [ @@ -123,7 +128,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { (cmakeBool "LLAMA_BUILD_EXAMPLES" false) (cmakeBool "LLAMA_BUILD_SERVER" true) (cmakeBool "LLAMA_BUILD_TESTS" false) - (cmakeBool "LLAMA_BUILD_UI" false) + (cmakeBool "LLAMA_BUILD_UI" (uiAssets != null)) (cmakeBool "BUILD_SHARED_LIBS" true) (cmakeBool "GGML_BLAS" blasSupport) (cmakeBool "GGML_CLBLAST" openclSupport) diff --git a/packages/llama-cpp-nightly/ui.nix b/packages/llama-cpp-nightly/ui.nix new file mode 100644 index 0000000..81b5d57 --- /dev/null +++ b/packages/llama-cpp-nightly/ui.nix @@ -0,0 +1,35 @@ +{ + lib, + buildNpmPackage, + fetchFromGitHub, +}: + +buildNpmPackage (finalAttrs: { + pname = "llama-cpp-nightly-ui"; + version = "9222"; + + src = fetchFromGitHub { + owner = "ggml-org"; + repo = "llama.cpp"; + tag = "b${finalAttrs.version}"; + hash = "sha256-Ws0a2qkgTFoeUuzg6tKbY6PfDP+0/9D9DTx21fLoFak="; + }; + + sourceRoot = "source/tools/ui"; + + npmDepsHash = lib.fakeHash; + + installPhase = '' + runHook preInstall + mkdir $out + cp ../../build/tools/ui/dist/* $out/ + runHook postInstall + ''; + + meta = { + description = "Web UI for llama.cpp server"; + homepage = "https://github.com/ggml-org/llama.cpp"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + }; +})