guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 4aa418e1c634ca81be8d515a28c6f2e6c96d326f
Author: Andy Tai <[email protected]>
AuthorDate: Thu Dec 25 04:24:37 2025 -0800

    gnu: Add koboldcpp.
    
    * gnu/packages/machine-learning.scm (koboldcpp): New variable.
    
    Merges guix/guix#5108
    
    Change-Id: I0ad8bee1ad7934eb90e16f50877ba2b6f96976af
    Modified-by: Cayetano Santos <[email protected]>
    Signed-off-by: Cayetano Santos <[email protected]>
---
 gnu/packages/machine-learning.scm | 94 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 93 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/machine-learning.scm 
b/gnu/packages/machine-learning.scm
index 7ac8d1ff63..58ae2dd6cc 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -28,7 +28,7 @@
 ;;; Copyright © 2024 Timothee Mathieu <[email protected]>
 ;;; Copyright © 2024 Spencer King <[email protected]>
 ;;; Copyright © 2024, 2025 David Elsing <[email protected]>
-;;; Copyright © 2024 Andy Tai <[email protected]>
+;;; Copyright © 2024, 2025 Andy Tai <[email protected]>
 ;;; Copyright © 2025 Lapearldot <[email protected]>
 ;;; Copyright © 2025 Cayetano Santos <[email protected]>
 ;;; Copyright © 2025 Janneke Nieuwenhuizen <[email protected]>
@@ -4322,6 +4322,98 @@ TVM works with deep learning frameworks to provide end 
to end compilation to
 different backends")
       (license license:asl2.0))))
 
+(define-public koboldcpp
+  (package
+    (name "koboldcpp")
+    (version "1.105.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/LostRuins/koboldcpp";)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13ihvqxbf1gl3bnml4cn403z9nvwwc8vfc26a18wzanbkszfjylv"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no tests
+      #:imported-modules `(,@%default-gnu-imported-modules
+                           (guix build python-build-system))
+      #:modules '((guix build gnu-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:make-flags
+      #~(list (string-append "CC=" #$(cc-for-target))
+              "LLAMA_VULKAN=1"
+              "LLAMA_PORTABLE=1"
+              "LLAMA_USE_BUNDLED_GLSLC=0")    ;; TODO: add CLBLAS
+      #:phases
+      (with-extensions (list (pyproject-guile-json))
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (replace 'install
+              (lambda _
+                (for-each
+                 (lambda (f)
+                   (install-file f (string-append #$output "/bin")))
+                 (append (list "koboldcpp.py"
+                               "vulkan-shaders-gen"
+                               "vulkan-shaders-gen-noext")
+                         ;; koboldcpp.py expects .so's
+                         ;; to be in the same directory
+                         (find-files "." "\\.so$")))))
+            (add-after 'install 'python-wrap
+              (lambda* (#:key inputs outputs #:allow-other-keys)
+                (wrap-program (search-input-file outputs "bin/koboldcpp.py")
+                  `("GUIX_PYTHONPATH" =
+                    (,(getenv "GUIX_PYTHONPATH")
+                     ,(python:site-packages inputs outputs))))))))))
+    (inputs
+     (list bash-minimal
+           openblas
+           python
+           python-customtkinter
+           spirv-headers
+           spirv-tools
+           vulkan-headers
+           vulkan-loader)) ;TODO: add OpenCL
+    (native-inputs
+     (list shaderc))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/lostruins/koboldcpp";)
+    (synopsis "AI text-generation software for GGML and GGUF models")
+    (description "KoboldCpp is an easy-to-use AI text-generation software for
+GGML and GGUF models, builds off llama.cpp and adds many additional features:
+
+@itemize
+@item Runs on CPU or GPU, supports full or partial offloaded
+@item LLM text generation (Supports all GGML and GGUF models, backwards
+compatibility with ALL past models)
+@item Image Generation (Stable Diffusion 1.5, SDXL, SD3, Flux)
+@item Speech-To-Text (Voice Recognition) via Whisper
+@item Text-To-Speech (Voice Generation) via OuteTTS, Kokoro, Parler and Dia
+@item Provides many compatible APIs endpoints for many popular webservices
+(KoboldCppApi OpenAiApi OllamaApi A1111ForgeApi ComfyUiApi
+WhisperTranscribeApi XttsApi OpenAiSpeechApi)
+@item Bundled KoboldAI Lite UI with editing tools, save formats, memory,
+world info, author's note, characters, scenarios
+@item Includes multiple modes (chat, adventure, instruct, storywriter)
+and UI Themes (aesthetic roleplay, classic writer, corporate assistant
+messsenger)
+@item Supports loading Tavern Character Cards, importing many different
+data formats from various sites, reading or exporting JSON savefiles
+and persistent stories
+@item Many other features including new samplers, regex support
+websearch, RAG via TextDB, image recognition/vision and more
+@end itemize
+
+All up-to-date GGUF models are supported, and KoboldCpp also includes backward
+compatibility for older versions/legacy GGML models.")
+    (license (list license:agpl3 license:expat))))
+
+
 (define-public foxi
   (let
       ((commit "c278588e34e535f0bb8f00df3880d26928038cad")

Reply via email to