guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 9d0fce8d975b18ad987a485fd7e63378564946dc
Author: Giacomo Leidi <[email protected]>
AuthorDate: Sat Feb 21 01:11:58 2026 +0100

    gnu: Add guix-compose.
    
    * gnu/packages/containers.scm (guix-compose): New variable.
    
    Change-Id: I0a1270272222b620f1344c096b5f68274581b2fd
    Signed-off-by: jgart <[email protected]>
---
 gnu/packages/containers.scm | 67 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index caecb4e541..18591258ba 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2024 Jean-Pierre De Jesus DIAZ <[email protected]>
 ;;; Copyright © 2025 Tomas Volf <[email protected]>
 ;;; Copyright © 2025 Foster Hangdaan <[email protected]>
+;;; Copyright © 2026 Giacomo Leidi <[email protected]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,8 +38,10 @@
   #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
+  #:use-module (guix build-system guile)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system pyproject)
+  #:use-module ((guix search-paths) #:select ($GUIX_EXTENSIONS_PATH))
   #:use-module (guix utils)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
@@ -58,11 +61,13 @@
   #:use-module (gnu packages golang-web)
   #:use-module (gnu packages golang-xyz)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages man)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages python)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages package-management)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages python-build)
@@ -286,6 +291,68 @@ containers highly integrated with the hosts.")
 contents, and discovering ways to shrink the size of Docker/OCI image.")
     (license license:expat)))
 
+(define-public guix-compose
+  (package
+    (name "guix-compose")
+    (version "0.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://codeberg.org/fishinthecalculator/guix-compose";)
+              (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ij6rfs5pfykk8c53q029sl2qx3k572dqdfb6pn5s569l6697ci1"))))
+    (build-system guile-build-system)
+    (arguments
+     (list
+      #:source-directory "src"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-load-paths-in-entry-point
+            (lambda _
+              (define load-path
+                (cons (string-append #$output "/share/guile/site/3.0")
+                      (parse-path (getenv "GUILE_LOAD_PATH"))))
+              (define load-compiled-path
+                (cons (string-append #$output "/lib/guile/3.0/site-ccache")
+                      (parse-path (getenv "GUILE_LOAD_COMPILED_PATH"))))
+              (define search-paths-header
+                `(begin
+                   (set! %load-path
+                         (append (list ,@load-path) %load-path))
+                   (set! %load-compiled-path
+                         (append (list ,@load-compiled-path)
+                                 %load-compiled-path))))
+
+              (substitute* "src/guix/extensions/compose.scm"
+                ((";;@load-paths@")
+                 (with-output-to-string
+                   (lambda () (write search-paths-header)))))))
+          (add-after 'build 'add-extension-to-search-path
+            (lambda _
+              (with-directory-excursion #$output
+                (mkdir-p "share/guix/extensions")
+                (symlink
+                 (string-append
+                  #$output "/share/guile/site/3.0/guix/extensions/compose.scm")
+                 "share/guix/extensions/compose.scm"))))
+          (add-after 'add-extension-to-search-path 'check
+            (lambda _
+              (invoke
+               "guile" "-L" "./modules" "-s" "tests/test-compose.scm"))))))
+    (native-inputs (list guile-3.0))
+    ;; Avoid setting propagated so that we use the user’s profile.
+    (inputs (list guix guile-yamlpp))
+    (native-search-paths
+     (list $GUIX_EXTENSIONS_PATH))
+    (synopsis "Guix' docker compose compatibility layer")
+    (description "A toolkit to run, read and write docker-compose.yml files 
with
+Guix machinery.")
+    (home-page "https://codeberg.org/fishinthecalculator/guix-compose";)
+    (license license:gpl3+)))
+
 (define-public libslirp
   (package
     (name "libslirp")

Reply via email to