-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdefault.nix
71 lines (70 loc) · 1.7 KB
/
default.nix
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{
pkgs ? import <nixpkgs> {},
deps ? import ./dependencies.nix {inherit pkgs;},
}:
with pkgs; let
fs = lib.fileset;
src = ./.;
drvSrc = fs.toSource {
root = src;
fileset = fs.difference src (
fs.unions [
(fs.maybeMissing ./result)
./sandbox_tests
]
);
};
cargoLockToPackageSet = lockfile:
builtins.listToAttrs (map (q: {
name = "${q.name}-${q.version}";
value = q;
})
(lib.trivial.importTOML lockfile).package);
packageSetToCargoLock = packages:
''
version = 3
''
+ (lib.strings.concatMapStrings (
package:
''
[[package]]
''
+ (lib.strings.concatLines (
lib.attrsets.mapAttrsToList (k: v: "${k} = ${builtins.toJSON v}") package
))
) (builtins.attrValues packages));
packageSet =
(cargoLockToPackageSet "${src}/Cargo.lock")
// (cargoLockToPackageSet "${rustPlatform.rustcSrc}/Cargo.lock");
in
stdenv.mkDerivation rec {
name = "sunwalker-box";
src = drvSrc;
cargoDeps = rustPlatform.importCargoLock {
lockFileContents = packageSetToCargoLock packageSet;
allowBuiltinFetchGit = true;
};
patchPhase = ''
sed -i 's: +nightly: --offline:' Makefile
'';
nativeBuildInputs = [
python3
deps.rust-src
cargo
rustPlatform.cargoSetupHook
rubyPackages.seccomp-tools
];
RUSTC_BOOTSTRAP = 1;
RUSTFLAGSADD = [
"-L"
"${musl}/lib"
"-L"
"${deps.libunwind}/lib"
"-L"
"${pkgsMusl.gcc.cc}/lib/gcc/${pkgsMusl.stdenv.targetPlatform.config}/${pkgsMusl.gcc.cc.version}"
];
installPhase = ''
mkdir -p $out/bin
cp sunwalker_box $out/bin/
'';
}