1{ lib
2, stdenv
3, fetchurl
4, bash-completion
5, pkg-config
6, perl
7, libxml2
8, fuse
9, fuse3
10, gnutls
11}:
12
13stdenv.mkDerivation rec {
14 pname = "libnbd";
15 version = "1.16.0";
16
17 src = fetchurl {
18 url = "https://download.libguestfs.org/libnbd/${lib.versions.majorMinor version}-stable/${pname}-${version}.tar.gz";
19 hash = "sha256-Tkd46NxLvGe+RpCSFdCsYrFWc3PAtXI1aCq8177jla0=";
20 };
21
22 nativeBuildInputs = [
23 bash-completion
24 pkg-config
25 perl
26 ];
27
28 buildInputs = [
29 fuse
30 fuse3
31 gnutls
32 libxml2
33 ];
34
35 installFlags = [ "bashcompdir=$(out)/share/bash-completion/completions" ];
36
37 meta = with lib; {
38 homepage = "https://gitlab.com/nbdkit/libnbd";
39 description = "Network Block Device client library in userspace";
40 longDescription = ''
41 NBD — Network Block Device — is a protocol for accessing Block Devices
42 (hard disks and disk-like things) over a Network. This is the NBD client
43 library in userspace, a simple library for writing NBD clients.
44
45 The key features are:
46 - Synchronous API for ease of use.
47 - Asynchronous API for writing non-blocking, multithreaded clients. You
48 can mix both APIs freely.
49 - High performance.
50 - Minimal dependencies for the basic library.
51 - Well-documented, stable API.
52 - Bindings in several programming languages.
53 - Shell (nbdsh) for command line and scripting.
54 '';
55 license = with licenses; lgpl21Plus;
56 maintainers = with maintainers; [ AndersonTorres humancalico ];
57 platforms = with platforms; linux;
58 };
59}
60# TODO: package the 1.6-stable version too
61# TODO: git version needs ocaml
62# TODO: bindings for go, ocaml and python
63