{ lib, stdenv, fetchFromGitLab, meson, ninja, pkg-config, gobject-introspection, gtk-doc, docbook-xsl-nons, docbook_xml_dtd_43, help2man, glib, python3, mesonEmulatorHook, libgudev, bash-completion, libmbim, libqrtr-glib, buildPackages, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages, withMan ? stdenv.buildPlatform.canExecute stdenv.hostPlatform, }: stdenv.mkDerivation rec { pname = "libqmi"; version = "1.34.0"; outputs = [ "out" "dev" ] ++ lib.optional withIntrospection "devdoc"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "mobile-broadband"; repo = "libqmi"; rev = version; hash = "sha256-l9ev9ZOWicVNZ/Wj//KNd3NHcefIrLVriqJhEpwWvtQ="; }; nativeBuildInputs = [ meson ninja pkg-config python3 ] ++ lib.optionals withMan [ help2man ] ++ lib.optionals withIntrospection [ gobject-introspection gtk-doc docbook-xsl-nons docbook_xml_dtd_43 ] ++ lib.optionals (withIntrospection && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ]; buildInputs = [ bash-completion libmbim ] ++ lib.optionals withIntrospection [ libgudev ]; propagatedBuildInputs = [ glib ] ++ lib.optionals withIntrospection [ libqrtr-glib ]; mesonFlags = [ "-Dudevdir=${placeholder "out"}/lib/udev" (lib.mesonBool "gtk_doc" withIntrospection) (lib.mesonBool "introspection" withIntrospection) (lib.mesonBool "man" withMan) (lib.mesonBool "qrtr" withIntrospection) (lib.mesonBool "udev" withIntrospection) ]; doCheck = true; postPatch = '' patchShebangs \ build-aux/qmi-codegen/qmi-codegen ''; meta = with lib; { homepage = "https://www.freedesktop.org/wiki/Software/libqmi/"; description = "Modem protocol helper library"; maintainers = teams.freedesktop.members; platforms = platforms.linux; license = with licenses; [ # Library lgpl2Plus # Tools gpl2Plus ]; changelog = "https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/blob/${version}/NEWS"; }; }