121 lines
2.1 KiB
Nix
121 lines
2.1 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
makeWrapper,
|
|
haskellPackages,
|
|
fetchFromGitHub,
|
|
# dependencies
|
|
slither-analyzer,
|
|
}:
|
|
|
|
haskellPackages.mkDerivation rec {
|
|
pname = "echidna";
|
|
version = "2.2.6";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "crytic";
|
|
repo = "echidna";
|
|
tag = "v${version}";
|
|
sha256 = "sha256-5nzis7MXOqs0bhx2jrEexjZYZI2qY6D0D7AWO+SPs+A=";
|
|
};
|
|
|
|
isExecutable = true;
|
|
|
|
buildTools = with haskellPackages; [
|
|
hpack
|
|
];
|
|
|
|
executableHaskellDepends = with haskellPackages; [
|
|
# base dependencies
|
|
aeson
|
|
base
|
|
containers
|
|
directory
|
|
hevm
|
|
MonadRandom
|
|
mtl
|
|
text
|
|
# library dependencies
|
|
ansi-terminal
|
|
async
|
|
base16-bytestring
|
|
binary
|
|
brick
|
|
bytestring
|
|
data-bword
|
|
data-dword
|
|
deepseq
|
|
exceptions
|
|
extra
|
|
filepath
|
|
hashable
|
|
html-conduit
|
|
html-entities
|
|
http-conduit
|
|
ListLike
|
|
optics
|
|
optics-core
|
|
process
|
|
random
|
|
rosezipper
|
|
semver
|
|
signal
|
|
split
|
|
strip-ansi-escape
|
|
time
|
|
unliftio
|
|
utf8-string
|
|
vector
|
|
vty
|
|
vty-crossplatform
|
|
wai-extra
|
|
warp
|
|
word-wrap
|
|
xml-conduit
|
|
yaml
|
|
# executable dependencies
|
|
code-page
|
|
filepath
|
|
hashable
|
|
optparse-applicative
|
|
time
|
|
with-utf8
|
|
];
|
|
|
|
executableToolDepends = [
|
|
makeWrapper
|
|
];
|
|
|
|
preConfigure = ''
|
|
hpack
|
|
'';
|
|
|
|
postInstall =
|
|
with haskellPackages;
|
|
# https://github.com/NixOS/nixpkgs/pull/304352
|
|
lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
|
|
remove-references-to -t ${warp.out} "$out/bin/echidna"
|
|
remove-references-to -t ${wreq.out} "$out/bin/echidna"
|
|
''
|
|
# make slither-analyzer a runtime dependency
|
|
+ ''
|
|
wrapProgram $out/bin/echidna \
|
|
--prefix PATH : ${lib.makeBinPath [ slither-analyzer ]}
|
|
'';
|
|
|
|
doHaddock = false;
|
|
|
|
# tests depend on a specific version of solc
|
|
doCheck = false;
|
|
|
|
homepage = "https://github.com/crytic/echidna";
|
|
description = "Ethereum smart contract fuzzer";
|
|
license = lib.licenses.agpl3Plus;
|
|
maintainers = with lib.maintainers; [
|
|
arturcygan
|
|
hellwolf
|
|
];
|
|
platforms = lib.platforms.unix;
|
|
mainProgram = "echidna";
|
|
}
|