about summary refs log tree commit diff
path: root/pkgs/development/libraries/libkrun/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/libkrun/default.nix')
-rw-r--r--pkgs/development/libraries/libkrun/default.nix22
1 files changed, 19 insertions, 3 deletions
diff --git a/pkgs/development/libraries/libkrun/default.nix b/pkgs/development/libraries/libkrun/default.nix
index 21be0c8437ae..779f6790c558 100644
--- a/pkgs/development/libraries/libkrun/default.nix
+++ b/pkgs/development/libraries/libkrun/default.nix
@@ -1,11 +1,15 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchurl
 , rustPlatform
 , pkg-config
+, dtc
 , glibc
 , openssl
+, libiconv
 , libkrunfw
+, Hypervisor
 , sevVariant ? false
 }:
 
@@ -13,11 +17,14 @@ stdenv.mkDerivation rec {
   pname = "libkrun";
   version = "1.3.0";
 
-  src = fetchFromGitHub {
+  src = if stdenv.isLinux then fetchFromGitHub {
     owner = "containers";
     repo = pname;
     rev = "v${version}";
     hash = "sha256-qVyEqiqaQ8wfZhL5u+Bsaa1yXlgHUitSj5bo7FJ5Y8c=";
+  } else fetchurl {
+    url = "https://github.com/containers/libkrun/releases/download/v${version}/v${version}-with_macos_prebuilts.tar.gz";
+    hash = "sha256-RBqeGUhB6Sdt+JujyQBW/76mZwnT0LNs9AMYr8+OCVU=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
@@ -25,21 +32,30 @@ stdenv.mkDerivation rec {
     hash = "sha256-jxSzhj1iU8qY+sZEVCYTaUqpaA4egjJi9qxrapASQF0=";
   };
 
-  nativeBuildInputs = with rustPlatform;[
+  nativeBuildInputs = with rustPlatform; [
     cargoSetupHook
     rust.cargo
     rust.rustc
   ] ++ lib.optional sevVariant pkg-config;
 
   buildInputs = [
+    (libkrunfw.override { inherit sevVariant; })
+  ] ++ lib.optionals stdenv.isLinux [
     glibc
     glibc.static
-    (libkrunfw.override { inherit sevVariant; })
+  ] ++ lib.optionals stdenv.isDarwin [
+    libiconv
+    Hypervisor
+    dtc
   ] ++ lib.optional sevVariant openssl;
 
   makeFlags = [ "PREFIX=${placeholder "out"}" ]
     ++ lib.optional sevVariant "SEV=1";
 
+  postFixup = lib.optionalString stdenv.isDarwin ''
+    install_name_tool -id $out/lib/libkrun.dylib $out/lib/libkrun.${version}.dylib
+  '';
+
   meta = with lib; {
     description = "A dynamic library providing Virtualization-based process isolation capabilities";
     homepage = "https://github.com/containers/libkrun";