Subject: Re: bug#22629: [PATCH 0/4] 'guix pull' produces a self-contained Guix

From: [email-masked] (Ludovic Courtès)
Date: Fri, 01 Jun 2018 14:11:49 +0200

Hello!

Ricardo Wurmus <[email-masked]> skribis:

>>      The result of running ‘guix pull’ is a “profile” available under
>>   ‘~/.config/guix/current’ containing the latest Guix.  Thus, make sure to
>>   add it to the beginning of your search path so that you use the latest
>>   version, and similarly for the Info manual (*note Documentation::):
>>
>>        export PATH="$HOME/.config/guix/current/bin:$PATH"
>>        export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
>
> As a profile it will have its very own “etc/profile” file.  I suppose
> that doesn’t include INFOPATH, though, because it only contains an Info
> manual but not an Info reader.  It would be extra nice if we could
> simplify this initial setup even more.

I agree.  On GuixSD of course we can add the right default.  On foreign
distros, I’m not sure how we can simplify things though.

At least, when you run the new ‘guix pull’ for the first time, you get a
note that you should define PATH.

>>      This ‘~/.config/guix/current’ profile works like any other profile
>>   created by ‘guix package’ (*note Invoking guix package::).  That is, you
>>   can list generations, roll back to the previous generation—i.e., the
>>   previous Guix—and so on:

[...]

> This also means that you could remove the “guix” package and install
> “hello” instead.  If a user did that they would lose their variant of
> guix and they’d fall back to whichever version is installed on the
> system (if any).  They could still roll back manually by changing the
> symlink.
>
> They could also think that installing the “guix” package into that
> profile would be a good idea — but then they would end up with a
> slightly older version of Guix.  (This is already possible, of course,
> but if we have a separate profile that’s intended just for Guix but with
> generic properties, this could become confusing.)
>
> I’m just thinking out loud about how users could get into trouble :)

Yeah well, we can’t really prevent them from shooting themselves in the
foot.  :-)

Now, we could hide the fact that people can use “guix package -p” on
that thing by simply providing ‘--list-generations’, ‘--roll-back’,
etc. directly in ‘guix pull’.

I think it’ll be a good idea to add a custom ‘--list-generations’ in the
future anyway, because it could display more useful information (commit
IDs, number of available packages, etc.)

>>   1. The ~/.config/guix/current profile really lives there.  That is,
>>      unlike ~/.guix-profile, it’s not in /var/guix/profiles/per-user.
>>      That could be an issue for cluster setups where home directories
>>      are not scanned by the Guix GC.  Cluster folks, please tell me!
>
> Is it impossible to store it in localstatedir?

It wouldn’t be hard, but I wanted to get things done quickly.  :-)

Thanks for your feedback!

Ludo’.