Ludovic Courtès <l...@gnu.org> writes: > 宋文武 <iyzs...@gmail.com> 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.