Since we split wrapGAppsHook and move its variable initialization to preFixupPhases in #81475, it was getting run before glibPreFixupPhase which sets GSETTINGS_SCHEMAS_PATH variable gappsWrapperArgsHook depends on. Let's introduce this ugly hack to ensure glibPreFixupPhase will run before gappsWrapperArgsHook.
GSETTINGS_SCHEMAS_PATH needs to contain a list of directories containing glib-2.0/schemas.
770a4c7946 broke that by accidentally adding glib-2.0 to the paths.
GLib setup hook expects GSettings schemas to be installed in ${!outputLib}
and tries to move them to gsettings-schemas/$name subdirectory to prevent
conflicts. But the schemas will only end up in the library output when
the build system recognizes makeFlags set by the setup hook, and in that case
the move is not necessary, since the flag already includes the subdirectory.
Normally, this is not an issue, since most packages relying on GSettings
schemas either still use Autotools with gsettings.m4, or do not have a lib
output set. But with the promulgation of multiple outputs in Nixpkgs and
more and more projects switching to Meson, the issue will become increasingly
common.
We first noticed this problem with nm-applet.
Closes https://github.com/NixOS/nixpkgs/issues/45043
gsettingsschemedir only works in make where you can set any variable
from the command line as in “make VAR=VAL”. Other build systems may
not support this kind of loose overriding of variables. This broke a
scons build here:
https://hydra.nixos.org/build/84073119/
- move frome $out to $out/share
- fix quoting that prevented globbing
- indent by spaces (as it is more common in nixpkgs; 4 spaces for shell)
More work is still needed for some individual packages.