guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 6474d4b4388d4fc8f4d9afb20b6b33058d0a6d3a
Author: Malte Frank Gerdes <[email protected]>
AuthorDate: Fri Sep 11 15:10:39 2026 +0200

    gnu: emacs-xyz: Add emacs-geiser-chicken.
    
    * gnu/packages/emacs-xyz.scm (emacs-geiser-chicken): New variable.
    
    Signed-off-by: Liliana Marie Prikler <[email protected]>
---
 gnu/packages/emacs-xyz.scm | 86 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 722609003a2..091282018ec 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -171,6 +171,7 @@
 ;;; Copyright © 2026 Julian Flake <[email protected]>
 ;;; Copyright © 2026 John Haman <[email protected]>
 ;;; Copyright © 2026 Konstantin Suntsov <[email protected]>
+;;; Copyright © 2026 Malte Frank Gerdes <[email protected]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -213,6 +214,7 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages chez)
+  #:use-module (gnu packages chicken)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages code)
   #:use-module (gnu packages cpp)
@@ -1467,6 +1469,90 @@ communicating with LLM agents.")
 powered by @uref{https://agentclientprotocol.com/, Agent Client Protocol} 
(ACP).")
     (license license:gpl3+)))
 
+(define-public emacs-geiser-chicken
+  (let ((commit "ba0c16df8ce21f1722e27e4591656c9b64fafdff")
+        (revision "0"))
+    (package
+      (name "emacs-geiser-chicken")
+      (version (git-version "0.17" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+                (url "https://codeberg.org/geiser/chicken";)
+                (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "02dqjly5qms6kxivw1al1l6kzjs7gblb2xv1f2ikhkab3mpxrs9x"))))
+      (build-system emacs-build-system)
+      (arguments
+       (list
+        #:include #~(cons "^src/" %default-include)
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'wrap-csi
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let* ((dirs (search-path-as-list
+                              '("var/lib/chicken/12")
+                              (list
+                               #$@(map cadr (package-inputs this-package)))))
+                       (doc-dir (string-append
+                                 #$(this-package-input "chicken-doc")
+                                 "/share/doc-db"))
+                       (wrapped-csi (string-append #$output "/libexec/csi")))
+                  (mkdir-p (dirname wrapped-csi))
+                  (with-output-to-file wrapped-csi
+                    (lambda _
+                      (format (current-output-port) "#!~a
+export 
CHICKEN_REPOSITORY_PATH=~a${CHICKEN_REPOSITORY_PATH:+:}$CHICKEN_REPOSITORY_PATH
+export CHICKEN_DOC_REPOSITORY=~a
+exec ~a \"$@\""
+                              (search-input-file inputs "/bin/sh")
+                              (string-join dirs ":")
+                              doc-dir
+                              (search-input-file inputs "bin/csi"))))
+                  (chmod wrapped-csi #o555))))
+            (add-after 'wrap-csi 'patch-geiser-chicken-binary
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "geiser-chicken.el"
+                  (("\\(t \"csi\")")
+                   (format #f "(t ~s)"
+                           (string-append #$output "/libexec/csi"))))))
+            (add-after 'make-autoloads 'patch-autoloads
+              (lambda _
+                (substitute* "geiser-chicken-autoloads.el"
+                  ;; Activating implementations fails when Geiser is not yet
+                  ;; loaded, so let's defer that until it is.
+                  (("\\(geiser-activate-implementation .*\\)" all)
+                   (string-append
+                    "(eval-after-load 'geiser-impl '" all ")"))
+                  (("\\(geiser-implementation-extension .*\\)" all)
+                   (string-append
+                    "(eval-after-load 'geiser-impl '" all ")"))))))))
+      (inputs
+       (list bash-minimal
+             chicken
+             chicken-apropos
+             chicken-check-errors
+             chicken-doc
+             chicken-fmt
+             chicken-matchable
+             chicken-srfi-1
+             chicken-srfi-13
+             chicken-srfi-14
+             chicken-srfi-18
+             chicken-srfi-69
+             chicken-sxml-transforms
+             chicken-symbol-utils))
+      (propagated-inputs
+       (list emacs-geiser))
+      (home-page "https://www.nongnu.org/geiser/";)
+      (synopsis "Chicken Scheme support for Geiser")
+      (description
+       "This package adds support for the Chicken Scheme implementation to
+Geiser, a generic Scheme interaction mode for the GNU Emacs editor.")
+      (license license:bsd-3))))
+
 (define-public emacs-geiser-guile
   (package
     (name "emacs-geiser-guile")

Reply via email to