summary refs log tree commit diff
path: root/pkgs/applications/virtualization/cloud-hypervisor/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/virtualization/cloud-hypervisor/default.nix')
-rw-r--r--pkgs/applications/virtualization/cloud-hypervisor/default.nix33
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/applications/virtualization/cloud-hypervisor/default.nix b/pkgs/applications/virtualization/cloud-hypervisor/default.nix
index d7182b81310..9831aced69b 100644
--- a/pkgs/applications/virtualization/cloud-hypervisor/default.nix
+++ b/pkgs/applications/virtualization/cloud-hypervisor/default.nix
@@ -28,6 +28,39 @@ rustPlatform.buildRustPackage rec {
 
   separateDebugInfo = true;
 
+  vhost = fetchFromGitHub {
+    name = "vhost";
+    owner = "rust-vmm";
+    repo = "vhost";
+    rev = "vhost-user-backend-v0.10.1";
+    hash = "sha256-pq545s7sqE0GFFkEkAvKwFKLuRArNThmRFqEYS3nNVo=";
+  };
+
+  postUnpack = ''
+    unpackFile ${vhost}
+    chmod -R +w vhost
+  '';
+
+  cargoPatches = [
+    ./0001-build-use-local-vhost.patch
+    ./0002-virtio-devices-add-a-GPU-device.patch
+  ];
+
+  vhostPatches = [
+    vhost/0001-vhost-fix-receiving-reply-payloads.patch
+    vhost/0002-vhost_user-add-shared-memory-region-support.patch
+    vhost/0003-vhost-user-add-protocol-flag-for-shmem.patch
+  ];
+
+  postPatch = ''
+    pushd ../vhost
+    for patch in $vhostPatches; do
+        echo applying patch $patch
+        patch -p1 < $patch
+    done
+    popd
+  '';
+
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl ] ++ lib.optional stdenv.isAarch64 dtc;