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