Hi Carlo,
Carlo Ascani <carl...@protonmail.com> writes:
On Sunday, February 9th, 2025 at 6:49 PM, Ian Eure
<i...@retrospec.tv> wrote:
The quoted part of the manual answers your question. The reason
why this is so is that the version of a package available may
change between channel revisions, so if you pin foobar@1.2.3,
then
`guix pull', the HEAD of the channel defining the foo package
may
have updated it to 1.2.4, and then your profile breaks because
it
references a package which doesn’t exist.
So, I ran `guix describe -f channels` and store it output in the
manifest.
It ended up looking like this:
----8<----8<----8<----
(use-modules (guix channels))
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(branch "master")
(commit
"7f3313341caf844d9fb6919f6cdc28fdcaf06c6d")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A
54FA")))))
(specifications->manifest '("make@4.4.1" "elm@0.19.1"))
No, this will not work. The list of channels is evaluated, but
nothing is done with it, so it has no effect on
specifications->manifest.
You need to give your colleague the manifest and a channels.scm,
created with:
guix describe -f channels > channels.scm
Then your colleague needs to run:
guix time-machine -C channels.scm -- shell -m manifest.scm
...and they’ll get the precise packages from your manifest.
-- Ian