Subject: bug#35308: GDM refuses to log into Gnome Shell

From: Nicolas Goaziou <[email-masked]>
Date: Fri, 17 Dec 2021 13:26:17 +0100

Hello,

Josselin Poiret via Bug reports for GNU Guix <[email-masked]> writes:

> Nicolas Goaziou <[email-masked]> writes:
>
>> I went a bit further:
>>
>> The issue is not specifically glib-related, but can be reproduced with
>> any package using the following:
>>
>>   (search-path-specification
>>    (variable "XDG_DATA_DIRS")
>>    ...)

[...]

> The XDG specification says that if XDG_DATA_DIRS is unset, a default
> value of `/usr/local/share/:/usr/share/` should be used in its place.
> On Debian, that env var is not explicitely set, so applications use that
> default value, but when we prepend to it, it effectively removes both of
> these directories from the search path.
>
> As a workaround, you can do `export
> XDG_DATA_DIRS=/usr/local/share/:/usr/share/` right before sourcing the
> guix profile in your .bash_profile.

You're right. The above fixes the issue with fontconfig. Unfortunately,
the problem persists with the minimal manifest:

  (specifications->manifest '("python-matplotlib"))

So there's something else going on.

In order to fix the above, I need to put

  unset GI_TYPELIB_PATH

in my .profile, after having sourced Guix profile. Maybe this
environment variable also has a special default value when unset.

> I don't know what the best course
> of action here is to have better OOB support.  Is it possible to have
> env vars set by Guix have a default value if unset?

I think it is desirable, in particular for fontconfig, which is
a recommended package in the manual. The part of Guix responsible for
generating the profile file may be more careful when setting
XDG_DATA_DIRS, e.g., with something like (untested):

export XDG_DATA_DIRS=\
"${GUIX_PROFILE:-/gnu/store/…-profile}/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}"

Regards,
-- 
Nicolas Goaziou