1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 poetry-core,
6 sphinxHook,
7 furo,
8 myst-parser,
9 pbr,
10 sphinxcontrib-apidoc,
11
12 # dependencies
13 attrs,
14 binaryornot,
15 boolean-py,
16 click,
17 python-debian,
18 jinja2,
19 license-expression,
20 python-magic,
21 tomlkit,
22
23 # test dependencies
24 freezegun,
25 pytestCheckHook,
26}:
27
28buildPythonPackage rec {
29 pname = "reuse";
30 version = "6.1.2";
31 pyproject = true;
32
33 src = fetchFromGitHub {
34 owner = "fsfe";
35 repo = "reuse-tool";
36 tag = "v${version}";
37 hash = "sha256-vWBM8bvzsMAT8ONmdx3qy00SPySLsBBXPOd3sgQs/ig=";
38 };
39
40 outputs = [
41 "out"
42 "doc"
43 "man"
44 ];
45
46 build-system = [
47 poetry-core
48 sphinxHook
49 furo
50 myst-parser
51 pbr
52 sphinxcontrib-apidoc
53 ];
54
55 dependencies = [
56 attrs
57 binaryornot
58 boolean-py
59 click
60 python-debian
61 jinja2
62 license-expression
63 python-magic
64 tomlkit
65 ];
66
67 nativeCheckInputs = [
68 pytestCheckHook
69 freezegun
70 ];
71
72 disabledTestPaths = [
73 # pytest wants to execute the actual source files for some reason, which fails with ImportPathMismatchError()
74 "src/reuse"
75 ];
76
77 sphinxBuilders = [
78 "html"
79 "man"
80 ];
81 sphinxRoot = "docs";
82
83 pythonImportsCheck = [ "reuse" ];
84
85 meta = with lib; {
86 description = "Tool for compliance with the REUSE Initiative recommendations";
87 homepage = "https://github.com/fsfe/reuse-tool";
88 changelog = "https://github.com/fsfe/reuse-tool/blob/v${version}/CHANGELOG.md";
89 license = with licenses; [
90 asl20
91 cc-by-sa-40
92 cc0
93 gpl3Plus
94 ];
95 maintainers = with maintainers; [
96 FlorianFranzen
97 Luflosi
98 ];
99 mainProgram = "reuse";
100 };
101}