1{
2 lib,
3 stdenv,
4 fetchurl,
5 pkg-config,
6 libGLU,
7 libGL,
8 libX11,
9 libXext,
10 libXfixes,
11 libXdamage,
12 libXcomposite,
13 libXi,
14 libxcb,
15 cogl,
16 pango,
17 atk,
18 json-glib,
19 gobject-introspection,
20 gtk3,
21 gnome,
22 libinput,
23 libgudev,
24 libxkbcommon,
25}:
26
27let
28 pname = "clutter";
29 version = "1.26.4";
30in
31stdenv.mkDerivation rec {
32 name = "${pname}-${version}";
33
34 src = fetchurl {
35 url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
36 sha256 = "1rn4cd1an6a9dfda884aqpcwcgq8dgydpqvb19nmagw4b70zlj4b";
37 };
38
39 outputs = [
40 "out"
41 "dev"
42 ];
43
44 buildInputs = [ gtk3 ];
45 nativeBuildInputs = [
46 pkg-config
47 gobject-introspection
48 ];
49 propagatedBuildInputs = [
50 cogl
51 pango
52 atk
53 json-glib
54 gobject-introspection
55 ]
56 ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
57 libX11
58 libGL
59 libGLU
60 libXext
61 libXfixes
62 libXdamage
63 libXcomposite
64 libXi
65 libxcb
66 libinput
67 libgudev
68 libxkbcommon
69 ];
70
71 configureFlags = [
72 "--enable-introspection" # needed by muffin AFAIK
73 ]
74 ++ lib.optionals stdenv.hostPlatform.isDarwin [
75 "--without-x"
76 "--enable-x11-backend=no"
77 "--enable-quartz-backend=yes"
78 ];
79
80 env = lib.optionalAttrs stdenv.cc.isClang {
81 NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
82 };
83
84 #doCheck = true; # no tests possible without a display
85
86 passthru = {
87 updateScript = gnome.updateScript {
88 packageName = pname;
89 versionPolicy = "odd-unstable";
90 };
91 };
92
93 meta = {
94 description = "Library for creating fast, dynamic graphical user interfaces";
95
96 longDescription = ''
97 Clutter is free software library for creating fast, compelling,
98 portable, and dynamic graphical user interfaces. It is a core part
99 of MeeGo, and is supported by the open source community. Its
100 development is sponsored by Intel.
101
102 Clutter uses OpenGL for rendering (and optionally OpenGL|ES for use
103 on mobile and embedded platforms), but wraps an easy to use,
104 efficient, flexible API around GL's complexity.
105
106 Clutter enforces no particular user interface style, but provides a
107 rich, generic foundation for higher-level toolkits tailored to
108 specific needs.
109 '';
110
111 license = lib.licenses.lgpl2Plus;
112 homepage = "http://www.clutter-project.org/";
113
114 maintainers = [ ];
115 platforms = lib.platforms.unix;
116 };
117}