base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / li / libvmi / package.nix
bloba1f314497b7b1665488d7c10ef0cdf2d50016094
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   unstableGitUpdater,
6   autoreconfHook,
7   autoconf-archive,
8   bison,
9   flex,
10   glib,
11   pkg-config,
12   json_c,
13   libvirt,
15   withVMIFS ? true,
16   fuse,
18   legacyKVM ? false,
19   libkvmi,
21   xenSupport ? true,
22   xen,
25 let
26   pname = "libvmi";
27   version = "0.14.0-unstable-2024-09-18";
28   libVersion = "0.0.15";
30   src = fetchFromGitHub {
31     owner = "libvmi";
32     repo = "libvmi";
33     rev = "60ddb31abee62e9bf323c62d4af6ee59b7e2436a";
34     hash = "sha256-IOMfOzp9o2M//GlwOg770aNzPG5IBdc6Omw9O1SEyD4=";
35   };
38 stdenv.mkDerivation {
39   inherit pname version src;
41   outputs = [
42     "out"
43     "lib"
44     "dev"
45   ];
47   nativeBuildInputs = [
48     autoreconfHook
49     autoconf-archive
50     bison
51     flex
52     pkg-config
53   ];
55   buildInputs =
56     [
57       glib
58       json_c
59       libvirt
60     ]
61     ++ lib.optionals xenSupport [ xen ]
62     ++ lib.optionals (!legacyKVM) [ libkvmi ]
63     ++ lib.optionals withVMIFS [ fuse ];
65   configureFlags =
66     lib.optionals (!xenSupport) [ "--disable-xen" ]
67     ++ lib.optionals legacyKVM [ "--enable-kvm-legacy" ]
68     ++ lib.optionals withVMIFS [ "--enable-vmifs" ];
70   # libvmi uses dlopen() for the xen libraries, however autoPatchelfHook doesn't work here
71   postFixup = lib.optionalString xenSupport ''
72     libvmi="$lib/lib/libvmi.so.${libVersion}"
73     oldrpath=$(patchelf --print-rpath "$libvmi")
74     patchelf --set-rpath "$oldrpath:${lib.makeLibraryPath [ xen ]}" "$libvmi"
75   '';
77   passthru = {
78     updateScript = unstableGitUpdater { tagPrefix = "v"; };
79     inherit libVersion;
80   };
82   meta = {
83     description = "C library for virtual machine introspection";
84     longDescription = ''
85       LibVMI is a C library with Python bindings that makes it easy to monitor the low-level
86       details of a running virtual machine by viewing its memory, trapping on hardware events,
87       and accessing the vCPU registers.
88     '';
89     homepage = "https://libvmi.com/";
90     license = with lib.licenses; [
91       gpl3Only
92       lgpl3Only
93     ];
94     platforms = [ "x86_64-linux" ];
95     maintainers = with lib.maintainers; [ sigmasquadron ];
96   };