python312Packages.fnllm: 0.0.11 -> 0.0.12 (#364582)
[NixPkgs.git] / pkgs / development / python-modules / certbot / default.nix
blobc639113e48a260f5829ef434feaa6324de4dc441
2   lib,
3   buildPythonPackage,
4   python,
5   runCommand,
6   fetchFromGitHub,
7   fetchpatch,
8   configargparse,
9   acme,
10   configobj,
11   cryptography,
12   distro,
13   josepy,
14   parsedatetime,
15   pyrfc3339,
16   pytz,
17   setuptools,
18   dialog,
19   gnureadline,
20   pytest-xdist,
21   pytestCheckHook,
22   python-dateutil,
25 buildPythonPackage rec {
26   pname = "certbot";
27   version = "2.11.0";
28   pyproject = true;
30   src = fetchFromGitHub {
31     owner = "certbot";
32     repo = "certbot";
33     rev = "refs/tags/v${version}";
34     hash = "sha256-Qee7lUjgliG5fmUWWPm3MzpGJHUF/DXZ08UA6kkWjjk=";
35   };
37   patches = [
38     (fetchpatch {
39       name = "CSR_support_in_pyOpenSSL_is_deprecated.patch";
40       url = "https://github.com/certbot/certbot/commit/f005045d87b25f1922774685646e57765aa202ad.patch";
41       includes = [ "pytest.ini" ];
42       hash = "sha256-YcQbZb7DLU+AXxNyqJRYZIC18DuT6X8kGbfdYtUrHiA=";
43     })
44   ];
46   postPatch = "cd ${pname}"; # using sourceRoot would interfere with patches
48   build-system = [ setuptools ];
50   dependencies = [
51     configargparse
52     acme
53     configobj
54     cryptography
55     distro
56     josepy
57     parsedatetime
58     pyrfc3339
59     pytz
60     setuptools # for pkg_resources
61   ];
63   buildInputs = [
64     dialog
65     gnureadline
66   ];
68   nativeCheckInputs = [
69     python-dateutil
70     pytestCheckHook
71     pytest-xdist
72   ];
74   pytestFlagsArray = [
75     "-o cache_dir=$(mktemp -d)"
76     "-W"
77     "ignore::DeprecationWarning"
78   ];
80   makeWrapperArgs = [ "--prefix PATH : ${dialog}/bin" ];
82   # certbot.withPlugins has a similar calling convention as python*.withPackages
83   # it gets invoked with a lambda, and invokes that lambda with the python package set matching certbot's:
84   # certbot.withPlugins (cp: [ cp.certbot-dns-foo ])
85   passthru.withPlugins =
86     f:
87     let
88       pythonEnv = python.withPackages f;
89     in
90     runCommand "certbot-with-plugins" { } ''
91       mkdir -p $out/bin
92       cd $out/bin
93       ln -s ${pythonEnv}/bin/certbot
94     '';
96   meta = with lib; {
97     homepage = "https://github.com/certbot/certbot";
98     changelog = "https://github.com/certbot/certbot/blob/${src.rev}/certbot/CHANGELOG.md";
99     description = "ACME client that can obtain certs and extensibly update server configurations";
100     platforms = platforms.unix;
101     mainProgram = "certbot";
102     maintainers = with maintainers; [ domenkozar ];
103     license = with licenses; [ asl20 ];
104   };