diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2022-10-25 17:02:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 17:02:06 +0200 |
commit | 361d98667cfe882cdf89547c7c96265f2ae8955d (patch) | |
tree | cef9a1d250003a3b112136626cac18fa2b56a047 /pkgs/desktops/gnome | |
parent | c34254b40aebd41333263cdda615c2ccdab8d0da (diff) | |
parent | a8e19491ddee91c4885e0c3282c0f6448ad023b6 (diff) |
Merge pull request #197029 from jtojnar/webp-loader
webp-pixbuf-loader: Adopt by GNOME
Diffstat (limited to 'pkgs/desktops/gnome')
-rw-r--r-- | pkgs/desktops/gnome/core/eog/default.nix | 12 | ||||
-rw-r--r-- | pkgs/desktops/gnome/core/gnome-control-center/default.nix | 12 | ||||
-rw-r--r-- | pkgs/desktops/gnome/core/gnome-shell/default.nix | 12 | ||||
-rw-r--r-- | pkgs/desktops/gnome/core/nautilus/default.nix | 2 | ||||
-rw-r--r-- | pkgs/desktops/gnome/default.nix | 4 | ||||
-rw-r--r-- | pkgs/desktops/gnome/gdk-pixbuf-cache-builder.nix | 37 |
6 files changed, 79 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/core/eog/default.nix b/pkgs/desktops/gnome/core/eog/default.nix index ccb4d439240f9..e0a943a8e1ca3 100644 --- a/pkgs/desktops/gnome/core/eog/default.nix +++ b/pkgs/desktops/gnome/core/eog/default.nix @@ -22,6 +22,7 @@ , shared-mime-info , wrapGAppsHook , librsvg +, webp-pixbuf-loader , libexif , gobject-introspection , gi-docgen @@ -78,6 +79,17 @@ stdenv.mkDerivation rec { "-Dgtk_doc=true" ]; + postInstall = '' + # Pull in WebP support for gnome-backgrounds. + # In postInstall to run before gappsWrapperArgsHook. + export GDK_PIXBUF_MODULE_FILE="${gnome._gdkPixbufCacheBuilder_DO_NOT_USE { + extraLoaders = [ + librsvg + webp-pixbuf-loader + ]; + }}" + ''; + preFixup = '' gappsWrapperArgs+=( # Thumbnailers diff --git a/pkgs/desktops/gnome/core/gnome-control-center/default.nix b/pkgs/desktops/gnome/core/gnome-control-center/default.nix index 2c6db7f854aca..bd2777610fa3d 100644 --- a/pkgs/desktops/gnome/core/gnome-control-center/default.nix +++ b/pkgs/desktops/gnome/core/gnome-control-center/default.nix @@ -33,6 +33,7 @@ , libpulseaudio , libpwquality , librsvg +, webp-pixbuf-loader , libsecret , libwacom , libxml2 @@ -139,6 +140,17 @@ stdenv.mkDerivation rec { addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share" ''; + postInstall = '' + # Pull in WebP support for gnome-backgrounds. + # In postInstall to run before gappsWrapperArgsHook. + export GDK_PIXBUF_MODULE_FILE="${gnome._gdkPixbufCacheBuilder_DO_NOT_USE { + extraLoaders = [ + librsvg + webp-pixbuf-loader + ]; + }}" + ''; + preFixup = '' gappsWrapperArgs+=( --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" diff --git a/pkgs/desktops/gnome/core/gnome-shell/default.nix b/pkgs/desktops/gnome/core/gnome-shell/default.nix index ccc34ecca019e..050a88dd0b3e1 100644 --- a/pkgs/desktops/gnome/core/gnome-shell/default.nix +++ b/pkgs/desktops/gnome/core/gnome-shell/default.nix @@ -20,6 +20,7 @@ , shared-mime-info , libgweather , librsvg +, webp-pixbuf-loader , geoclue2 , perl , docbook_xml_dtd_45 @@ -187,6 +188,17 @@ stdenv.mkDerivation rec { rm data/theme/gnome-shell.css ''; + postInstall = '' + # Pull in WebP support for gnome-backgrounds. + # In postInstall to run before gappsWrapperArgsHook. + export GDK_PIXBUF_MODULE_FILE="${gnome._gdkPixbufCacheBuilder_DO_NOT_USE { + extraLoaders = [ + librsvg + webp-pixbuf-loader + ]; + }}" + ''; + preFixup = '' gappsWrapperArgs+=( # Until glib’s xdgmime is patched diff --git a/pkgs/desktops/gnome/core/nautilus/default.nix b/pkgs/desktops/gnome/core/nautilus/default.nix index 163c562a1ab67..5eacfdac5baa7 100644 --- a/pkgs/desktops/gnome/core/nautilus/default.nix +++ b/pkgs/desktops/gnome/core/nautilus/default.nix @@ -21,6 +21,7 @@ , libexif , libseccomp , librsvg +, webp-pixbuf-loader , tracker , tracker-miners , gexiv2 @@ -106,6 +107,7 @@ stdenv.mkDerivation rec { # Thumbnailers --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${webp-pixbuf-loader}/share" --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" ) ''; diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix index b8d48cf12fd5e..08dd450043ac9 100644 --- a/pkgs/desktops/gnome/default.nix +++ b/pkgs/desktops/gnome/default.nix @@ -3,6 +3,10 @@ lib.makeScope pkgs.newScope (self: with self; { updateScript = callPackage ./update.nix { }; + # Temporary helper until gdk-pixbuf supports multiple cache files. + # This will go away, do not use outside Nixpkgs. + _gdkPixbufCacheBuilder_DO_NOT_USE = callPackage ./gdk-pixbuf-cache-builder.nix { }; + libsoup = pkgs.libsoup.override { gnomeSupport = true; }; libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; diff --git a/pkgs/desktops/gnome/gdk-pixbuf-cache-builder.nix b/pkgs/desktops/gnome/gdk-pixbuf-cache-builder.nix new file mode 100644 index 0000000000000..22359e9a5827e --- /dev/null +++ b/pkgs/desktops/gnome/gdk-pixbuf-cache-builder.nix @@ -0,0 +1,37 @@ +{ + runCommand, + pkg-config, + gdk-pixbuf, + lib, + stdenv, + buildPackages, +}: + +{ + extraLoaders, +}: + +let + # Get packages to generate the cache for. We always include gdk-pixbuf. + loaderPackages = [ + gdk-pixbuf + ] ++ extraLoaders; +in + +# Generate the cache file by running gdk-pixbuf-query-loaders for each +# package and concatenating the results. +runCommand "gdk-pixbuf-loaders.cache" { + preferLocalBuild = true; +} '' + ( + for package in ${lib.escapeShellArgs loaderPackages}; do + module_dir="$package/${gdk-pixbuf.moduleDir}" + if [[ ! -d "$module_dir" ]]; then + echo "Error: gdkPixbufCacheBuilder: Passed package “''${package}” does not contain GdkPixbuf loaders in “${gdk-pixbuf.moduleDir}”." 1>&2 + exit 1 + fi + GDK_PIXBUF_MODULEDIR="$module_dir" \ + ${stdenv.hostPlatform.emulator buildPackages} ${gdk-pixbuf.dev}/bin/gdk-pixbuf-query-loaders + done + ) > "$out" +'' |