{ lib, stdenv , fetchurl , ninja , meson , mesonEmulatorHook , pkg-config , vala , gobject-introspection , buildPackages , withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages , gtk-doc , docbook-xsl-nons , docbook_xml_dtd_43 , glib , libgudev , libevdev , gnome }: stdenv.mkDerivation rec { pname = "libmanette"; version = "0.2.9"; outputs = [ "out" "dev" ] ++ lib.optional withIntrospection "devdoc"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; hash = "sha256-KTZr5UUvYKdMZfxk/+LXTt3U5uaCTCzvpWekO9kraI8="; }; nativeBuildInputs = [ meson ninja pkg-config glib ] ++ lib.optionals withIntrospection [ vala gobject-introspection gtk-doc docbook-xsl-nons docbook_xml_dtd_43 ] ++ lib.optionals (withIntrospection && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ]; buildInputs = [ glib libevdev ] ++ lib.optionals withIntrospection [ libgudev ]; mesonFlags = [ (lib.mesonBool "doc" withIntrospection) (lib.mesonEnable "gudev" withIntrospection) (lib.mesonBool "introspection" withIntrospection) (lib.mesonBool "vapi" withIntrospection) ]; doCheck = true; passthru = { updateScript = gnome.updateScript { packageName = pname; versionPolicy = "odd-unstable"; }; }; meta = with lib; { description = "Simple GObject game controller library"; mainProgram = "manette-test"; homepage = "https://gnome.pages.gitlab.gnome.org/libmanette/"; license = licenses.lgpl21Plus; maintainers = teams.gnome.members; platforms = platforms.unix; }; }