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

Reply via email to