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