1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
{ fetchurl
, fetchpatch
, substituteAll
, stdenv
, pkgconfig
, gnome3
, gettext
, gobject-introspection
, upower
, cairo
, pango
, cogl
, json-glib
, libstartup_notification
, zenity
, libcanberra-gtk3
, ninja
, xkeyboard_config
, libxkbfile
, libxkbcommon
, libXtst
, libinput
, gsettings-desktop-schemas
, glib
, gtk3
, gnome-desktop
, geocode-glib
, pipewire
, libgudev
, libwacom
, xwayland
, meson
, gnome-settings-daemon
, xorgserver
, python3
, wrapGAppsHook
, sysprof
, desktop-file-utils
, libcap_ng
, egl-wayland
, graphene
, wayland-protocols
}:
stdenv.mkDerivation rec {
pname = "mutter";
version = "3.36.1";
outputs = [ "out" "dev" "man" ];
src = fetchurl {
url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "09fqs9805d07c60a2ibskqffsb5wn72l8grwzb9fic5sl574b0im";
};
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"
];
propagatedBuildInputs = [
# required for pkgconfig to detect mutter-clutter
json-glib
libXtst
libcap_ng
graphene
];
nativeBuildInputs = [
desktop-file-utils
gettext
meson
ninja
pkgconfig
python3
wrapGAppsHook
xorgserver # for cvt command
];
buildInputs = [
cairo
cogl
egl-wayland
geocode-glib
glib
gnome-desktop
gnome-settings-daemon
gobject-introspection
gsettings-desktop-schemas
gtk3
libcanberra-gtk3
libgudev
libinput
libstartup_notification
libwacom
libxkbcommon
libxkbfile
pango
pipewire
sysprof
upower
xkeyboard_config
xwayland
zenity
zenity
wayland-protocols
];
patches = [
# Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
# from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
./drop-inheritable.patch
(substituteAll {
src = ./fix-paths.patch;
inherit zenity;
})
];
postPatch = ''
patchShebangs src/backends/native/gen-default-modes.py
'';
postInstall = ''
${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
'';
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
attrPath = "gnome3.${pname}";
};
};
meta = with stdenv.lib; {
description = "A window manager for GNOME";
homepage = "https://gitlab.gnome.org/GNOME/mutter";
license = licenses.gpl2;
maintainers = gnome3.maintainers;
platforms = platforms.linux;
};
}
|