1{ lib, stdenv
2, fetchurl
3, ninja
4, meson
5, mesonEmulatorHook
6, pkg-config
7, vala
8, gobject-introspection
9, buildPackages
10, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages
11, gtk-doc
12, docbook-xsl-nons
13, docbook_xml_dtd_43
14, glib
15, libgudev
16, libevdev
17, gnome
18}:
19
20stdenv.mkDerivation rec {
21 pname = "libmanette";
22 version = "0.2.6";
23
24 outputs = [ "out" "dev" ] ++ lib.optional withIntrospection "devdoc";
25
26 src = fetchurl {
27 url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
28 sha256 = "1b3bcdkk5xd5asq797cch9id8692grsjxrc1ss87vv11m1ck4rb3";
29 };
30
31 nativeBuildInputs = [
32 meson
33 ninja
34 pkg-config
35 glib
36 ] ++ lib.optionals withIntrospection [
37 vala
38 gobject-introspection
39 gtk-doc
40 docbook-xsl-nons
41 docbook_xml_dtd_43
42 ] ++ lib.optionals (withIntrospection && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
43 mesonEmulatorHook
44 ];
45
46 buildInputs = [
47 glib
48 libevdev
49 ] ++ lib.optionals withIntrospection [
50 libgudev
51 ];
52
53 mesonFlags = [
54 (lib.mesonBool "doc" withIntrospection)
55 (lib.mesonEnable "gudev" withIntrospection)
56 (lib.mesonBool "introspection" withIntrospection)
57 (lib.mesonBool "vapi" withIntrospection)
58 ];
59
60 doCheck = true;
61
62 passthru = {
63 updateScript = gnome.updateScript {
64 packageName = pname;
65 versionPolicy = "odd-unstable";
66 };
67 };
68
69 meta = with lib; {
70 description = "A simple GObject game controller library";
71 homepage = "https://gnome.pages.gitlab.gnome.org/libmanette/";
72 license = licenses.lgpl21Plus;
73 maintainers = teams.gnome.members;
74 platforms = platforms.unix;
75 };
76}