From 412a17da665c76f2d0818ed10976ca459bd2fcf1 Mon Sep 17 00:00:00 2001
From: Nick Cao <nickcao@nichi.co>
Date: Sat, 13 Aug 2022 17:43:05 +0800
Subject: [PATCH] libkrun: init at 1.3.0

---
 .../development/libraries/libkrun/default.nix | 49 +++++++++++++++++++
 pkgs/top-level/all-packages.nix               |  4 ++
 2 files changed, 53 insertions(+)
 create mode 100644 pkgs/development/libraries/libkrun/default.nix

diff --git a/pkgs/development/libraries/libkrun/default.nix b/pkgs/development/libraries/libkrun/default.nix
new file mode 100644
index 000000000000..21be0c8437ae
--- /dev/null
+++ b/pkgs/development/libraries/libkrun/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, pkg-config
+, glibc
+, openssl
+, libkrunfw
+, sevVariant ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libkrun";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "containers";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-qVyEqiqaQ8wfZhL5u+Bsaa1yXlgHUitSj5bo7FJ5Y8c=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    hash = "sha256-jxSzhj1iU8qY+sZEVCYTaUqpaA4egjJi9qxrapASQF0=";
+  };
+
+  nativeBuildInputs = with rustPlatform;[
+    cargoSetupHook
+    rust.cargo
+    rust.rustc
+  ] ++ lib.optional sevVariant pkg-config;
+
+  buildInputs = [
+    glibc
+    glibc.static
+    (libkrunfw.override { inherit sevVariant; })
+  ] ++ lib.optional sevVariant openssl;
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ]
+    ++ lib.optional sevVariant "SEV=1";
+
+  meta = with lib; {
+    description = "A dynamic library providing Virtualization-based process isolation capabilities";
+    homepage = "https://github.com/containers/libkrun";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ nickcao ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 534feb374694..3827869cbc39 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -23877,6 +23877,10 @@ with pkgs;
 
   libcgroup = callPackage ../os-specific/linux/libcgroup { };
 
+  libkrun = callPackage ../development/libraries/libkrun { };
+
+  libkrun-sev = callPackage ../development/libraries/libkrun { sevVariant = true; };
+
   libkrunfw = callPackage ../development/libraries/libkrunfw { };
 
   libnl = callPackage ../os-specific/linux/libnl { };