anchor.diff:  { stdenv, fetchurl, fetchpatch, pkgconfig, gettext, perl, makeWrapper, shared-mime-info, isocodes
  -, expat, glib, cairo, pango, gdk_pixbuf, atk, at-spi2-atk, gobject-introspection
  -, xorg, epoxy, json-glib, libxkbcommon, gmp, gnome3
  +, expat, glib, cairo, pango, gdk_pixbuf, atk, at-spi2-atk, gobject-introspection, fribidi
  +, xorg, epoxy, json-glib, libxkbcommon, gmp, gnome3, autoreconfHook
   , x11Support ? stdenv.isLinux
   , waylandSupport ? stdenv.isLinux, mesa_noglu, wayland, wayland-protocols
   , xineramaSupport ? stdenv.isLinux
  
positive.code:   buildInputs = [ libxkbcommon epoxy json-glib isocodes ]
      ++ optional stdenv.isDarwin AppKit;
    propagatedBuildInputs = with xorg; with stdenv.lib;
      [ expat glib cairo pango gdk_pixbuf atk at-spi2-atk gnome3.gsettings-desktop-schemas
        libXrandr libXrender libXcomposite libXi libXcursor libSM libICE ]
      ++ optional stdenv.isDarwin Cocoa  # explicitly propagated, always needed
      ++ optionals waylandSupport [ mesa_noglu wayland wayland-protocols ]
  
negative.code: with stdenv.lib;
  
  let
    version = "3.24.5";
  in
  stdenv.mkDerivation rec {
    name = "gtk+3-${version}";
  
    src = fetchurl {
      url = "mirror://gnome/sources/gtk+/${stdenv.lib.versions.majorMinor version}/gtk+-${version}.tar.xz";
      sha256 = "0bxhvnixc1hjxbzx063lghmix0wmv282khsqmckdxhrb606zpr8b";
    };
  
    outputs = [ "out" "dev" ];
    outputBin = "dev";
  
    nativeBuildInputs = [ pkgconfig gettext gobject-introspection perl makeWrapper autoreconfHook ];
  
    patches = [
      ./3.0-immodules.cache.patch
  