Subject: librsvg from Guix makes native GIMP unable to find icons

From: Tirifto <[email-masked]>
Date: Fri, 30 Dec 2022 19:56:16 +0000

Hello! I use Guix as a supplementary package manager on OpenSUSE 15.4. I have 
recently installed the package ‘librsvg’ in Guix, in order to fix a different 
issue, where a different program (installed with Guix) wouldn’t show icons 
without it [1]. But I noticed that doing so affects GIMP, a graphical program 
installed natively in openSUSE, which can no longer show its own icons now.

The problem is solved by removing ‘librsvg’ from my Guix profile, logging out, 
and logging back in. (But then, of course, the other program which needs 
‘librsvg’ in my profile breaks again.)

Another solution is not to source my Guix profile in my login shell (thus 
removing the appropriate line from my ‘~/.profile’ file), and to remove the 
file ‘/etc/profile.d/guix.sh’, both of which seem to only define some 
environment variables. (Of course, this breaks Guix’s whole integration with 
the host system, so it’s not a good solution at all.) Removing only the 
profile does not help.

I have observed the changes installing ‘librsvg’ made to the aforementioned 
files, and to my environment:

 ‘guix.sh’ has not changed at all.

 ‘profile’ now defines the two following variables:
  • XDG_DATA_DIRS
  • GDK_PIXBUF_MODULE_FILE

  These environment variables have been extended:
  • XDG_DATA_DIRS was defined [2], now is prefixed with
   ‘/home/tirifto/.guix-profile/share’
  • GDK_PIXBUF_MODULE_FILE was undefined, now is set to
   ‘/home/tirifto/.guix-profile/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache’

When I run GIMP from the command line, it prints the errors attached in ‘gimp-
errors.txt’.

When I try to unset the changed variables for GIMP, using the following 
command, the icons are still absent, but it prints less errors, which are 
attached in ‘gimp-errors-no-env.txt’:

  XDG_DATA_DIRS='/usr/local/share:/usr/share' GDK_PIXBUF_MODULE_FILE='' gimp

When I try to unset the changed variables with ‘unset’ before I actually run 
GIMP, it works as expected, with no errors printed, like so:

  unset XDG_DATA_DIRS
  unset GDK_PIXBUF_MODULE_FILE
  gimp

I’m not sure what’s the difference between those procedures, since I don’t 
understand Bash that well, but maybe it can help someone who does understand 
the problem better.

Best of wishes
// Tirifto

[1] https://issues.guix.gnu.org/60205
[2] XDG_DATA_DIRS already had ‘/home/tirifto/.guix-profile/share’ in it before
    it was added to the profile, presumably coming from the aforementioned
   ‘guix.sh’. This means I now have ‘/home/tirifto/.guix-profile/share’ twice
    in my path. I assume that’s not a problem, but found it curious.