GNU bug report logs -
#45919
[PATCH 0/8] Exporting a manifest and channels from a profile
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Sat, 16 Jan 2021 18:31:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi,
Pierre Neidhardt <mail <at> ambrevar.xyz> skribis:
> Ludovic Courtès <ludo <at> gnu.org> writes:
[...]
>> • 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.
>
> /run/current-system/configuration.scm suffers from the same problem.
Not really because it’s precisely the file that you gave to build the
system. So you know you can run:
cd /run/current-system
guix time-machine -C channels.scm -- system reconfigure configuration.scm
and it’ll work (modulo the documented caveats).
> But with the manifest we could do better, we could include a version
> number one way or another.
> Besides, since it comes together with channels.scm, we know which Guix
> was used, so we always have access to the Guix with the right API to
> install the manifest.
Right.
>> • One would still have to learn about these two files, and pick the
>> right “manifest” file.
>
> I think it would be easier than a command. See below.
>
>> • For users of ‘-m my-manifest.scm’, we would need to store
>> ‘my-manifest.scm’ as is instead of generating an approximation
>> thereof.
>
> Which seems easy to do, isn't it?
I take it that you’re volunteering? :-)
Nothing’s difficult, but in this case we’d need to pass the original
manifest down to ‘profile-generation’. Requires some redesign.
> Another use-case which I find useful and comes close to this feature is
> that of channel/manifest versioning, in the sense of keeping these files
> under version control for instance in a Git repository. This can be
> useful to keep the history of everything, even deleted generations, or
> even in case of hardware failure.
>
> To that end, it'd be nice if we could export these files automatically
> to a designated location.
>
> Example: I update ~/my-profile and it automatically produces / overwrite
> ~/repos/guix-profile-metadata.git/my-profile/channels.scm and
> ~/repos/guix-profile-metadata.git/my-profile/manifest.scm.
>
> This way I can commit these 2 files in my guix-profile-metadata.git
> repository.
I guess you could do that either with ‘cp
~/.guix-profile/{channels,manifest.scm …’ or with ‘guix package
--export-manifest … > …’.
But again, that’s not really the goal here. The goal is to help users
willing to migrate from the “imperative” mode to the declarative mode.
Once you’re using a manifest, probably you’ll want to put that under
version control, but that’s already the case.
Thanks,
Ludo’.
This bug report was last modified 4 years and 112 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.