-
Notifications
You must be signed in to change notification settings - Fork 322
/
Copy pathsolidity-package.nix
51 lines (48 loc) · 1.24 KB
/
solidity-package.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
{ pkgs }: let
remappings = xs:
builtins.foldl' pkgs.lib.mergeAttrs {}
(builtins.map
(x: {
"${x.name}/" = "${x}/dapp/${x.name}/src/";
"${x.name}" = "${x}/dapp/${x.name}/src/index.sol";
} // x.remappings)
xs);
libPaths = xs:
builtins.foldl' pkgs.lib.mergeAttrs {}
(builtins.map
(x: {
"${x.name}" = "${x}/dapp/${x.name}";
} // x.libPaths)
xs);
in
pkgs.lib.makeOverridable (
{ doCheck ? true
, extract ? true
, deps ? []
, solc ? pkgs.solc
, hevm ? pkgs.hevm
, solcFlags ? ""
, flatten ? false
, ...
} @ attrs:
pkgs.stdenv.mkDerivation (rec {
inherit doCheck extract;
buildInputs = [ solc pkgs.jq ]
++ pkgs.lib.optional (flatten || doCheck) hevm;
passthru = {
remappings = remappings deps;
libPaths = libPaths deps;
};
REMAPPINGS =
pkgs.lib.mapAttrsToList
(k: v: k + "=" + v)
passthru.remappings;
LIBSCRIPT =
pkgs.lib.mapAttrsToList
(k: v: ''
ln -s ${v} lib/${k}
'')
passthru.libPaths;
builder = ./solidity-package.sh;
} // attrs)
)