lol
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 fetchpatch,
6 installShellFiles,
7 makeWrapper,
8 libpcap,
9}:
10
11stdenv.mkDerivation rec {
12 pname = "masscan";
13 version = "1.3.2";
14
15 src = fetchFromGitHub {
16 owner = "robertdavidgraham";
17 repo = "masscan";
18 rev = version;
19 sha256 = "sha256-mnGC/moQANloR5ODwRjzJzBa55OEZ9QU+9WpAHxQE/g=";
20 };
21
22 patches = [
23 # Patches the missing "--resume" functionality
24 (fetchpatch {
25 name = "resume.patch";
26 url = "https://github.com/robertdavidgraham/masscan/commit/90791550bbdfac8905917a109ed74024161f14b3.patch";
27 sha256 = "sha256-A7Fk3MBNxaad69MrUYg7fdMG77wba5iESDTIRigYslw=";
28 })
29 ];
30
31 postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
32 # Fix broken install command
33 substituteInPlace Makefile --replace "-pm755" "-pDm755"
34 '';
35
36 nativeBuildInputs = [
37 makeWrapper
38 installShellFiles
39 ];
40
41 makeFlags = [
42 "PREFIX=$(out)"
43 "GITVER=${version}"
44 "CC=${stdenv.cc.targetPrefix}cc"
45 ];
46
47 enableParallelBuilding = true;
48
49 postInstall = ''
50 installManPage doc/masscan.?
51
52 install -Dm444 -t $out/etc/masscan data/exclude.conf
53 install -Dm444 -t $out/share/doc/masscan doc/*.{html,js,md}
54 install -Dm444 -t $out/share/licenses/masscan LICENSE
55
56 wrapProgram $out/bin/masscan \
57 --prefix LD_LIBRARY_PATH : "${libpcap}/lib"
58 '';
59
60 doInstallCheck = true;
61
62 installCheckPhase = ''
63 $out/bin/masscan --selftest
64 '';
65
66 meta = {
67 description = "Fast scan of the Internet";
68 mainProgram = "masscan";
69 homepage = "https://github.com/robertdavidgraham/masscan";
70 changelog = "https://github.com/robertdavidgraham/masscan/releases/tag/${version}";
71 license = lib.licenses.agpl3Only;
72 platforms = lib.platforms.unix;
73 maintainers = with lib.maintainers; [ rnhmjoj ];
74 };
75}