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")))
guix describe --format=channels command can even generate this
list of channels directly (see 调用guix describe). The resulting
file can be used with the -C option of
(see 调用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.