diff options
Diffstat (limited to 'pkgs/desktops/gnome/core/mutter/43/default.nix')
-rw-r--r-- | pkgs/desktops/gnome/core/mutter/43/default.nix | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/core/mutter/43/default.nix b/pkgs/desktops/gnome/core/mutter/43/default.nix new file mode 100644 index 00000000000..5953d00de45 --- /dev/null +++ b/pkgs/desktops/gnome/core/mutter/43/default.nix @@ -0,0 +1,183 @@ +{ fetchurl +, runCommand +, lib +, fetchpatch +, stdenv +, pkg-config +, gnome +, gettext +, gobject-introspection +, cairo +, colord +, lcms2 +, pango +, json-glib +, libstartup_notification +, libcanberra +, ninja +, xvfb-run +, xkeyboard_config +, libxcvt +, libxkbfile +, libXdamage +, libxkbcommon +, libXtst +, libinput +, libdrm +, gsettings-desktop-schemas +, glib +, gtk3 +, gnome-desktop +, pipewire +, libgudev +, libwacom +, xwayland +, mesa +, meson +, gnome-settings-daemon +, xorgserver +, python3 +, wrapGAppsHook +, gi-docgen +, sysprof +, libsysprof-capture +, desktop-file-utils +, libcap_ng +, egl-wayland +, graphene +, wayland-protocols +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "mutter"; + version = "43.4"; + + outputs = [ "out" "dev" "man" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/mutter/${lib.versions.major finalAttrs.version}/mutter-${finalAttrs.version}.tar.xz"; + sha256 = "FiU2cxEaLsyW/I0tFfrdobVU0B3CioMEE11J1rqHsUA="; + }; + + patches = [ + # Fix build with separate sysprof. + # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2572 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch"; + sha256 = "/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU="; + }) + + # GLib 2.76 switches from using its own slice allocator to using the system malloc instead. + # This makes dragging window between workspace in multitasking view crashes Pantheon's Gala. + # Inspiration https://github.com/mate-desktop/mate-desktop/pull/538 + # Backtrace https://github.com/elementary/gala/issues/1580 + # Upstream report https://gitlab.gnome.org/GNOME/mutter/-/issues/2495 + # The patch will not apply on 44.0+, make sure this is fixed when trying to clean this up. + ./glib-2-76-gala-crash.patch + ]; + + mesonFlags = [ + "-Degl_device=true" + "-Dinstalled_tests=false" # TODO: enable these + "-Dwayland_eglstream=true" + "-Dprofiler=true" + "-Dxwayland_path=${xwayland}/bin/Xwayland" + # This should be auto detected, but it looks like it manages a false + # positive. + "-Dxwayland_initfd=disabled" + "-Ddocs=true" + ]; + + propagatedBuildInputs = [ + # required for pkg-config to detect mutter-clutter + json-glib + libXtst + libcap_ng + graphene + ]; + + nativeBuildInputs = [ + desktop-file-utils + gettext + libxcvt + mesa # needed for gbm + meson + ninja + xvfb-run + pkg-config + python3 + wrapGAppsHook + gi-docgen + xorgserver + ]; + + buildInputs = [ + cairo + egl-wayland + glib + gnome-desktop + gnome-settings-daemon + gobject-introspection + gsettings-desktop-schemas + gtk3 + libcanberra + libdrm + libgudev + libinput + libstartup_notification + libwacom + libxkbcommon + libxkbfile + libXdamage + colord + lcms2 + pango + pipewire + sysprof # for D-Bus interfaces + libsysprof-capture + xkeyboard_config + xwayland + wayland-protocols + ]; + + postPatch = '' + patchShebangs src/backends/native/gen-default-modes.py + ''; + + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + postFixup = '' + # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back. + # TODO: Move this into a directory devhelp can find. + moveToOutput "share/mutter-11/doc" "$devdoc" + ''; + + # Install udev files into our own tree. + PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev"; + + separateDebugInfo = true; + + passthru = { + libdir = "${finalAttrs.finalPackage}/lib/mutter-11"; + + tests = { + libdirExists = runCommand "mutter-libdir-exists" {} '' + if [[ ! -d ${finalAttrs.finalPackage.libdir} ]]; then + echo "passthru.libdir should contain a directory, “${finalAttrs.finalPackage.libdir}” is not one." + exit 1 + fi + touch $out + ''; + }; + }; + + meta = with lib; { + description = "A window manager for GNOME"; + homepage = "https://gitlab.gnome.org/GNOME/mutter"; + license = licenses.gpl2Plus; + maintainers = teams.pantheon.members; + platforms = platforms.linux; + }; +}) |