Repository: NixOS/nixpkgs
Pull request #383432: mesa: 24.3.4 -> 25.0.1
Author: login: K900
Labels: name: 6.topic: python
description: Python is a high-level, general-purpose programming language.
name: 8.has: documentation
description: This PR adds or changes documentation
name: 10.rebuild-linux: 501+
description: This PR causes many rebuilds on Linux and should normally target the staging branches.
name: 10.rebuild-darwin: 11-100
description: This PR causes between 11 and 100 packages to rebuild on Darwin.
name: 10.rebuild-linux: 501-1000
description: This PR causes many rebuilds on Linux and should normally target the staging branches.
name: 6.topic: cinnamon
description: Desktop environment
name: 6.topic: Enlightenment DE
description: The Enlightenment Desktop Environment
Created: 2025-02-19T17:12:49Z | Merged: 2025-03-06T06:12:56Z

<!--
^ Please summarise the changes you have done and explain why they are necessary here ^

For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
For new packages please briefly describe the package or provide a link to its homepage.
-->

As is tradition, draft before 25.0.1 is out.

## Things done

<!-- Please check what applies. Note that these are not hard requirements but merely serve as information for reviewers. -->

- Built on platform(s)
  - [x] x86_64-linux
  - [x] aarch64-linux
  - [x] x86_64-darwin
  - [x] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
  - [ ] `sandbox = relaxed`
  - [ ] `sandbox = true`
- [ ] Tested, as applicable:
  - [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
  - and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
  - or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
  - made sure NixOS tests are [linked](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#linking-nixos-module-tests-to-a-package) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [x] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [25.05 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) (or backporting [24.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) and [25.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) Release notes)
  - [ ] (Package updates) Added a release notes entry if the change is major or breaking
  - [ ] (Module updates) Added a release notes entry if the change is significant
  - [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).

<!--
To help with the large amounts of pull requests, we would appreciate your
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!

List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
-->

---

Add a :+1: [reaction] to [pull requests you find important].

[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc



Diff:
diff --git a/pkgs/applications/emulators/wine/base.nix b/pkgs/applications/emulators/wine/base.nix
index c47a04e9e42c6..aaa53bb38c575 100644
--- a/pkgs/applications/emulators/wine/base.nix
+++ b/pkgs/applications/emulators/wine/base.nix
@@ -98,7 +98,7 @@ lib.optionalAttrs (buildScript != null) { builder = buildScript; }
   ++ lib.optionals gtkSupport    [ pkgs.gtk3 pkgs.glib ]
   ++ lib.optionals openclSupport [ pkgs.opencl-headers pkgs.ocl-icd ]
   ++ lib.optionals tlsSupport    [ pkgs.openssl pkgs.gnutls ]
-  ++ lib.optionals (openglSupport && !stdenv.hostPlatform.isDarwin) [ pkgs.libGLU pkgs.libGL pkgs.mesa.osmesa pkgs.libdrm ]
+  ++ lib.optionals (openglSupport && !stdenv.hostPlatform.isDarwin) [ pkgs.libGLU pkgs.libGL pkgs.libdrm ]
   ++ lib.optionals stdenv.hostPlatform.isDarwin darwinFrameworks
   ++ lib.optionals (x11Support) (with pkgs.xorg; [
     libX11 libXcomposite libXcursor libXext libXfixes libXi libXrandr libXrender libXxf86vm
diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix
index 9cfcfc6072f4f..3974536067c13 100644
--- a/pkgs/applications/video/kodi/unwrapped.nix
+++ b/pkgs/applications/video/kodi/unwrapped.nix
@@ -18,7 +18,7 @@
 , libcrossguid, libmicrohttpd
 , bluez, doxygen, giflib, glib, harfbuzz, lcms2, libidn2, libpthreadstubs, libtasn1
 , libplist, p11-kit, zlib, flatbuffers, fstrcmp, rapidjson
-, lirc, mesa
+, lirc, mesa-gl-headers
 , x11Support ? true, libX11, xorgproto, libXt, libXmu, libXext, libXinerama, libXrandr, libXtst, libXfixes, xdpyinfo, libXdmcp
 , dbusSupport ? true, dbus
 , joystickSupport ? true, cwiid
@@ -122,7 +122,7 @@ in stdenv.mkDerivation (finalAttrs: {
       bluez giflib glib harfbuzz lcms2 libpthreadstubs
       ffmpeg flatbuffers fstrcmp rapidjson
       lirc
-      mesa # uses eglext_angle.h, which is not provided by glvnd
+      mesa-gl-headers
     ]
     ++ lib.optionals x11Support [
       libX11 xorgproto libXt libXmu libXext.dev libXdmcp
diff --git a/pkgs/by-name/he/hey-mail/package.nix b/pkgs/by-name/he/hey-mail/package.nix
index 52b0add9188ea..b4e3f10b2995b 100644
--- a/pkgs/by-name/he/hey-mail/package.nix
+++ b/pkgs/by-name/he/hey-mail/package.nix
@@ -21,7 +21,7 @@
   wrapGAppsHook3,
   writeScript,
   atk,
-  mesa,
+  libgbm,
   cups,
   systemd,
   alsa-lib,
@@ -53,7 +53,7 @@ let
     libxkbcommon
     libGL
     atk
-    mesa
+    libgbm
     cups
     systemd
     alsa-lib
diff --git a/pkgs/by-name/ma/magpie/package.nix b/pkgs/by-name/ma/magpie/package.nix
index 65ff728acba0c..35036b14319ca 100644
--- a/pkgs/by-name/ma/magpie/package.nix
+++ b/pkgs/by-name/ma/magpie/package.nix
@@ -25,6 +25,7 @@
   libXtst,
   libinput,
   libdrm,
+  libgbm,
   gsettings-desktop-schemas,
   glib,
   gtk3,
@@ -32,7 +33,7 @@
   pipewire,
   libgudev,
   libwacom,
-  mesa,
+  mesa-gl-headers,
   meson,
   nix-update-script,
   validatePkgConfig,
@@ -86,7 +87,7 @@ stdenv.mkDerivation (finalAttrs: {
     libXtst
     libcap_ng
     graphene
-    mesa # actually uses eglmesaext
+    mesa-gl-headers
   ];
 
   nativeBuildInputs = [
@@ -114,6 +115,7 @@ stdenv.mkDerivation (finalAttrs: {
     gtk3
     libcanberra
     libdrm
+    libgbm
     libgudev
     libinput
     libstartup_notification
diff --git a/pkgs/by-name/mu/muffin/package.nix b/pkgs/by-name/mu/muffin/package.nix
index ad233c8a85aa1..e781647b9ad7e 100644
--- a/pkgs/by-name/mu/muffin/package.nix
+++ b/pkgs/by-name/mu/muffin/package.nix
@@ -15,6 +15,7 @@
   json-glib,
   libcanberra,
   libdrm,
+  libgbm,
   libgnomekbd,
   libgudev,
   libinput,
@@ -24,7 +25,7 @@
   libXdamage,
   libxkbcommon,
   libXtst,
-  mesa,
+  mesa-gl-headers,
   meson,
   ninja,
   pipewire,
@@ -84,6 +85,7 @@ stdenv.mkDerivation rec {
     gtk3
     libcanberra
     libdrm
+    libgbm
     libgnomekbd
     libgudev
     libinput
@@ -104,7 +106,7 @@ stdenv.mkDerivation rec {
     json-glib
     libXtst
     graphene
-    mesa # actually uses eglmesaext
+    mesa-gl-headers
   ];
 
   mesonFlags = [
diff --git a/pkgs/by-name/mu/mutter/package.nix b/pkgs/by-name/mu/mutter/package.nix
index 8480c9095b947..4e08097370b5e 100644
--- a/pkgs/by-name/mu/mutter/package.nix
+++ b/pkgs/by-name/mu/mutter/package.nix
@@ -36,6 +36,7 @@
   libXau,
   libinput,
   libdrm,
+  libgbm,
   libei,
   libdisplay-info,
   gsettings-desktop-schemas,
@@ -50,7 +51,7 @@
   libwacom,
   libSM,
   xwayland,
-  mesa,
+  mesa-gl-headers,
   meson,
   gnome-settings-daemon,
   xorgserver,
@@ -101,7 +102,7 @@ stdenv.mkDerivation (finalAttrs: {
   propagatedBuildInputs = [
     # required for pkg-config to detect mutter-mtk
     graphene
-    mesa  # actually uses eglmesaext
+    mesa-gl-headers
   ];
 
   nativeBuildInputs = [
@@ -133,6 +134,7 @@ stdenv.mkDerivation (finalAttrs: {
     harfbuzz
     libcanberra
     libdrm
+    libgbm
     libei
     libdisplay-info
     libGL
diff --git a/pkgs/by-name/mu/mutter46/package.nix b/pkgs/by-name/mu/mutter46/package.nix
index 67079c173ab8d..b594ee5c8cf22 100644
--- a/pkgs/by-name/mu/mutter46/package.nix
+++ b/pkgs/by-name/mu/mutter46/package.nix
@@ -34,6 +34,7 @@
   libXau,
   libinput,
   libdrm,
+  libgbm,
   libei,
   libdisplay-info,
   gsettings-desktop-schemas,
@@ -48,7 +49,7 @@
   libwacom,
   libSM,
   xwayland,
-  mesa,
+  mesa-gl-headers,
   meson,
   gnome-settings-daemon,
   xorgserver,
@@ -97,7 +98,7 @@ stdenv.mkDerivation (finalAttrs: {
   propagatedBuildInputs = [
     # required for pkg-config to detect mutter-mtk
     graphene
-    mesa  # actually uses eglmesaext
+    mesa-gl-headers
   ];
 
   nativeBuildInputs = [
@@ -128,6 +129,7 @@ stdenv.mkDerivation (finalAttrs: {
     harfbuzz
     libcanberra
     libdrm
+    libgbm
     libei
     libdisplay-info
     libgudev
diff --git a/pkgs/by-name/or/orca-slicer/package.nix b/pkgs/by-name/or/orca-slicer/package.nix
index 96b996e4f38c6..89e03d1d69977 100644
--- a/pkgs/by-name/or/orca-slicer/package.nix
+++ b/pkgs/by-name/or/orca-slicer/package.nix
@@ -27,7 +27,6 @@
   hicolor-icon-theme,
   ilmbase,
   libpng,
-  mesa,
   mpfr,
   nlopt,
   opencascade-occt_7_6,
@@ -107,9 +106,6 @@ stdenv.mkDerivation rec {
       hicolor-icon-theme
       ilmbase
       libpng
-      mesa
-      mesa.osmesa
-      mesa.drivers
       mpfr
       nlopt
       opencascade-occt_7_6
@@ -129,6 +125,8 @@ stdenv.mkDerivation rec {
     ./patches/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
     # Link opencv_core and opencv_imgproc instead of opencv_world
     ./patches/dont-link-opencv-world-orca.patch
+    # Don't link osmesa
+    ./patches/no-osmesa.patch
     # The changeset from https://github.com/SoftFever/OrcaSlicer/pull/7650, can be removed when that PR gets merged
     # Allows disabling the update nag screen
     (fetchpatch {
@@ -169,8 +167,6 @@ stdenv.mkDerivation rec {
 
   NIX_LDFLAGS = toString [
     (lib.optionalString withSystemd "-ludev")
-    "-L${mesa.osmesa}/lib"
-    "-L${mesa.drivers}/lib"
     "-L${boost186}/lib"
     "-lboost_log"
     "-lboost_log_setup"
@@ -194,7 +190,6 @@ stdenv.mkDerivation rec {
     "-DBOOST_LOG_NO_LIB=OFF"
     "-DCMAKE_CXX_FLAGS=-DGL_SILENCE_DEPRECATION"
     "-DCMAKE_EXE_LINKER_FLAGS=-Wl,--no-as-needed"
-    "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,${mesa.drivers}/lib -Wl,-rpath,${mesa.osmesa}/lib"
     "-DORCA_VERSION_CHECK_DEFAULT=OFF"
   ];
 
@@ -202,12 +197,9 @@ stdenv.mkDerivation rec {
     gappsWrapperArgs+=(
       --prefix LD_LIBRARY_PATH : "$out/lib:${
         lib.makeLibraryPath [
-          mesa.drivers
-          mesa.osmesa
           glew
         ]
       }"
-      --prefix LIBGL_DRIVERS_PATH : "${mesa.drivers}/lib/dri"
       --set WEBKIT_DISABLE_COMPOSITING_MODE 1
     )
   '';
diff --git a/pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch b/pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch
new file mode 100644
index 0000000000000..09298b3e55b6d
--- /dev/null
+++ b/pkgs/by-name/or/orca-slicer/patches/no-osmesa.patch
@@ -0,0 +1,13 @@
+diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt
+index e695acd48..174e233e6 100644
+--- a/src/slic3r/CMakeLists.txt
++++ b/src/slic3r/CMakeLists.txt
+@@ -587,7 +587,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+     FIND_LIBRARY(WAYLAND_EGL_LIBRARIES    NAMES wayland-egl)
+     FIND_LIBRARY(WAYLAND_CLIENT_LIBRARIES NAMES wayland-client)
+     find_package(CURL REQUIRED)
+-    target_link_libraries(libslic3r_gui ${DBUS_LIBRARIES} OSMesa)
++    target_link_libraries(libslic3r_gui ${DBUS_LIBRARIES})
+     target_link_libraries(libslic3r_gui
+         OpenGL::EGL
+         ${WAYLAND_SERVER_LIBRARIES}
diff --git a/pkgs/by-name/qq/qqmusic/package.nix b/pkgs/by-name/qq/qqmusic/package.nix
index 4faa34fd83a42..4e35c80b4a9ac 100644
--- a/pkgs/by-name/qq/qqmusic/package.nix
+++ b/pkgs/by-name/qq/qqmusic/package.nix
@@ -21,7 +21,6 @@
   libdbusmenu,
   libglvnd,
   libpulseaudio,
-  mesa,
   nspr,
   nss,
   pango,
@@ -62,7 +61,6 @@ stdenv.mkDerivation (finalAttrs: {
     libdbusmenu
     libglvnd
     libpulseaudio
-    mesa
     nspr
     nss
     pango
diff --git a/pkgs/desktops/enlightenment/efl/default.nix b/pkgs/desktops/enlightenment/efl/default.nix
index 6e7b77e2089d4..fc5853479f467 100644
--- a/pkgs/desktops/enlightenment/efl/default.nix
+++ b/pkgs/desktops/enlightenment/efl/default.nix
@@ -27,6 +27,7 @@
   jbig2dec,
   libGL,
   libdrm,
+  libgbm,
   libinput,
   libjpeg,
   libpng,
@@ -40,7 +41,7 @@
   libxkbcommon,
   lua,
   lz4,
-  mesa,
+  mesa-gl-headers,
   mint-x-icons,
   openjpeg,
   openssl,
@@ -91,7 +92,7 @@ stdenv.mkDerivation rec {
     libsndfile
     libtiff
     lz4
-    mesa # actually uses eglmesaext
+    mesa-gl-headers
     openssl
     systemd
     udev
@@ -118,6 +119,7 @@ stdenv.mkDerivation rec {
     hicolor-icon-theme # for the icon theme
     jbig2dec
     libdrm
+    libgbm
     libinput
     libjpeg
     libraw
diff --git a/pkgs/development/libraries/arrayfire/default.nix b/pkgs/development/libraries/arrayfire/default.nix
index c33e6f4cbfe25..d0259c6016b29 100644
--- a/pkgs/development/libraries/arrayfire/default.nix
+++ b/pkgs/development/libraries/arrayfire/default.nix
@@ -245,5 +245,6 @@ stdenv.mkDerivation rec {
       chessai
       twesterhout
     ];
+    broken = true;
   };
 }
diff --git a/pkgs/development/libraries/cogl/default.nix b/pkgs/development/libraries/cogl/default.nix
index 469a33c8d713e..58164f4454a54 100644
--- a/pkgs/development/libraries/cogl/default.nix
+++ b/pkgs/development/libraries/cogl/default.nix
@@ -14,7 +14,8 @@
   gobject-introspection,
   wayland,
   gnome,
-  mesa,
+  libgbm,
+  mesa-gl-headers,
   automake,
   autoconf,
   gstreamerSupport ? false,
@@ -86,7 +87,8 @@ stdenv.mkDerivation rec {
     ]
     ++ lib.optionals stdenv.hostPlatform.isLinux [
       wayland
-      mesa  # actually uses eglmesaext
+      libgbm
+      mesa-gl-headers
       libGL
       xorg.libXrandr
       xorg.libXfixes
diff --git a/pkgs/development/libraries/mesa/common.nix b/pkgs/development/libraries/mesa/common.nix
index 8439861cf36c8..23e5104ffcf6f 100644
--- a/pkgs/development/libraries/mesa/common.nix
+++ b/pkgs/development/libraries/mesa/common.nix
@@ -5,14 +5,14 @@
 # nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa
 rec {
   pname = "mesa";
-  version = "24.3.4";
+  version = "25.0.1";
 
   src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = "mesa";
     repo = "mesa";
     rev = "mesa-${version}";
-    hash = "sha256-1RUHbTgcCxdDrWjqB0EG4Ny/nwdjQHHpyPauiW/yogU=";
+    hash = "sha256-9D4d7EEdZysvXDRcmpbyt85Lo64sldNRomp6/HUVORo=";
   };
 
   meta = {
diff --git a/pkgs/development/libraries/mesa/cross_clc.patch b/pkgs/development/libraries/mesa/cross_clc.patch
deleted file mode 100644
index cb29e57ec3493..0000000000000
--- a/pkgs/development/libraries/mesa/cross_clc.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-commit f063e9f74b45f34e4ac570a90901253bf8e64efd
-Author: Mary Guillemard <mary.guillemard@collabora.com>
-Date:   2024-12-02 09:11:35 +0100
-
-    meson: Add mesa-clc and install-mesa-clc options
-    
-    Due to the cross build issues in current meson, we adds new options to
-    allow mesa_clc and vtn_bindgen to be installed or searched on the
-    system.
-    
-    Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
-    Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
-    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
-    Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32719>
-
-diff --git a/meson.build b/meson.build
-index de9c9af53a1..e37325ec176 100644
---- a/meson.build
-+++ b/meson.build
-@@ -808,7 +808,7 @@ if with_gallium_rusticl or with_nouveau_vk or with_tools.contains('etnaviv')
- endif
- 
- with_clover_spirv = with_gallium_clover and get_option('opencl-spirv')
--with_clc = with_microsoft_clc or with_intel_clc or with_gallium_asahi or with_asahi_vk or with_gallium_rusticl or with_clover_spirv
-+with_clc = get_option('mesa-clc') != 'auto' or with_microsoft_clc or with_intel_clc or with_gallium_asahi or with_asahi_vk or with_gallium_rusticl
- 
- dep_clc = null_dep
- if with_gallium_clover or with_clc
-diff --git a/meson_options.txt b/meson_options.txt
-index 79ee65e6094..8f22b36e5fb 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -744,3 +744,20 @@ option(
-     'none', 'dri2'
-   ],
- )
-+
-+option(
-+  'mesa-clc',
-+  type : 'combo',
-+  value : 'auto',
-+  choices : [
-+    'enabled', 'system', 'auto'
-+  ],
-+  description : 'Build the mesa-clc compiler or use a system version.'
-+)
-+
-+option(
-+  'install-mesa-clc',
-+  type : 'boolean',
-+  value : false,
-+  description : 'Install the mesa-clc compiler (if needed for cross builds).'
-+)
-diff --git a/src/compiler/clc/meson.build b/src/compiler/clc/meson.build
-index 74767d08de2..4875d71ca21 100644
---- a/src/compiler/clc/meson.build
-+++ b/src/compiler/clc/meson.build
-@@ -117,15 +117,20 @@ idep_mesaclc = declare_dependency(
-   link_args : _idep_mesaclc_link_args,
- )
- 
--prog_mesa_clc = executable(
--  'mesa_clc',
--  ['mesa_clc.c'],
--  include_directories : [inc_include, inc_src],
--  c_args : [pre_args, no_override_init_args],
--  link_args : [ld_args_build_id],
--  dependencies : [idep_mesaclc, dep_llvm, dep_spirv_tools, idep_getopt],
--  # If we can run host binaries directly, just build mesa_clc for the host.
--  # Most commonly this happens when doing a cross compile from an x86_64 build
--  # machine to an x86 host
--  native : not meson.can_run_host_binaries(),
--)
-+if get_option('mesa-clc') == 'system'
-+  prog_mesa_clc = find_program('mesa_clc', native : true)
-+else
-+  prog_mesa_clc = executable(
-+    'mesa_clc',
-+    ['mesa_clc.c'],
-+    include_directories : [inc_include, inc_src],
-+    c_args : [pre_args, no_override_init_args],
-+    link_args : [ld_args_build_id],
-+    dependencies : [idep_mesaclc, dep_llvm, dep_spirv_tools, idep_getopt],
-+    # If we can run host binaries directly, just build mesa_clc for the host.
-+    # Most commonly this happens when doing a cross compile from an x86_64 build
-+    # machine to an x86 host
-+    native : not meson.can_run_host_binaries(),
-+    install : get_option('install-mesa-clc'),
-+  )
-+endif
diff --git a/pkgs/development/libraries/mesa/darwin.nix b/pkgs/development/libraries/mesa/darwin.nix
index 55392071010a9..1a458523632ec 100644
--- a/pkgs/development/libraries/mesa/darwin.nix
+++ b/pkgs/development/libraries/mesa/darwin.nix
@@ -27,18 +27,6 @@ stdenv.mkDerivation {
     meta
     ;
 
-  # Darwin build fixes. FIXME: remove in 25.1.
-  patches = [
-    (fetchpatch {
-      url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/e89eba0796b3469f1d2cdbb600309f6231a8169d.patch";
-      hash = "sha256-0EP0JsYy+UTQ+eGd3sMfoLf1R+2e8n1flmQAHq3rCR4=";
-    })
-    (fetchpatch {
-      url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/568a4ca899762fe96fc9b34d2288d07e6656af87.patch";
-      hash = "sha256-uLxa5vA3/cYAIJT9h7eBQ1EBu4MnMg9R5uGAHzTb5Fc=";
-    })
-  ];
-
   outputs = [
     "out"
     "dev"
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index 633770b6862c8..3fe641b4476c0 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -91,6 +91,7 @@
     "intel-nullhw"
   ]
 , mesa
+, mesa-gl-headers
 , makeSetupHook
 }:
 
@@ -138,9 +139,6 @@ in stdenv.mkDerivation {
 
   patches = [
     ./opencl.patch
-    # cherry-picked from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32719
-    # safe to remove for versions > 24.3.2
-    ./cross_clc.patch
   ];
 
   postPatch = ''
@@ -154,15 +152,28 @@ in stdenv.mkDerivation {
     substituteInPlace src/amd/vulkan/meson.build --replace \
       "get_option('datadir')" "'${placeholder "out"}/share'"
 
+    for header in ${toString mesa-gl-headers.headers}; do
+      if ! diff -q $header ${mesa-gl-headers}/$header; then
+        echo "File $header does not match between mesa and mesa-gl-headers, please update mesa-gl-headers first!"
+        exit 42
+      fi
+    done
+
     ${copyRustDeps}
   '';
 
   outputs = [
-    "out" "dev" "drivers" "driversdev" "opencl" "teflon" "osmesa"
+    "out" "dev"
+    "drivers"
+    # OpenCL drivers pull in ~1G of extra LLVM stuff, so don't install them
+    # if the user didn't explicitly ask for it
+    "opencl"
     # the Dozen drivers depend on libspirv2dxil, but link it statically, and
     # libspirv2dxil itself is pretty chonky, so relocate it to its own output in
     # case anything wants to use it at some point
     "spirv2dxil"
+    # tools for the host platform to be used when cross-compiling
+    "cross_tools"
   ];
 
   # Keep build-ids so drivers can use them for caching, etc.
@@ -196,8 +207,10 @@ in stdenv.mkDerivation {
     # Enable glvnd for dynamic libGL dispatch
     (lib.mesonEnable "glvnd" true)
 
-    (lib.mesonBool "gallium-nine" true) # Direct3D in Wine
-    (lib.mesonBool "osmesa" true) # used by wine
+    (lib.mesonBool "gallium-nine" false) # Direct3D9 in Wine, largely supplanted by DXVK
+    (lib.mesonBool "osmesa" false) # deprecated upstream
+    (lib.mesonEnable "gallium-xa" false) # old and mostly dead
+
     (lib.mesonBool "teflon" true) # TensorFlow frontend
 
     # Enable all freedreno kernel mode drivers. (For example, virtio can be
@@ -206,14 +219,13 @@ in stdenv.mkDerivation {
     (lib.mesonOption "freedreno-kmds" "msm,kgsl,virtio,wsl")
 
     # Enable Intel RT stuff when available
-    (lib.mesonBool "install-intel-clc" true)
-    (lib.mesonBool "install-mesa-clc" true)
     (lib.mesonEnable "intel-rt" stdenv.hostPlatform.isx86_64)
+
+    # Required for OpenCL
     (lib.mesonOption "clang-libdir" "${lib.getLib llvmPackages.clang-unwrapped}/lib")
 
     # Clover, old OpenCL frontend
     (lib.mesonOption "gallium-opencl" "icd")
-    (lib.mesonBool "opencl-spirv" true)
 
     # Rusticl, new OpenCL frontend
     (lib.mesonBool "gallium-rusticl" true)
@@ -221,12 +233,18 @@ in stdenv.mkDerivation {
     # meson auto_features enables this, but we do not want it
     (lib.mesonEnable "android-libbacktrace" false)
     (lib.mesonEnable "microsoft-clc" false) # Only relevant on Windows (OpenCL 1.2 API on top of D3D12)
+
+    # Build and install extra tools for cross
+    (lib.mesonBool "install-mesa-clc" true)
+    (lib.mesonBool "install-precomp-compiler" true)
+
+    # Disable valgrind on targets where it's not available
     (lib.mesonEnable "valgrind" withValgrind)
   ] ++ lib.optionals enablePatentEncumberedCodecs [
     (lib.mesonOption "video-codecs" "all")
   ] ++ lib.optionals needNativeCLC [
-    (lib.mesonOption "intel-clc" "system")
     (lib.mesonOption "mesa-clc" "system")
+    (lib.mesonOption "precomp-compiler" "system")
   ];
 
   strictDeps = true;
@@ -295,11 +313,11 @@ in stdenv.mkDerivation {
     wayland-scanner
   ] ++ lib.optionals needNativeCLC [
     # `or null` to not break eval with `attribute missing` on darwin to linux cross
-    (buildPackages.mesa.driversdev or null)
+    (buildPackages.mesa.cross_tools or null)
   ];
 
   disallowedRequisites = lib.optionals needNativeCLC [
-    (buildPackages.mesa.driversdev or null)
+    (buildPackages.mesa.cross_tools or null)
   ];
 
   propagatedBuildInputs = [ libdrm ];
@@ -308,13 +326,14 @@ in stdenv.mkDerivation {
 
   postInstall = ''
     # Move driver-related bits to $drivers
+    moveToOutput "lib/gallium-pipe" $drivers
     moveToOutput "lib/gbm" $drivers
     moveToOutput "lib/lib*_mesa*" $drivers
     moveToOutput "lib/libgallium*" $drivers
     moveToOutput "lib/libglapi*" $drivers
     moveToOutput "lib/libpowervr_rogue*" $drivers
     moveToOutput "lib/libvulkan_*" $drivers
-    moveToOutput "lib/libxatracker*" $drivers
+    moveToOutput "lib/libteflon.so" $drivers
 
     # Update search path used by glvnd (it's pointing to $out but drivers are in $drivers)
     for js in $drivers/share/glvnd/egl_vendor.d/*.json; do
@@ -337,14 +356,14 @@ in stdenv.mkDerivation {
     echo $opencl/lib/libMesaOpenCL.so > $opencl/etc/OpenCL/vendors/mesa.icd
     echo $opencl/lib/libRusticlOpenCL.so > $opencl/etc/OpenCL/vendors/rusticl.icd
 
-    moveToOutput bin/intel_clc $driversdev
-    moveToOutput bin/mesa_clc $driversdev
-    moveToOutput lib/gallium-pipe $opencl
+    moveToOutput bin/intel_clc $cross_tools
+    moveToOutput bin/mesa_clc $cross_tools
+    moveToOutput bin/vtn_bindgen $cross_tools
+
     moveToOutput "lib/lib*OpenCL*" $opencl
-    moveToOutput "lib/libOSMesa*" $osmesa
+
     moveToOutput bin/spirv2dxil $spirv2dxil
     moveToOutput "lib/libspirv_to_dxil*" $spirv2dxil
-    moveToOutput lib/libteflon.so $teflon
   '';
 
   postFixup = ''
@@ -356,15 +375,9 @@ in stdenv.mkDerivation {
     # remove pkgconfig files for GL/EGL; they are provided by libGL.
     rm -f $dev/lib/pkgconfig/{gl,egl}.pc
 
-    # Move development files for libraries in $drivers to $driversdev
-    mkdir -p $driversdev/include
-    mv $dev/include/xa_* $dev/include/d3d* -t $driversdev/include || true
-    mkdir -p $driversdev/lib/pkgconfig
-    for pc in lib/pkgconfig/{xatracker,d3d}.pc; do
-      if [ -f "$dev/$pc" ]; then
-        substituteInPlace "$dev/$pc" --replace $out $drivers
-        mv $dev/$pc $driversdev/$pc
-      fi
+    # remove headers moved to mesa-gl-headers
+    for header in ${toString mesa-gl-headers.headers}; do
+      rm -f $dev/$header
     done
 
     # update symlinks pointing to libgallium in $out
@@ -392,7 +405,7 @@ in stdenv.mkDerivation {
 
   env.NIX_CFLAGS_COMPILE = toString ([
     "-UPIPE_SEARCH_DIR"
-    "-DPIPE_SEARCH_DIR=\"${placeholder "opencl"}/lib/gallium-pipe\""
+    "-DPIPE_SEARCH_DIR=\"${placeholder "drivers"}/lib/gallium-pipe\""
   ]);
 
   passthru = {
diff --git a/pkgs/development/libraries/mesa/headers.nix b/pkgs/development/libraries/mesa/headers.nix
new file mode 100644
index 0000000000000..314e1ac5efadd
--- /dev/null
+++ b/pkgs/development/libraries/mesa/headers.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitLab,
+}:
+
+let
+  common = import ./common.nix { inherit lib fetchFromGitLab; };
+  headers = [
+    "include/EGL/eglext_angle.h"
+    "include/EGL/eglmesaext.h"
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "mesa-gl-headers";
+
+  # These are a bigger rebuild and don't change often, so keep them separate.
+  version = "25.0.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "mesa";
+    repo = "mesa";
+    rev = "mesa-${version}";
+    hash = "sha256-9D4d7EEdZysvXDRcmpbyt85Lo64sldNRomp6/HUVORo=";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    for header in ${toString headers}; do
+      install -Dm444 $header $out/$header
+    done
+  '';
+
+  passthru = { inherit headers; };
+
+  inherit (common) meta;
+}
diff --git a/pkgs/development/python-modules/horizon-eda/default.nix b/pkgs/development/python-modules/horizon-eda/default.nix
index f1b64a71ae32b..e444dc2705ca2 100644
--- a/pkgs/development/python-modules/horizon-eda/default.nix
+++ b/pkgs/development/python-modules/horizon-eda/default.nix
@@ -1,7 +1,6 @@
 {
   buildPythonPackage,
   horizon-eda,
-  mesa,
   pycairo,
   python,
   pythonOlder,
@@ -24,8 +23,6 @@ buildPythonPackage {
   disabled = pythonOlder "3.9";
 
   buildInputs = base.buildInputs ++ [
-    mesa
-    mesa.osmesa
     python
   ];
 
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 2dc81662f4257..754055f229ba5 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -604,7 +604,6 @@ self: super:
   });
 
   xf86videovmware = super.xf86videovmware.overrideAttrs (attrs: {
-    buildInputs =  attrs.buildInputs ++ [ mesa mesa.driversdev llvm ]; # for libxatracker
     env.NIX_CFLAGS_COMPILE = toString [ "-Wno-error=address" ]; # gcc12
     meta = attrs.meta // {
       platforms = ["i686-linux" "x86_64-linux"];
diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix
index 7e6572f66a9a5..1beecf73015ec 100644
--- a/pkgs/tools/X11/primus/lib.nix
+++ b/pkgs/tools/X11/primus/lib.nix
@@ -5,7 +5,6 @@
   fetchpatch,
   libX11,
   libGL,
-  mesa,
   nvidia_x11 ? null,
   libglvnd,
 }:
@@ -48,7 +47,6 @@ stdenv.mkDerivation {
     "LIBDIR=$(out)/lib"
     "PRIMUS_libGLa=${aPackage}/lib/libGL.so"
     "PRIMUS_libGLd=${libGL}/lib/libGL.so"
-    "PRIMUS_LOAD_GLOBAL=${mesa}/lib/libglapi.so"
   ];
 
   installPhase = ''
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3feea755f81b5..ae79b42a313c5 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -9905,6 +9905,7 @@ with pkgs;
   mesa_i686 = pkgsi686Linux.mesa; # make it build on Hydra
 
   libgbm = callPackage ../development/libraries/mesa/gbm.nix {};
+  mesa-gl-headers = callPackage ../development/libraries/mesa/headers.nix {};
 
   ## End libGL/libGLU/Mesa stuff
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index d781f386f10ba..6a9fc437c31b6 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -6099,7 +6099,7 @@ self: super: with self; {
   hopcroftkarp = callPackage ../development/python-modules/hopcroftkarp { };
 
   horizon-eda = callPackage ../development/python-modules/horizon-eda {
-    inherit (pkgs) horizon-eda mesa;
+    inherit (pkgs) horizon-eda;
   };
 
   howdoi = callPackage ../development/python-modules/howdoi { };


Reviews:
user: login: olivia-fl
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-02-19T20:17:44Z
user: login: K900
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-02-21T13:37:48Z
user: login: SuperSandro2000
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-03T23:13:21Z
user: login: SuperSandro2000
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-05T15:13:05Z
user: login: K900
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-05T15:33:13Z
user: login: K900
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-05T15:33:37Z

Review comments:
diff_hunk: @@ -227,6 +224,7 @@ in stdenv.mkDerivation {
   ] ++ lib.optionals needNativeCLC [
     (lib.mesonOption "intel-clc" "system")
path: pkgs/development/libraries/mesa/default.nix
user: login: olivia-fl
body: ```suggestion
    (lib.mesonOption "intel-clc" "system")
```

I believe intel-clc is no longer necessary, it's handled by precomp-compiler now. The two usage sites are [here][1] and [here][2]. I believe the plan is to remove it in the future. Same thing for `install-intel-clc` and `install-precomp-compiler`.

[1]: https://gitlab.freedesktop.org/mesa/mesa/-/blob/3a8abfa39b73d7fbb68492be864626fdff9c3ebc/meson.build#L323
[2]: https://gitlab.freedesktop.org/mesa/mesa/-/blob/3a8abfa39b73d7fbb68492be864626fdff9c3ebc/meson.build#L323
created_at: 2025-02-19T20:11:34Z
author_association: CONTRIBUTOR
diff_hunk: @@ -227,6 +224,7 @@ in stdenv.mkDerivation {
   ] ++ lib.optionals needNativeCLC [
     (lib.mesonOption "intel-clc" "system")
path: pkgs/development/libraries/mesa/default.nix
user: login: K900
body: Fixed.
created_at: 2025-02-21T13:37:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -27,18 +27,6 @@ stdenv.mkDerivation {
     meta
     ;
 
-  # Darwin build fixes. FIXME: remove in 25.1.
-  patches = [
-    (fetchpatch {
path: pkgs/development/libraries/mesa/darwin.nix
user: login: SuperSandro2000
body: Please remove the unused fetchpatch from inputs.
created_at: 2025-03-03T23:13:21Z
author_association: MEMBER
diff_hunk: @@ -245,5 +245,6 @@ stdenv.mkDerivation rec {
       chessai
       twesterhout
     ];
+    broken = true;
path: pkgs/development/libraries/arrayfire/default.nix
user: login: SuperSandro2000
body: That's a regression from master. We should at least add a comment with a short reason.
created_at: 2025-03-05T15:13:04Z
author_association: MEMBER
diff_hunk: @@ -245,5 +245,6 @@ stdenv.mkDerivation rec {
       chessai
       twesterhout
     ];
+    broken = true;
path: pkgs/development/libraries/arrayfire/default.nix
user: login: K900
body: It's not? It doesn't build on master either.
created_at: 2025-03-05T15:33:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -245,5 +245,6 @@ stdenv.mkDerivation rec {
       chessai
       twesterhout
     ];
+    broken = true;
path: pkgs/development/libraries/arrayfire/default.nix
user: login: K900
body: (and hasn't for ages) 
created_at: 2025-03-05T15:33:37Z
author_association: CONTRIBUTOR

PR comments:
user: login: mattkang
created_at: 2025-02-24T04:01:59Z
body: I think this is going to solve a bug for me that's causing an XWayland segfault on intel. What needs to happen to get this merged and how can I help?
author_association: CONTRIBUTOR
user: login: K900
created_at: 2025-02-24T04:03:28Z
body: Nothing, we're waiting for 25.0.1 as recommended by upstream. 
author_association: CONTRIBUTOR
user: login: vcunat
created_at: 2025-03-03T07:13:54Z
body: > how can I help?

I think more testing never hurts.  It's nice that mesa updates aren't huge rebuilds anymore, so testing is a bit more accessible.
author_association: MEMBER
user: login: K900
created_at: 2025-03-04T18:41:09Z
body: So, some Shenanigans(tm) later, I've basically achieved my goal of getting Mesa to be 1 rebuild. (it is technically 3, but 1 is primus, which is broken, and the other is xf86-video-vmware, which you should not be using). The changes to the Mesa package itself will also hopefully make sure that nothing picks up this dependency by accident.
author_association: CONTRIBUTOR
user: login: K900
created_at: 2025-03-05T07:15:49Z
body: OK, some of the shenanigans will probably have to be delayed, as there's _something_ going on with XWayland that I don't fully understand yet. The remaining changes still save a few hundred rebuilds, so they're staying in.
author_association: CONTRIBUTOR
user: login: jansol
created_at: 2025-03-05T15:39:04Z
body: > OK, some of the shenanigans will probably have to be delayed, as there's _something_ going on with XWayland that I don't fully understand yet. The remaining changes still save a few hundred rebuilds, so they're staying in.

Does this mean that it's no longer necessary to build chromium 3 times when touching mesa? That was my main problem with mesa testing before, since that eats massive amounts of memory and takes hours to complete even on a high end system. And QtWebView and different versions of gtk webview all required separate builds...
author_association: CONTRIBUTOR
user: login: K900
created_at: 2025-03-05T15:41:09Z
body: This should already not be an issue with the previous batch of libgbm changes, but between this and https://github.com/NixOS/nixpkgs/pull/387292 we should have exactly zero Mesa dependencies left in tree, meaning replacing Mesa will only ever rebuild Mesa. 
author_association: CONTRIBUTOR
user: login: returntoreality
created_at: 2025-03-05T22:46:39Z
body: 25.0.1 got released just now
author_association: CONTRIBUTOR
user: login: jue89
created_at: 2025-06-01T12:14:15Z
body: This PR introduced a regression at `python3Packages.horizon-eda`. It can't be built anymore.

Unfortunately, I don't have the understanding why osmesa is required and why it has been removed.
What it the alternative?
author_association: CONTRIBUTOR
user: login: K900
created_at: 2025-06-01T13:04:43Z
body: That package was broken long before this change, and osmesa is now gone upstream. 
author_association: CONTRIBUTOR
user: login: jue89
created_at: 2025-06-02T09:49:56Z
body: > That package was broken long before this change, and osmesa is now gone upstream.

I'm using this package in my CI/CD pipeline. It should have been working before this change?!

Nevertheless, I'd suggest to mark it broken until it has been fixed.
I've filed an issue: https://github.com/horizon-eda/horizon/issues/809
author_association: CONTRIBUTOR