1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 # build-system
7 setuptools,
8 wheel,
9 # dependencies
10 asn1crypto,
11 click,
12 cryptography,
13 python-dateutil,
14 pyyaml,
15 tzlocal,
16 # optional-dependencies
17 requests-mock,
18 jinja2,
19 werkzeug,
20 python-pkcs11,
21 # nativeCheckInputs
22 freezegun,
23 pyhanko-certvalidator,
24 pytest-aiohttp,
25 pytestCheckHook,
26 pytz,
27 requests,
28}:
29
30buildPythonPackage rec {
31 pname = "certomancer";
32 version = "0.13.0";
33 pyproject = true;
34
35 disabled = pythonOlder "3.7";
36
37 src = fetchFromGitHub {
38 owner = "MatthiasValvekens";
39 repo = "certomancer";
40 tag = "v${version}";
41 hash = "sha256-2/qTTN/UuSMHjkSsOs/KbfzKLBjJSLHY51XtgQ6x1Wo=";
42 };
43
44 build-system = [
45 setuptools
46 wheel
47 ];
48
49 dependencies = [
50 asn1crypto
51 click
52 cryptography
53 python-dateutil
54 pyyaml
55 tzlocal
56 ];
57
58 optional-dependencies = {
59 requests-mocker = [ requests-mock ];
60 web-api = [
61 jinja2
62 werkzeug
63 ];
64 pkcs11 = [ python-pkcs11 ];
65 };
66
67 nativeCheckInputs = [
68 freezegun
69 pyhanko-certvalidator
70 pytest-aiohttp
71 pytestCheckHook
72 pytz
73 requests
74 ]
75 ++ lib.flatten (builtins.attrValues optional-dependencies);
76
77 pythonImportsCheck = [ "certomancer" ];
78
79 meta = {
80 description = "Quickly construct, mock & deploy PKI test configurations using simple declarative configuration";
81 mainProgram = "certomancer";
82 homepage = "https://github.com/MatthiasValvekens/certomancer";
83 license = lib.licenses.mit;
84 maintainers = [ ];
85 };
86}