From 763fda70f081707bda58676123b702caae0d9db9 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 29 Jul 2015 11:14:50 +0000 Subject: [PATCH 1/6] wrapGAppsHook: build hook for wrapping GTK/GNOME apps --- .../setup-hooks/wrap-gapps-hook.sh | 33 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/build-support/setup-hooks/wrap-gapps-hook.sh diff --git a/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh new file mode 100644 index 00000000000..4b1a9527b11 --- /dev/null +++ b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh @@ -0,0 +1,33 @@ +gappsWrapperArgs=() + +wrapGAppsHook() { + if [ -n "$GDK_PIXBUF_MODULE_FILE" ]; then + gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE") + fi + + if [ -n "$XDG_ICON_DIRS" ]; then + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS") + fi + + if [ -n "$GSETTINGS_SCHEMAS_PATH" ]; then + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH") + fi + + if [ -d "$prefix/share" ]; then + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$out/share") + fi + + for v in $wrapPrefixVariables GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do + eval local dummy="\$$v" + gappsWrapperArgs+=(--prefix $v : "$dummy") + done + + if [ -z "$dontWrapGApps" ]; then + for i in $prefix/bin/* $prefix/libexec/*; do + echo "Wrapping app $i" + wrapProgram "$i" "${gappsWrapperArgs[@]}" + done + fi +} + +fixupOutputHooks+=(wrapGAppsHook) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3cf462adeb3..c77fbf47c54 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -512,6 +512,10 @@ let findXMLCatalogs = makeSetupHook { } ../build-support/setup-hooks/find-xml-catalogs.sh; + wrapGAppsHook = makeSetupHook { + deps = [ makeWrapper ]; + } ../build-support/setup-hooks/wrap-gapps-hook.sh; + ### TOOLS From ed3c294e7561873ee6fd41050ff40fd13c4f59ab Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 29 Jul 2015 11:15:35 +0000 Subject: [PATCH 2/6] grilo: add setup hook for grilo plugins --- pkgs/desktops/gnome-3/3.16/core/grilo/default.nix | 2 ++ pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix b/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix index a9be29f2b0e..18551aae8b9 100644 --- a/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix +++ b/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix @@ -9,6 +9,8 @@ stdenv.mkDerivation rec { sha256 = "11bvc7rsrjjwz8hp67p3fn8zmywrpawrcbi3vgw8b0dwa0sndd2m"; }; + setupHook = ./setup-hook.sh; + configureFlags = [ "--enable-grl-pls" "--enable-grl-net" ]; preConfigure = '' diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh b/pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh new file mode 100644 index 00000000000..bc93dddec38 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh @@ -0,0 +1,7 @@ +make_grilo_find_plugins() { + if [ -d "$1"/lib/grilo-0.2 ]; then + addToSearchPath GRL_PLUGIN_PATH "$1/lib/grilo-0.2" + fi +} + +envHooks+=(make_grilo_find_plugins) From 0db56d47cc6911b5928d9baa4de8ba6f7024bbe7 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 29 Jul 2015 11:16:33 +0000 Subject: [PATCH 3/6] gnome-photos: use wrapGAppsHook --- .../gnome-3/3.16/apps/gnome-photos/default.nix | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix index fba1a541812..6d9598ee369 100644 --- a/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix +++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix @@ -1,7 +1,7 @@ { stdenv, intltool, fetchurl, exempi, libxml2 , pkgconfig, gtk3, glib, hicolor_icon_theme , makeWrapper, itstool, gegl, babl, lcms2 -, desktop_file_utils, gmp, libmediaart +, desktop_file_utils, gmp, libmediaart, wrapGAppsHook , gnome3, librsvg, gdk_pixbuf, libexif }: stdenv.mkDerivation rec { @@ -14,8 +14,6 @@ stdenv.mkDerivation rec { # doCheck = true; - propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; - NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; buildInputs = [ pkgconfig gtk3 glib intltool itstool gegl babl gnome3.libgdata @@ -24,16 +22,7 @@ stdenv.mkDerivation rec { gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo gnome3.gnome_online_accounts gnome3.gnome_desktop lcms2 libexif gnome3.tracker libxml2 desktop_file_utils - hicolor_icon_theme gnome3.adwaita-icon-theme ]; - - preFixup = '' - for f in $out/bin/* $out/libexec/*; do - wrapProgram "$f" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \ - --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" - done - ''; + wrapGAppsHook ]; enableParallelBuilding = true; From 7ef2102b672bc4ce299f7c417ef612be3db28ed0 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 29 Jul 2015 11:16:45 +0000 Subject: [PATCH 4/6] gnome-music: use wrapGAppsHook --- .../gnome-3/3.16/apps/gnome-music/default.nix | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix index 31ee8a7230c..4cb466fa482 100644 --- a/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix +++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix @@ -1,5 +1,5 @@ { stdenv, intltool, fetchurl, gdk_pixbuf, tracker -, python3, libxml2, python3Packages, libnotify +, python3, libxml2, python3Packages, libnotify, wrapGAppsHook , pkgconfig, gtk3, glib, hicolor_icon_theme, cairo , makeWrapper, itstool, gnome3, librsvg, gst_all_1 }: @@ -15,24 +15,16 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.libmediaart gdk_pixbuf gnome3.adwaita-icon-theme librsvg python3 - gnome3.grilo libxml2 python3Packages.pygobject3 libnotify + gnome3.grilo gnome3.grilo-plugins libxml2 python3Packages.pygobject3 libnotify python3Packages.pycairo python3Packages.dbus gnome3.totem-pl-parser gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad - hicolor_icon_theme gnome3.adwaita-icon-theme + hicolor_icon_theme gnome3.adwaita-icon-theme wrapGAppsHook gnome3.gsettings_desktop_schemas makeWrapper tracker ]; - enableParallelBuilding = true; + wrapPrefixVariables = [ "PYTHONPATH" ]; - preFixup = '' - wrapProgram "$out/bin/gnome-music" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \ - --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ - --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \ - --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \ - --prefix PYTHONPATH : "$PYTHONPATH" - ''; + enableParallelBuilding = true; meta = with stdenv.lib; { homepage = https://wiki.gnome.org/Apps/Music; From 95c2935061e6929b84248f7645f97d28c8dd8c9f Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 29 Jul 2015 11:16:55 +0000 Subject: [PATCH 5/6] gnome-documents: use wrapGAppsHook --- .../gnome-3/3.16/apps/gnome-documents/default.nix | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix index 50fff0cd1d2..7ca61f92d8a 100644 --- a/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix +++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix @@ -3,7 +3,7 @@ , makeWrapper, itstool, libxslt, webkitgtk , gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl , gobjectIntrospection, json_glib -, gmp, desktop_file_utils }: +, gmp, desktop_file_utils, wrapGAppsHook }: stdenv.mkDerivation rec { name = "gnome-documents-${gnome3.version}.0"; @@ -24,21 +24,14 @@ stdenv.mkDerivation rec { libsoup webkitgtk gjs gobjectIntrospection gnome3.rest gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts gnome3.gnome_desktop gnome3.libzapojit json_glib - hicolor_icon_theme gnome3.adwaita-icon-theme ]; + wrapGAppsHook ]; enableParallelBuilding = true; - preFixup = - '' + preFixup = '' substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib}/bin/gapplication" - for f in $out/bin/* $out/libexec/*; do - wrapProgram "$f" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ - --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \ - --run "if [ -z \"\$XDG_CACHE_DIR\" ]; then XDG_CACHE_DIR=\$HOME/.cache; fi; if [ -w \"\$XDG_CACHE_DIR/..\" ]; then mkdir -p \"\$XDG_CACHE_DIR/gnome-documents\"; fi" - done + gappsWrapperArgs+=(--run 'if [ -z "$XDG_CACHE_DIR" ]; then XDG_CACHE_DIR=$HOME/.cache; fi; if [ -w "$XDG_CACHE_DIR/.." ]; then mkdir -p "$XDG_CACHE_DIR/gnome-documents"; fi') ''; meta = with stdenv.lib; { From d74c41488724bce64d72e981becd41abfec24634 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 29 Jul 2015 11:17:04 +0000 Subject: [PATCH 6/6] gnome-clocks: use wrapGAppsHook --- .../gnome-3/3.16/apps/gnome-clocks/default.nix | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix index 8bdfcfd9f88..b1a57b9e68d 100644 --- a/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix +++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix @@ -1,7 +1,7 @@ { stdenv, intltool, fetchurl, libgweather, libnotify , pkgconfig, gtk3, glib, hicolor_icon_theme, gsound , makeWrapper, itstool, libcanberra_gtk3, libtool -, gnome3, librsvg, gdk_pixbuf, geoclue2 }: +, gnome3, librsvg, gdk_pixbuf, geoclue2, wrapGAppsHook }: stdenv.mkDerivation rec { name = "gnome-clocks-${gnome3.version}.1"; @@ -13,23 +13,15 @@ stdenv.mkDerivation rec { doCheck = true; - propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; - buildInputs = [ pkgconfig gtk3 glib intltool itstool libcanberra_gtk3 gnome3.gsettings_desktop_schemas makeWrapper gdk_pixbuf gnome3.adwaita-icon-theme librsvg gnome3.gnome_desktop gnome3.geocode_glib geoclue2 libgweather libnotify libtool gsound - hicolor_icon_theme gnome3.adwaita-icon-theme ]; + hicolor_icon_theme wrapGAppsHook ]; enableParallelBuilding = true; - preFixup = '' - wrapProgram "$out/bin/gnome-clocks" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" - ''; - meta = with stdenv.lib; { homepage = https://wiki.gnome.org/Apps/Clocks; description = "Clock application designed for GNOME 3";