1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, stdenv
5, zlib
6, xz
7, ncompress
8, gzip
9, bzip2
10, gnutar
11, p7zip
12, cabextract
13, cramfsprogs
14, cramfsswap
15, sasquatch
16, squashfsTools
17, matplotlib
18, nose
19, pycrypto
20, pyqtgraph
21, visualizationSupport ? false }:
22
23buildPythonPackage rec {
24 pname = "binwalk";
25 version = "2.3.1";
26
27 src = fetchFromGitHub {
28 owner = "ReFirmLabs";
29 repo = "binwalk";
30 rev = "v${version}";
31 sha256 = "108mj4jjffdmaz6wjvglbv44j7fkhspaxz1rj2bi1fcnwsri5wsm";
32 };
33
34 propagatedBuildInputs = [ zlib xz ncompress gzip bzip2 gnutar p7zip cabextract squashfsTools xz pycrypto ]
35 ++ lib.optionals visualizationSupport [ matplotlib pyqtgraph ]
36 ++ lib.optionals (!stdenv.isDarwin) [ cramfsprogs cramfsswap sasquatch ];
37
38 # setup.py only installs version.py during install, not test
39 postPatch = ''
40 echo '__version__ = "${version}"' > src/binwalk/core/version.py
41 '';
42
43 # binwalk wants to access ~/.config/binwalk/magic
44 preCheck = ''
45 HOME=$(mktemp -d)
46 '';
47
48 checkInputs = [ nose ];
49
50 pythonImportsCheck = [ "binwalk" ];
51
52 meta = with lib; {
53 homepage = "https://github.com/ReFirmLabs/binwalk";
54 description = "A tool for searching a given binary image for embedded files";
55 maintainers = [ maintainers.koral ];
56 license = licenses.mit;
57 };
58}