connman-gtk: fix FTBFS with GCC-14 (incompatible pointer types) (#376077)
[NixPkgs.git] / pkgs / by-name / mu / mutter46 / package.nix
blob67079c173ab8d7d450960c735ad73baad5287095
2   fetchurl,
3   runCommand,
4   lib,
5   stdenv,
6   pkg-config,
7   gettext,
8   gobject-introspection,
9   cairo,
10   colord,
11   lcms2,
12   pango,
13   libstartup_notification,
14   libcanberra,
15   ninja,
16   xvfb-run,
17   libxcvt,
18   libICE,
19   libX11,
20   libXcomposite,
21   libXcursor,
22   libXdamage,
23   libXext,
24   libXfixes,
25   libXi,
26   libXtst,
27   libxkbfile,
28   xkeyboard_config,
29   libxkbcommon,
30   libXrender,
31   libxcb,
32   libXrandr,
33   libXinerama,
34   libXau,
35   libinput,
36   libdrm,
37   libei,
38   libdisplay-info,
39   gsettings-desktop-schemas,
40   glib,
41   atk,
42   gtk4,
43   fribidi,
44   harfbuzz,
45   gnome-desktop,
46   pipewire,
47   libgudev,
48   libwacom,
49   libSM,
50   xwayland,
51   mesa,
52   meson,
53   gnome-settings-daemon,
54   xorgserver,
55   python3,
56   wayland-scanner,
57   wrapGAppsHook4,
58   gi-docgen,
59   sysprof,
60   libsysprof-capture,
61   desktop-file-utils,
62   egl-wayland,
63   graphene,
64   wayland,
65   wayland-protocols,
68 stdenv.mkDerivation (finalAttrs: {
69   pname = "mutter";
70   version = "46.8";
72   outputs = [
73     "out"
74     "dev"
75     "man"
76     "devdoc"
77   ];
79   src = fetchurl {
80     url = "mirror://gnome/sources/mutter/${lib.versions.major finalAttrs.version}/mutter-${finalAttrs.version}.tar.xz";
81     hash = "sha256-+8CDVEr7O4Vn18pobCF/g3sG+UeNbiV0FZ/5ocjhyWI=";
82   };
84   mesonFlags = [
85     "-Degl_device=true"
86     "-Dinstalled_tests=false" # TODO: enable these
87     "-Dtests=false"
88     "-Dwayland_eglstream=true"
89     "-Dprofiler=true"
90     "-Dxwayland_path=${lib.getExe xwayland}"
91     # This should be auto detected, but it looks like it manages a false
92     # positive.
93     "-Dxwayland_initfd=disabled"
94     "-Ddocs=true"
95   ];
97   propagatedBuildInputs = [
98     # required for pkg-config to detect mutter-mtk
99     graphene
100     mesa  # actually uses eglmesaext
101   ];
103   nativeBuildInputs = [
104     desktop-file-utils
105     gettext
106     libxcvt
107     meson
108     ninja
109     xvfb-run
110     pkg-config
111     python3
112     wayland-scanner
113     wrapGAppsHook4
114     gi-docgen
115     xorgserver
116     gobject-introspection
117   ];
119   buildInputs = [
120     cairo
121     egl-wayland
122     glib
123     gnome-desktop
124     gnome-settings-daemon
125     gsettings-desktop-schemas
126     atk
127     fribidi
128     harfbuzz
129     libcanberra
130     libdrm
131     libei
132     libdisplay-info
133     libgudev
134     libinput
135     libstartup_notification
136     libwacom
137     libSM
138     colord
139     lcms2
140     pango
141     pipewire
142     sysprof # for D-Bus interfaces
143     libsysprof-capture
144     xwayland
145     wayland
146     wayland-protocols
147     # X11 client
148     gtk4
149     libICE
150     libX11
151     libXcomposite
152     libXcursor
153     libXdamage
154     libXext
155     libXfixes
156     libXi
157     libXtst
158     libxkbfile
159     xkeyboard_config
160     libxkbcommon
161     libXrender
162     libxcb
163     libXrandr
164     libXinerama
165     libXau
166   ];
168   postPatch = ''
169     patchShebangs src/backends/native/gen-default-modes.py
170   '';
172   postInstall = ''
173     ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
174   '';
176   postFixup = ''
177     # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
178     # TODO: Move this into a directory devhelp can find.
179     moveToOutput "share/mutter-14/doc" "$devdoc"
180   '';
182   # Install udev files into our own tree.
183   PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
185   separateDebugInfo = true;
187   passthru = {
188     libdir = "${finalAttrs.finalPackage}/lib/mutter-14";
190     tests = {
191       libdirExists = runCommand "mutter-libdir-exists" { } ''
192         if [[ ! -d ${finalAttrs.finalPackage.libdir} ]]; then
193           echo "passthru.libdir should contain a directory, “${finalAttrs.finalPackage.libdir}” is not one."
194           exit 1
195         fi
196         touch $out
197       '';
198     };
199   };
201   meta = with lib; {
202     description = "Window manager for GNOME";
203     mainProgram = "mutter";
204     homepage = "https://gitlab.gnome.org/GNOME/mutter";
205     license = licenses.gpl2Plus;
206     maintainers = teams.pantheon.members;
207     platforms = platforms.linux;
208   };