1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 pkg-config,
6 meson,
7 ninja,
8 libnvme,
9 json_c,
10 zlib,
11 python3Packages,
12 udevCheckHook,
13}:
14
15stdenv.mkDerivation rec {
16 pname = "nvme-cli";
17 version = "2.11";
18
19 src = fetchFromGitHub {
20 owner = "linux-nvme";
21 repo = "nvme-cli";
22 rev = "v${version}";
23 hash = "sha256-LkFYkfHeBKC/0kr33DKu7oXxXrtfu1YcpuwzRRWsHpc=";
24 };
25
26 mesonFlags = [
27 "-Dversion-tag=${version}"
28 ];
29
30 nativeBuildInputs = [
31 meson
32 ninja
33 pkg-config
34 python3Packages.nose2
35 udevCheckHook
36 ];
37 buildInputs = [
38 libnvme
39 json_c
40 zlib
41 ];
42
43 doInstallCheck = true;
44
45 meta = with lib; {
46 inherit (src.meta) homepage; # https://nvmexpress.org/
47 description = "NVM-Express user space tooling for Linux";
48 longDescription = ''
49 NVM-Express is a fast, scalable host controller interface designed to
50 address the needs for not only PCI Express based solid state drives, but
51 also NVMe-oF(over fabrics).
52 This nvme program is a user space utility to provide standards compliant
53 tooling for NVM-Express drives. It was made specifically for Linux as it
54 relies on the IOCTLs defined by the mainline kernel driver.
55 '';
56 license = licenses.gpl2Plus;
57 platforms = platforms.linux;
58 maintainers = with maintainers; [
59 mic92
60 vifino
61 ];
62 mainProgram = "nvme";
63 };
64}