Subject: bug#20255: 'search-paths' should respect both user and system profile.

From: 宋文武 <[email-masked]>
Date: Sun, 05 Apr 2015 11:39:03 +0800

Ludovic Courtès <[email-masked]> writes:

> 宋文武 <[email-masked]> skribis:
>
>> Currently, search-paths built only from packages in user's profile.
>> As reported by Andy Wingo in #guix, when I have:
>>   perl installed into system profile
>>   perl-xml-parser installed into user profile
>>   
>> guix package --search-paths won't give a hint about PERL5LIB,
>> so it's very likely end up with a broken XML::Parser.
>
> Rather it ends up with no XML::Parser, no?
>
> That said, I’m not sure how this could be improved.  We could hard-code
> lookup in /run/current-system/profile/.  OTOH that’s not different from
> installing perl in one profile, and perl-xml-parser in another
> (arbitrary) profile, which ‘guix package’ cannot be aware of.
>
> WDYT?
As 'guix package' is for only one profile, that's fine.
Since we can get search-paths from system profile using:
  guix package -p /run/current-system/profile --search-paths

I think the missing is to check whether we are under GuixSD,
and then merge those 2 search-paths object in scheme level
to get a full search-paths.

Or better to generate a 'profile' script for each manifest, and then
merged in shell level, so it can work out-of-the-box. How about:
  - /etc/profile:
    # configuration for the whole system goes here.
    # shouldn't refer profile paths.
    export LANG=en_US.utf8
    export SSL_CERT_DIR=/etc/ssl/certs
    export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules
    [...]

    source /run/current-system/profile/etc/profile

    if [ -f $HOME/.guix-profile/etc/profile ]; then
      source $HOME/.guix-profile/etc/profile
    fi

    # honor setuid-programs
    export PATH=/run/setuid-programs:$PATH

  - /run/current-system/profile/etc/profile:
    export PATH=/run/current-system/profile/bin:/run/current-system/profile/sbin:$PATH
    export MANPATH=/run/current-system/profile/share/man:$PATH
    [...]
    
  - ~/.guix-profile/etc/profile:
    export PATH=~/.guix-profile/bin:~/.guix-profile/sbin:$PATH
    [...]

The idea to generate profile from search-paths is not new,
I heard it from you IIRC.
I think it's the time to do it.