27 version = "0.14.0-unstable-2024-11-06";
28 libVersion = "0.0.15";
30 src = fetchFromGitHub {
33 rev = "8f9b010b0261dbc11e2dda5e718b0e9507109232";
34 hash = "sha256-CqRv5HgGcCHu1N283NzlkRfFqJlkLUJAz3aMiSXR+0s=";
39 inherit pname version src;
61 ++ lib.optionals xenSupport [ xen ]
62 ++ lib.optionals (!legacyKVM) [ libkvmi ]
63 ++ lib.optionals withVMIFS [ fuse ];
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"
78 updateScript = unstableGitUpdater { tagPrefix = "v"; };
83 description = "C library for virtual machine introspection";
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.
89 homepage = "https://libvmi.com/";
90 license = with lib.licenses; [
94 platforms = [ "x86_64-linux" ];
95 maintainers = with lib.maintainers; [ sigmasquadron ];