1{ lib
2, stdenv
3, fetchFromGitHub
4, autoreconfHook
5, pkg-config
6, gtk-doc
7, docbook_xml_dtd_43
8, python3
9, gobject-introspection
10, glib
11, udev
12, kmod
13, parted
14, cryptsetup
15, lvm2
16, util-linux
17, libbytesize
18, libndctl
19, nss
20, volume_key
21, libxslt
22, docbook_xsl
23, gptfdisk
24, libyaml
25, autoconf-archive
26, thin-provisioning-tools
27, makeBinaryWrapper
28, e2fsprogs
29, libnvme
30, keyutils
31}:
32stdenv.mkDerivation (finalAttrs: {
33 pname = "libblockdev";
34 version = "3.1.1";
35
36 src = fetchFromGitHub {
37 owner = "storaged-project";
38 repo = "libblockdev";
39 rev = "${finalAttrs.version}-1";
40 hash = "sha256-WCMedMkaMMhZbB3iJu3c+CTT3AvOjzOSYP45J+NQEDQ=";
41 };
42
43 outputs = [ "out" "dev" "devdoc" ];
44
45 postPatch = ''
46 patchShebangs scripts
47 '';
48
49 nativeBuildInputs = [
50 autoconf-archive
51 autoreconfHook
52 docbook_xsl
53 docbook_xml_dtd_43
54 gobject-introspection
55 gtk-doc
56 libxslt
57 makeBinaryWrapper
58 pkg-config
59 python3
60 ];
61
62 buildInputs = [
63 cryptsetup
64 e2fsprogs
65 glib
66 gptfdisk
67 keyutils
68 kmod
69 libbytesize
70 libndctl
71 libnvme
72 libyaml
73 lvm2
74 nss
75 parted
76 udev
77 util-linux
78 volume_key
79 ];
80
81 postInstall = ''
82 wrapProgram $out/bin/lvm-cache-stats --prefix PATH : \
83 ${lib.makeBinPath [ thin-provisioning-tools ]}
84 '';
85
86 meta = {
87 changelog = "https://github.com/storaged-project/libblockdev/raw/${finalAttrs.src.rev}/NEWS.rst";
88 description = "A library for manipulating block devices";
89 homepage = "http://storaged.org/libblockdev/";
90 license = with lib.licenses; [ lgpl2Plus gpl2Plus ]; # lgpl2Plus for the library, gpl2Plus for the utils
91 maintainers = with lib.maintainers; [ johnazoidberg ];
92 platforms = lib.platforms.linux;
93 };
94})