Subject: bug#48796: Guix on Debian 11 - Cant run or find applications from Guix

From: Giovanni Biscuolo <[email-masked]>
Date: Sat, 07 May 2022 12:59:27 +0200

Hello Maxim,

I finally was able to get a working Mate desktop environment, with all
Guix installed apps listed in the graphical menu and all the
mime->applications associations working as expected

Getting a user Xsession environment suitable for Guix on a foreign
distro unfortunately is a very hard task, because things seems to be
dependant on many "things" related on what distro /and/ session-manager
is used ;-(

Giovanni Biscuolo <[email-masked]> writes:

[...]

> More unfortunately, if I try to login using a Mate session (with the
> above configuration, thus with that environment) it fails with this
> error (via journalctl):
>
> --8<---------------cut here---------------start------------->8---
>
>  mag 07 09:21:14 raifort mate-session[818]: GLib-GIO-ERROR: Settings schema 'org.mate.session' is not installed
>                                            aborting...
>
> --8<---------------cut here---------------end--------------->8---
>
> If I remove /etc/profile.d/guix.sh from the user's ~/.xsession Mate is
> able to login with no problems (is this related to GIO_EXTRA_MODULES?)

No, I found out why Mate was not starting: «At runtime, GSettings looks
for schemas in the glib-2.0/schemas subdirectories of all directories
specified in the XDG_DATA_DIRS environment variable.»  (from man
glib-compile-schemas [1])

I figured out what was wrong when looking at XDG_DATA_DIRS env variable
after a console login for that user:

  XDG_DATA_DIRS=/home/patrizia/.guix-profile/share

XDG_DATA_DIR was missing the Debian default "/usr/share/" directory
where all packages are installing schemas

I fixed the problem with this workaround in /etc/profile.d/guix.sh:

--8<---------------cut here---------------start------------->8---

[...]

# set XDG_DATA_DIRS to include Guix installations
# export XDG_DATA_DIRS="$GUIX_PROFILE/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}"
export XDG_DATA_DIRS="$XDG_DATA_DIRS:/usr/local/share/:/usr/share/"

--8<---------------cut here---------------end--------------->8---

I commented out that export because the sourced
$GUIX_PROFILE/etc/profile already exports a proper XDG_DATA_DIRS
variable, IMHO it should be removed from upstream

Then I added the last line to (re)add "/usr/local/share/:/usr/share/",
so now mate-session is happy again

I'm still wondering how we can document and/or provide proper
distro-agnostic configuration files for Xsessions on foreign disrtos.

Unfortunately the situation is still /very/ confising for users

Happy hacking!  Gio'

[1] https://manpages.debian.org/experimental/libglib2.0-bin/glib-compile-schemas.1.en.html

-- 
Giovanni Biscuolo

Xelera IT Infrastructures