1{ lib
2, asn1crypto
3, buildPythonPackage
4, defusedxml
5, dissect-cim
6, dissect-clfs
7, dissect-cstruct
8, dissect-esedb
9, dissect-etl
10, dissect-eventlog
11, dissect-evidence
12, dissect-extfs
13, dissect-fat
14, dissect-ffs
15, dissect-hypervisor
16, dissect-ntfs
17, dissect-regf
18, dissect-sql
19, dissect-thumbcache
20, dissect-util
21, dissect-volume
22, dissect-xfs
23, fetchFromGitHub
24, flow-record
25, fusepy
26, ipython
27, pycryptodome
28, pytestCheckHook
29, pythonOlder
30, pyyaml
31, setuptools
32, setuptools-scm
33, structlog
34, yara-python
35, zstandard
36}:
37
38buildPythonPackage rec {
39 pname = "dissect-target";
40 version = "3.8";
41 format = "pyproject";
42
43 disabled = pythonOlder "3.8";
44
45 src = fetchFromGitHub {
46 owner = "fox-it";
47 repo = "dissect.target";
48 rev = "refs/tags/${version}";
49 hash = "sha256-CPN8g6LDeS77fveFOK6gExIJq9g+5qXhwDhjw3tWuJc=";
50 };
51
52 SETUPTOOLS_SCM_PRETEND_VERSION = version;
53
54 nativeBuildInputs = [
55 setuptools
56 setuptools-scm
57 ];
58
59 propagatedBuildInputs = [
60 defusedxml
61 dissect-cstruct
62 dissect-eventlog
63 dissect-evidence
64 dissect-hypervisor
65 dissect-ntfs
66 dissect-regf
67 dissect-util
68 dissect-volume
69 flow-record
70 structlog
71 ];
72
73 passthru.optional-dependencies = {
74 full = [
75 asn1crypto
76 dissect-cim
77 dissect-clfs
78 dissect-esedb
79 dissect-etl
80 dissect-extfs
81 dissect-fat
82 dissect-ffs
83 dissect-sql
84 dissect-thumbcache
85 dissect-xfs
86 fusepy
87 ipython
88 pycryptodome
89 pyyaml
90 yara-python
91 zstandard
92 ];
93 };
94
95 nativeCheckInputs = [
96 pytestCheckHook
97 ] ++ passthru.optional-dependencies.full;
98
99 pythonImportsCheck = [
100 "dissect.target"
101 ];
102
103 disabledTests = [
104 # Test requires rdump
105 "test_exec_target_command"
106 # Issue with tar file
107 "test_tar_sensitive_drive_letter"
108 # Tests compare dates and times
109 "yum"
110 ];
111
112 disabledTestPaths = [
113 # Tests are using Windows paths
114 "tests/test_plugins_browsers.py"
115 ];
116
117 meta = with lib; {
118 description = "Dissect module that provides a programming API and command line tools";
119 homepage = "https://github.com/fox-it/dissect.target";
120 changelog = "https://github.com/fox-it/dissect.target/releases/tag/${version}";
121 license = licenses.agpl3Only;
122 maintainers = with maintainers; [ fab ];
123 };
124}