nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildDotnetModule,
4 fetchzip,
5 dos2unix,
6 msbuild,
7 gtk2,
8 mono,
9 dotnetCorePackages,
10}:
11
12buildDotnetModule rec {
13 pname = "networkminer";
14 version = "3.0";
15
16 src =
17 let
18 version' = lib.replaceString "." "-" version;
19 in
20 fetchzip {
21 # Upstream does not provide versioned releases, a mirror has been uploaded
22 # to archive.org
23 # Non-versioned download link can be found on https://www.netresec.com/?page=NetworkMinerSourceCode
24 url = "https://archive.org/download/network-miner-${version'}-source/NetworkMiner_${version'}_source.zip";
25 hash = "sha256-BdjSsFSpt3U7IUurY1dmprzq8wNdPNZyXGKeIGETr7Q=";
26 };
27
28 dotnet-sdk = dotnetCorePackages.sdk_8_0;
29
30 nativeBuildInputs = [
31 dos2unix
32 msbuild
33 ];
34
35 postPatch = ''
36 # Not all files have UTF-8 BOM applied consistently
37 find . -type f -exec dos2unix -m {} \+
38
39 # Embedded base64-encoded app icon in resx fails to parse. Delete it
40 sed -zi 's|<data name="$this.Icon".*</data>||g' NetworkMiner/NamedPipeForm.resx
41 sed -zi 's|<data name="$this.Icon".*</data>||g' NetworkMiner/UpdateCheck.resx
42 '';
43
44 nugetDeps = ./deps.json;
45
46 buildPhase = ''
47 runHook preBuild
48
49 msbuild /p:Configuration=Release NetworkMiner.sln
50
51 runHook postBuild
52 '';
53
54 installPhase = ''
55 runHook preInstall
56
57 mkdir -p $out/bin $out/share
58 cp -r NetworkMiner/bin/Release $out/share/NetworkMiner
59 makeWrapper ${lib.getExe mono} $out/bin/NetworkMiner \
60 --add-flags "$out/share/NetworkMiner/NetworkMiner.exe" \
61 --add-flags "--noupdatecheck" \
62 --prefix LD_LIBRARY_PATH : ${
63 lib.makeLibraryPath [
64 gtk2
65 ]
66 }
67
68 install -D NetworkMiner/NetworkMiner.desktop $out/share/applications/NetworkMiner.desktop
69 substituteInPlace $out/share/applications/NetworkMiner.desktop \
70 --replace-fail "Icon=./Images/NetworkMiner_logo_313x313.png" "Icon=NetworkMiner"
71 install -D NetworkMiner/networkminericon-96x96.png $out/share/pixmaps/NetworkMiner.png
72
73 runHook postInstall
74 '';
75
76 meta = {
77 description = "Open Source Network Forensic Analysis Tool (NFAT)";
78 homepage = "https://www.netresec.com/?page=NetworkMiner";
79 license = lib.licenses.gpl2Only;
80 maintainers = with lib.maintainers; [ emilytrau ];
81 platforms = lib.platforms.linux;
82 mainProgram = "NetworkMiner";
83 };
84}