[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#45919] [PATCH 0/8] Exporting a manifest and channels from a profile
From: |
Ludovic Courtès |
Subject: |
[bug#45919] [PATCH 0/8] Exporting a manifest and channels from a profile |
Date: |
Mon, 01 Feb 2021 14:25:54 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Hi,
Pierre Neidhardt <mail@ambrevar.xyz> skribis:
> Ludovic Courtès <ludo@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’.
- [bug#45919] [PATCH 0/8] Exporting a manifest and channels from a profile,
Ludovic Courtès <=