[Top][All Lists]

[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)


Pierre Neidhardt <> skribis:

> Ludovic Courtès <> 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.


>>   • 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]