M doc/guix.texi => doc/guix.texi +4 -1
@@ 10466,7 10466,10 @@ field (@pxref{Channels}); alternatively, its source can be a directory
name, in which case an additional @code{#:commit} argument must be
supplied to specify the commit being built (a hexadecimal string).
-The resulting package is a Guix instance of the given channel, similar
+Optionally, a @code{#:channels} argument specifying additional channels
+can be provided.
+
+The resulting package is a Guix instance of the given channel(s), similar
to how @command{guix time-machine} would build it.
@end defvar
M guix/build-system/channel.scm => guix/build-system/channel.scm +5 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ 37,6 37,7 @@
(define* (build-channels name inputs
#:key source system commit
+ (channels '())
(authenticate? #t)
#:allow-other-keys)
(mlet* %store-monad ((instances
@@ 44,7 45,7 @@
(return (list source)))
((channel? source)
(latest-channel-instances*
- (list source)
+ (cons source channels)
#:authenticate? authenticate?))
((string? source)
;; If SOURCE is a store file name, as is the
@@ 64,12 65,14 @@
(define channel-build-system
;; Build system used to "convert" a channel instance to a package.
(let ((lower (lambda* (name #:key system source commit (authenticate? #t)
+ (channels '())
#:allow-other-keys)
(bag
(name name)
(system system)
(build build-channels)
(arguments `(#:source ,source
+ #:channels ,channels
#:authenticate? ,authenticate?
#:commit ,commit))))))
(build-system (name 'channel)