summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/stdenv.xml7
-rw-r--r--pkgs/desktops/gnome-3/core/baobab/default.nix15
-rw-r--r--pkgs/development/libraries/glib/default.nix2
-rw-r--r--pkgs/development/libraries/glib/setup-hook.sh17
-rw-r--r--pkgs/stdenv/generic/setup.sh2
-rwxr-xr-xpkgs/stdenv/mingw/setup.sh2
6 files changed, 33 insertions, 12 deletions
diff --git a/doc/stdenv.xml b/doc/stdenv.xml
index 1846886919d7..74eb63b4b498 100644
--- a/doc/stdenv.xml
+++ b/doc/stdenv.xml
@@ -299,6 +299,13 @@ executed and in what order:
   </varlistentry>
 
   <varlistentry>
+    <term><varname>preFixupPhases</varname></term>
+    <listitem>
+      <para>Additional phases executed just before the fixup phase.</para>
+    </listitem>
+  </varlistentry>
+
+  <varlistentry>
     <term><varname>preDistPhases</varname></term>
     <listitem>
       <para>Additional phases executed just before the distribution phase.</para>
diff --git a/pkgs/desktops/gnome-3/core/baobab/default.nix b/pkgs/desktops/gnome-3/core/baobab/default.nix
index 07805644d906..5121f1f69bec 100644
--- a/pkgs/desktops/gnome-3/core/baobab/default.nix
+++ b/pkgs/desktops/gnome-3/core/baobab/default.nix
@@ -1,7 +1,7 @@
 { stdenv, intltool, fetchurl, vala, libgtop
 , pkgconfig, gtk3, glib, hicolor_icon_theme
 , bash, makeWrapper, itstool, libxml2
-, gnome3, librsvg, gdk_pixbuf }:
+, gnome3, librsvg, gdk_pixbuf, file }:
 
 stdenv.mkDerivation rec {
   name = "baobab-3.10.1";
@@ -22,19 +22,14 @@ stdenv.mkDerivation rec {
                             hicolor_icon_theme gnome3.gnome_icon_theme_symbolic ];
 
   buildInputs = [ vala pkgconfig gtk3 glib libgtop intltool itstool libxml2
-                  gnome3.gsettings_desktop_schemas makeWrapper ];
-
-  installFlags = "gsettingsschemadir=\${out}/share/baobab/glib-2.0/schemas/";
-
-  postInstall = ''
-    wrapProgram "$out/bin/baobab" \
-      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:${gnome3.gsettings_desktop_schemas}/share:$out/share:$out/share/baobab:$XDG_ICON_DIRS"
-  '';
+                  gnome3.gsettings_desktop_schemas makeWrapper file ];
 
   preFixup = ''
     rm $out/share/icons/hicolor/icon-theme.cache
     rm $out/share/icons/HighContrast/icon-theme.cache
+    wrapProgram "$out/bin/baobab" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:${gnome3.gsettings_desktop_schemas}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix
index af4b152dccee..033a1def3ce7 100644
--- a/pkgs/development/libraries/glib/default.nix
+++ b/pkgs/development/libraries/glib/default.nix
@@ -48,6 +48,8 @@ stdenv.mkDerivation rec {
     sha256 = "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd";
   };
 
+  setupHook = ./setup-hook.sh;
+
   buildInputs = [ libelf ]
     ++ optionals doCheck [ tzdata libxml2 desktop_file_utils shared_mime_info ];
 
diff --git a/pkgs/development/libraries/glib/setup-hook.sh b/pkgs/development/libraries/glib/setup-hook.sh
new file mode 100644
index 000000000000..e5c0c372da00
--- /dev/null
+++ b/pkgs/development/libraries/glib/setup-hook.sh
@@ -0,0 +1,17 @@
+# Install gschemas, if any, in a package-specific directory
+installFlagsArray+=("gsettingsschemadir=$out/gsettings-schemas/$name/glib-2.0/schemas/")
+
+make_glib_find_gsettings_schemas() {
+	# For packages that need gschemas of other packages (e.g. empathy)
+	if [ -d "$1/gsettings-schemas/*/glib-2.0/schemas" ]; then
+		addToSearchPath GSETTINGS_SCHEMAS_PATH "$1/gsettings-schemas/"*
+	fi
+}
+
+envHooks+=(make_glib_find_gsettings_schemas)
+
+glibPreFixupPhase() {
+	addToSearchPath GSETTINGS_SCHEMAS_PATH "$out/gsettings-schemas/$name"
+}
+
+preFixupPhases="$preFixupPhases glibPreFixupPhase"
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 4740c6386339..d79131ac0670 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -877,7 +877,7 @@ genericBuild() {
     if [ -z "$phases" ]; then
         phases="$prePhases unpackPhase patchPhase $preConfigurePhases \
             configurePhase $preBuildPhases buildPhase checkPhase \
-            $preInstallPhases installPhase fixupPhase installCheckPhase \
+            $preInstallPhases installPhase $preFixupPhases fixupPhase installCheckPhase \
             $preDistPhases distPhase $postPhases";
     fi
 
diff --git a/pkgs/stdenv/mingw/setup.sh b/pkgs/stdenv/mingw/setup.sh
index 592580a829e3..c757eb7ae54c 100755
--- a/pkgs/stdenv/mingw/setup.sh
+++ b/pkgs/stdenv/mingw/setup.sh
@@ -725,7 +725,7 @@ genericBuild() {
     if test -z "$phases"; then
         phases="$prePhases unpackPhase patchPhase $preConfigurePhases \
             configurePhase $preBuildPhases buildPhase checkPhase \
-            $preInstallPhases installPhase fixupPhase \
+            $preInstallPhases installPhase $preFixupPhases fixupPhase \
             $preDistPhases distPhase $postPhases";
     fi