guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Extending Guix without using the Guile load path


From: Ludovic Courtès
Subject: Re: Extending Guix without using the Guile load path
Date: Sun, 01 Nov 2020 23:23:16 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)

Hi!

Ricardo Wurmus <rekado@elephly.net> skribis:

> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Hello!
>>
>> Ricardo Wurmus <rekado@elephly.net> skribis:
>>
>>> I think it’s a bit difficult to install the Guix Workflow Language at
>>> this point and I’d like to change that.
>>>
>>> Currently, new sub-commands for Guix are looked up by module name on the
>>> Guile load path.  When installing the “gwl” package, though, the Guile
>>> load path is not automatically altered, so users need to set it up by
>>> themselves.  The load path is only altered automatically when users
>>> install the “guile” package.  This is not a good recommendation because
>>> users may have Guile 2.2 in their profile, and not Guile 3.0 or whatever
>>> version may be needed by the extension.

[...]

>> GUIX_EXTENSIONS_PATH sounds like a good idea.  I suppose it could be
>> implemented pretty much like GUIX_PACKAGE_PATH?
>>
>> That would also allow us to consider Guix Home a package rather than a
>> channel, like you did for GWL.
>
> Below is a draft that adds Guile modules from GUIX_EXTENSIONS_PATH to
> the %load-path and %load-compiled-path.
>
> I think this implementation is not good, but I’d like to provoke some
> comments about the following thoughts:
>
> * what happens to the Guile dependencies of an extension?  Those would
>   not be added to the load path.  Should the extension take care of this
>   by manually augmenting the load path?

Hmm that doesn’t sound great.

> * The draft simply uses the same directories that GUILE_LOAD_PATH and
>   GUILE_LOAD_COMPILED_PATH use.  Is this a bad idea?  Would it not be
>   better to have a new directory prefix (such as “lib/guix/extensions”)?

On one hand, if it’s a different search path, you’d rather use a
different directory like lib/guix/extensions.  OTOH, all this is regular
Guile code and it’d be ridiculous to be unable to just have it on the
Guile load path.

> * The search path on the “guix” package does not distinguish between
>   compiled modules and source modules; it simply looks for all the
>   conventional directories and puts them on the GUIX_EXTENSIONS_PATH,
>   while (guix ui) adds them to both %load-path and %load-compiled-path.

Traditionally distros distinguish between arch-dependent and
arch-independent files, and that would prevent that.

(Thinking out loud.)

What if an extension could instead be a package installed next to Guix
and its channels in ~/.config/guix/current, and we use
‘package-path-entries’ as is done in (gnu packages) to augment
‘%load-path’ and ‘%load-compiled-path’?

Thanks,
Ludo’.



reply via email to

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