1{
2 lib,
3 stdenvNoCC,
4 fetchurl,
5 libarchive,
6 xar,
7 installShellFiles,
8 versionCheckHook,
9 nix-update-script,
10}:
11
12stdenvNoCC.mkDerivation (finalAttrs: {
13 pname = "container";
14 version = "0.2.0";
15
16 src = fetchurl {
17 url = "https://github.com/apple/container/releases/download/${finalAttrs.version}/container-${finalAttrs.version}-installer-signed.pkg";
18 hash = "sha256-aJEIy6IknBDvM7IOhnl/C4xnr7KJVggJJjmajqoHdsU=";
19 };
20
21 nativeBuildInputs = [
22 libarchive
23 xar
24 installShellFiles
25 ];
26
27 dontUnpack = true;
28
29 installPhase = ''
30 runHook preInstall
31
32 mkdir -p $out
33 xar -xf $src Payload
34 bsdtar --extract --file Payload --directory $out
35
36 runHook postInstall
37 '';
38
39 postInstall = lib.optionalString (stdenvNoCC.buildPlatform.canExecute stdenvNoCC.hostPlatform) ''
40 installShellCompletion --cmd ${finalAttrs.meta.mainProgram} \
41 --bash <($out/bin/${finalAttrs.meta.mainProgram} --generate-completion-script bash) \
42 --fish <($out/bin/${finalAttrs.meta.mainProgram} --generate-completion-script fish) \
43 --zsh <($out/bin/${finalAttrs.meta.mainProgram} --generate-completion-script zsh)
44 '';
45
46 nativeInstallCheckInputs = [
47 versionCheckHook
48 ];
49 versionCheckProgramArg = "--version";
50 doInstallCheck = true;
51
52 passthru = {
53 updateScript = nix-update-script { };
54 };
55
56 meta = {
57 description = "Creating and running Linux containers using lightweight virtual machines on a Mac";
58 homepage = "https://github.com/apple/container";
59 changelog = "https://github.com/apple/container/releases/tag/${finalAttrs.version}";
60 license = lib.licenses.asl20;
61 mainProgram = "container";
62 maintainers = with lib.maintainers; [
63 xiaoxiangmoe
64 ];
65 platforms = [ "aarch64-darwin" ];
66 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
67 };
68})