1{ stdenv
2, lib
3, meson
4, ninja
5, pkg-config
6, fetchFromGitLab
7, fetchpatch
8, python3
9, umockdev
10, gobject-introspection
11, dbus
12, asciidoc
13, libxml2
14, libxslt
15, docbook_xml_dtd_45
16, docbook_xsl
17, glib
18, systemd
19, polkit
20}:
21
22stdenv.mkDerivation rec {
23 pname = "bolt";
24 version = "0.9.1";
25
26 src = fetchFromGitLab {
27 domain = "gitlab.freedesktop.org";
28 owner = "bolt";
29 repo = "bolt";
30 rev = version;
31 sha256 = "1phgp8fs0dlj74kbkqlvfniwc32daz47b3pvsxlfxqzyrp77xrfm";
32 };
33
34 patches = [
35 # meson install tries to create /var/lib/boltd
36 ./0001-skip-mkdir.patch
37
38 # https://github.com/NixOS/nixpkgs/issues/104429
39 # Upstream issue: https://gitlab.freedesktop.org/bolt/bolt/-/issues/167
40 (fetchpatch {
41 name = "disable-atime-tests.diff";
42 url = "https://gitlab.freedesktop.org/roberth/bolt/-/commit/1f672a7de2ebc4dd51590bb90f3b873a8ac0f4e6.diff";
43 sha256 = "134f5s6kjqs6612pwq5pm1miy58crn1kxbyyqhzjnzmf9m57fnc8";
44 })
45
46 # Fix tests with newer umockdev
47 (fetchpatch {
48 url = "https://gitlab.freedesktop.org/bolt/bolt/-/commit/130e09d1c7ff02c09e4ad1c9c36e9940b68e58d8.patch";
49 sha256 = "HycuM7z4VvtBuZZLU68tBxGT1YjaqJRS4sKyoTGHZEk=";
50 })
51 ];
52
53 nativeBuildInputs = [
54 asciidoc
55 docbook_xml_dtd_45
56 docbook_xsl
57 libxml2
58 libxslt
59 meson
60 ninja
61 pkg-config
62 ] ++ lib.optional (!doCheck) python3;
63
64 buildInputs = [
65 glib
66 polkit
67 systemd
68 ];
69
70 doCheck = true;
71
72 preCheck = ''
73 export LD_LIBRARY_PATH=${umockdev.out}/lib/
74 '';
75
76 checkInputs = [
77 dbus
78 gobject-introspection
79 umockdev
80 (python3.withPackages
81 (p: [ p.pygobject3 p.dbus-python p.python-dbusmock ]))
82 ];
83
84 postPatch = ''
85 patchShebangs scripts tests
86 '';
87
88 mesonFlags = [
89 "-Dlocalstatedir=/var"
90 ];
91
92 PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "${placeholder "out"}/lib/systemd/system";
93 PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
94
95 meta = with lib; {
96 description = "Thunderbolt 3 device management daemon";
97 homepage = "https://gitlab.freedesktop.org/bolt/bolt";
98 license = licenses.lgpl21Plus;
99 maintainers = with maintainers; [ callahad ];
100 platforms = platforms.linux;
101 };
102}