summary refs log tree commit diff
path: root/pkgs/tools/system/vboot_reference/default.nix
blob: e1c4734bbdaf1c0dc3130621f6d6d1e4d569ad4a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{ stdenv, fetchgit, pkgconfig, libuuid, openssl }:

stdenv.mkDerivation rec {
  version = "20130507";
  checkout = "25/50225/2";

  name = "vboot_reference-${version}";

  src = fetchgit {
    url = "http://git.chromium.org/git/chromiumos/platform/vboot_reference.git";
    rev = "refs/changes/${checkout}";
    sha256 = "00qhwhh5ygrcfm9is8hrk1spqdvfs6aa744h10jbr03zics5bvac";
  };

  buildInputs = [ pkgconfig openssl ] ++
                (if libuuid == null
                 then []
                 else [ (stdenv.lib.overrideDerivation libuuid
                          (args: { configureFlags = args.configureFlags + " --enable-static"; })) ]);

  arch = if stdenv.system == "x86_64-linux" then "x86_64"
    else if stdenv.system == "i686-linux" then "x86"
    else throw "vboot_reference for: ${stdenv.system} not supported!";

  buildPhase = ''
    make ARCH=${arch} `pwd`/build/cgpt/cgpt
    make ARCH=${arch} `pwd`/build/utility/vbutil_kernel
    make ARCH=${arch} `pwd`/build/utility/vbutil_key
    make ARCH=${arch} `pwd`/build/utility/vbutil_keyblock
    make ARCH=${arch} `pwd`/build/utility/vbutil_firmware
  '';

  installPhase = ''
    ensureDir $out/bin
    cp build/cgpt/cgpt $out/bin
    cp build/utility/vbutil_kernel $out/bin
    cp build/utility/vbutil_key $out/bin
    cp build/utility/vbutil_keyblock $out/bin
    cp build/utility/vbutil_firmware $out/bin
  '';

  meta = {
    description = "Chrome OS partitioning and kernel signing tools";
    license = stdenv.lib.licenses.bsd3;
    platforms = stdenv.lib.platforms.linux;
  };
}