Subject: Re: [bug#68498] [PATCH] guix-install.sh: Make Guix modules available too.

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 19 Apr 2024 07:40:08 -0400

Hi Janneke,

Janneke Nieuwenhuizen <[email-masked]> writes:

> Janneke Nieuwenhuizen writes:
>
> Hello,
>
>>> Maxim Cournoyer <[email-masked]> skribis:
>>>
>>>> Ludovic Courtès <[email-masked]> writes:
>> [..]
>>>> I don't quite like the status quo where Guix System is different from
>>>> Guix on a foreign distribution for dubious reasons.  Either we expose
>>>> the Guix modules as part of the guix-install.sh or perhaps we can avoid
>>>> exposing them on Guix System, for consistency.
>>>>
>>>> What do you think?
>>>
>>> Sorry for the delay.  It’s probably not that big a deal so if you think
>>> this improves user experience, go for it; I don’t want to block this
>>> change.  Worst that can happen is we change our mind and revert it,
>>> that’s OK.
>>
>> "Great".  I was very much in favor of this change initially: Have a
>> consistent Guix UX whether it be in Guix System or on a foreign distro.
>
> [..]
>
> Nice as it is that on Guix System you have Guix' modules available to
> Guile by default, I stumbled onto another (obvious?) UX issue.

> After doing `guix pull' (and no guix system reconfigure), you have a new
> guix!  With new modules.  You can play with them in `guix repl'.  Only,
> when you start the guile, these new modules are not available; guile can
> only see the (stale) system's guix modules.  I'm not even sure how to
> make them available to guile, other than `guix system reconfigure'.

Even then, the modules available are not that of the latest pulled Guix;
they are those of the guix package known by that guix, which was used to
run the guix-daemon service.

> "guix shell guile" doesn't make guix's modules available, of course, and
> "guix shell guix guile will get you the previous guix, not the new
> version made available by pull.  The only thing I could think of, is to
> provide a `guile' binary in ~/.config/guix/current/bin/guile.  Hmm.

I'm not sure how providing a Guile from there would help?

> Hopefully there's an easier solution but if we cannot (or don't want to)
> change/fix this, I'd possibly even rather not have guix modules
> available to guile by default.  WDYT?

Perhaps we should treat the Guix library as a first class citizen, and
expose them to the Guile load path by default?  This would need to be
done in some config file such as .bashrc, and could be automated in the
guix-install. script, I believe.

If we do this, we should also change the guix-daemon-service-type to
avoid leaking 'guix' into the system profile, polluting it with old
modules.

What do you think?  Is there a better alternative I do not see?

-- 
Thanks,
Maxim