Next: Channel Authentication, Previous: Using a Custom Guix Channel, Up: Channels [Contents][Index]
The guix pull --list-generations
output above shows precisely which
commits were used to build this instance of Guix. We can thus replicate it,
say, on another machine, by providing a channel specification in
~/.config/guix/channels.scm that is “pinned” to these commits:
;; Deploy specific commits of my channels of interest. (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "6298c3ffd9654d3231a6f25390b056483e8f407c")) (channel (name 'variant-packages) (url "https://example.org/variant-packages.git") (commit "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))
The guix describe --format=channels
command can even generate this
list of channels directly (see Invoking guix describe). The resulting
file can be used with the -C options of guix pull
(see Invoking guix pull) or guix time-machine
(see Invoking guix time-machine).
At this point the two machines run the exact same Guix, with access to
the exact same packages. The output of guix build gimp
on
one machine will be exactly the same, bit for bit, as the output of the same
command on the other machine. It also means both machines have access to all
the source code of Guix and, transitively, to all the source code of every
package it defines.
This gives you super powers, allowing you to track the provenance of binary artifacts with very fine grain, and to reproduce software environments at will—some sort of “meta reproducibility” capabilities, if you will. See Inferiors, for another way to take advantage of these super powers.