Subject: [bug#45919] [PATCH 0/8] Exporting a manifest and channels from a profile

From: Ludovic Courtès <[email-masked]>
Date: Sat, 30 Jan 2021 14:55:16 +0100

Hi Pierre,

Pierre Neidhardt <[email-masked]> skribis:

> I just had a cursory look, and my main concern is that maybe exposing
> commands is one more thing to learn for the user, and one more step to
> run to get a simple file.
>
> Instead, what about doing what system profiles already do with
>
>   /run/current-system/channels.scm
>   /run/current-system/configuration.scm
>
> and store the result of the proposed commands directly in
> $PROFILE/channels.scm and $PROFILE/manifest-spec.scm, on each profile
> upgrade?
>
> We could add a warning comment at the top, explaining the limitations of
> these files (that it does not represent the profile faithfully).
>
> Thoughts?

Here are practical issues that come to mind:

  • It would only work for newer profiles, created after the feature has
    been implemented (maybe that’s okay).

  • The generated files might use APIs that, in the meantime, got
    deprecated or changed somehow.  This is in contrast with
    ‘--export-profile’, which interprets ‘manifest’ (a versioned file
    format) and produces code that can use the API du jour.

  • One would still have to learn about these two files, and pick the
    right “manifest” file.

  • For users of ‘-m my-manifest.scm’, we would need to store
    ‘my-manifest.scm’ as is instead of generating an approximation
    thereof.

We already discussed these issues at length earlier.  :-)  Again, I agree
that following what we do with /run/current-system would be nice, but
the situation is different due to imperative operations.

Hmm, needs more thought…

> Last, just a nit: what about listing the packages corresponding to the
> commented commits next to them?  For instance
>
> (list
>  ;; Note: these other commits were also used to install some of the packages in this profile:
>  ;;   "458cb25b9e7e7c954f468023abea2bebb5d8c75b" monolith obs calibre
>  ;;   "4969b51d175497bfcc354c91803e9d70542b7113" 0ad augustus
>  ;;   "3d85c3ec652feb22824f355538b51e6955ded361" nyxt
>  ;; ...
>  ;;   "b76b1d3fb65fec98b96a2b4cfa984316dd956a29" tectonic
>  (channel
>   (name 'guix)
>   ...

Would be nice.

Thanks for your feedback!

Ludo’.