1{ lib
2, stdenv
3, fetchFromGitLab
4, fetchpatch
5, meson
6, ninja
7, pkg-config
8, glib
9, python3
10, help2man
11, systemd
12, bash-completion
13, bash
14, buildPackages
15, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages
16, withDocs ? stdenv.hostPlatform == stdenv.buildPlatform
17, gobject-introspection
18}:
19
20stdenv.mkDerivation rec {
21 pname = "libmbim";
22 version = "1.28.4";
23
24 outputs = [ "out" "dev" ]
25 ++ lib.optionals withDocs [ "man" ];
26
27 src = fetchFromGitLab {
28 domain = "gitlab.freedesktop.org";
29 owner = "mobile-broadband";
30 repo = "libmbim";
31 rev = version;
32 hash = "sha256-aaYjvJ2OMTzkUyqWCyHdmsKJ3VGqBmKQzb1DWK/1cPU=";
33 };
34
35 patches = [
36 # Intel Mutual Authentication - FCC lock. Part of 1.30, backported to
37 # openSUSE and Fedora and ChromeOS.
38 # https://src.fedoraproject.org/rpms/libmbim/blob/rawhide/f/libmbim.spec
39 (fetchpatch {
40 url = "https://cgit.freedesktop.org/libmbim/libmbim/patch/?id=910db9cb2b6fde303d3b4720890cf6dc6fc00880";
41 hash = "sha256-412sXdWb8WsSexe1scI/C57dwENgNWoREGO1GxSF4hs=";
42 })
43
44 # Intel Tools. Allows tracing various commands. Part of 1.30, backported to
45 # openSUSE, Fedora and ChromeOS.
46 # https://src.fedoraproject.org/rpms/libmbim/blob/rawhide/f/libmbim.spec
47 (fetchpatch {
48 url = "https://cgit.freedesktop.org/libmbim/libmbim/patch/?id=8a6dec6ed11931601e605c9537da9904b3be5bc0";
49 hash = "sha256-tU4zkUl5aZJE+g/qbnWprUHe/PmZvqVKB9qecSaUBhk=";
50 })
51 ];
52
53 mesonFlags = [
54 "-Dudevdir=${placeholder "out"}/lib/udev"
55 (lib.mesonBool "introspection" withIntrospection)
56 (lib.mesonBool "man" withDocs)
57 ];
58
59 strictDeps = true;
60
61 nativeBuildInputs = [
62 meson
63 ninja
64 pkg-config
65 python3
66 ] ++ lib.optionals withDocs [
67 help2man
68 ] ++ lib.optionals withIntrospection [
69 gobject-introspection
70 ];
71
72 buildInputs = [
73 glib
74 systemd
75 bash-completion
76 bash
77 ];
78
79 doCheck = true;
80
81 postPatch = ''
82 patchShebangs \
83 build-aux/mbim-codegen/mbim-codegen
84 '';
85
86 meta = with lib; {
87 homepage = "https://www.freedesktop.org/wiki/Software/libmbim/";
88 description = "Library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol";
89 changelog = "https://gitlab.freedesktop.org/mobile-broadband/libmbim/-/raw/${version}/NEWS";
90 maintainers = teams.freedesktop.members;
91 platforms = platforms.linux;
92 license = licenses.gpl2Plus;
93 };
94}