lol
1{ lib, stdenv, fetchFromGitHub, autoreconfHook, libewf, afflib, openssl, zlib, openjdk, perl, ant }:
2
3stdenv.mkDerivation rec {
4 version = "4.11.0";
5 pname = "sleuthkit";
6
7 sleuthsrc = fetchFromGitHub {
8 owner = "sleuthkit";
9 repo = "sleuthkit";
10 rev = "${pname}-${version}";
11 sha256 = "1dh06k8grrj3wcx3h9m490p69bw41dz6cv8j5j1drpldmv67k3ki";
12 };
13
14 # Fetch libraries using a fixed output derivation
15 rdeps = stdenv.mkDerivation rec {
16
17 version = "1.0";
18 pname = "sleuthkit-deps";
19 nativeBuildInputs = [ openjdk ant ];
20
21 src = sleuthsrc;
22
23 # unpack, build, install
24 dontConfigure = true;
25
26 buildPhase = ''
27 export IVY_HOME=$NIX_BUILD_TOP/.ant
28 pushd bindings/java
29 ant retrieve-deps
30 popd
31 pushd case-uco/java
32 ant get-ivy-dependencies
33 popd
34 '';
35
36 installPhase = ''
37 export IVY_HOME=$NIX_BUILD_TOP/.ant
38 mkdir -m 755 -p $out/bindings/java
39 cp -r bindings/java/lib $out/bindings/java
40 mkdir -m 755 -p $out/case-uco/java
41 cp -r case-uco/java/lib $out/case-uco/java
42 cp -r $IVY_HOME/lib $out
43 chmod -R 755 $out/lib
44 '';
45
46 outputHashMode = "recursive";
47 outputHash = "0fq7v6zlgybg4v6k9wqjlk4gaqgjrpihbnr182vaqriihflav2s8";
48 outputHashAlgo = "sha256";
49 };
50
51 src = sleuthsrc;
52
53 postPatch = ''
54 substituteInPlace tsk/img/ewf.cpp --replace libewf_handle_read_random libewf_handle_read_buffer_at_offset
55 '';
56
57 enableParallelBuilding = true;
58
59 nativeBuildInputs = [ autoreconfHook openjdk perl ant rdeps ];
60 buildInputs = [ libewf afflib openssl zlib ];
61
62 # Hack to fix the RPATH
63 preFixup = ''
64 rm -rf */.libs
65 '';
66
67 postUnpack = ''
68 export IVY_HOME="$NIX_BUILD_TOP/.ant"
69 export JAVA_HOME="${openjdk}"
70 export ant_args="-Doffline=true -Ddefault-jar-location=$IVY_HOME/lib"
71
72 # pre-positioning these jar files allows -Doffline=true to work
73 mkdir -p source/{bindings,case-uco}/java $IVY_HOME
74 cp -r ${rdeps}/bindings/java/lib source/bindings/java
75 chmod -R 755 source/bindings/java
76 cp -r ${rdeps}/case-uco/java/lib source/case-uco/java
77 chmod -R 755 source/case-uco/java
78 cp -r ${rdeps}/lib $IVY_HOME
79 chmod -R 755 $IVY_HOME
80 '';
81
82 meta = with lib; {
83 description = "A forensic/data recovery tool";
84 homepage = "https://www.sleuthkit.org/";
85 maintainers = with maintainers; [ raskin gfrascadorio ];
86 platforms = platforms.linux;
87 license = licenses.ipl10;
88 };
89}