1{ fetchurl, lib, stdenv }:
2
3let
4 version = "1.5.0";
5 # nixpkgs-update: no auto update
6
7 suffix = {
8 x86_64-linux = "x86_64";
9 aarch64-linux = "aarch64";
10 }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
11
12 baseurl = "https://github.com/firecracker-microvm/firecracker/releases/download";
13
14 dlbin = sha256: fetchurl {
15 url = "${baseurl}/v${version}/firecracker-v${version}-${suffix}.tgz";
16 sha256 = sha256."${stdenv.hostPlatform.system}";
17 };
18
19in
20stdenv.mkDerivation {
21 pname = "firecracker";
22 inherit version;
23
24 sourceRoot = ".";
25 src = dlbin {
26 x86_64-linux = "sha256-TzNPWcLDKOv12eJ9PHckdJ7tfdlozPoXj2fbdOzHfAk=";
27 aarch64-linux = "sha256-cHNMfcoHCBw+BnWx9USny8jyvH97gXCCJW1aKvPXgCs=";
28 };
29
30 dontConfigure = true;
31
32 buildPhase = ''
33 mv release-v${version}-${suffix}/firecracker-v${version}-${suffix} firecracker
34 mv release-v${version}-${suffix}/jailer-v${version}-${suffix} jailer
35 chmod +x firecracker jailer
36 '';
37
38 doCheck = true;
39 checkPhase = ''
40 ./firecracker --version
41 ./jailer --version
42 '';
43
44 installPhase = ''
45 mkdir -p $out/bin
46 install -D firecracker $out/bin/firecracker
47 install -D jailer $out/bin/jailer
48 '';
49
50 meta = with lib; {
51 description = "Secure, fast, minimal micro-container virtualization";
52 homepage = "http://firecracker-microvm.io";
53 changelog = "https://github.com/firecracker-microvm/firecracker/releases/tag/v${version}";
54 mainProgram = "firecracker";
55 license = licenses.asl20;
56 platforms = [ "x86_64-linux" "aarch64-linux" ];
57 maintainers = with maintainers; [ thoughtpolice endocrimes ];
58 };
59}