evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / development / python-modules / magic-wormhole / default.nix
blob87404ab5b21e2475d47c9e255ecf1378e7e5b0af
2   lib,
3   stdenv,
4   buildPythonPackage,
5   fetchFromGitHub,
7   # build-system
8   setuptools,
10   # dependencies
11   spake2,
12   pynacl,
13   six,
14   attrs,
15   twisted,
16   autobahn,
17   automat,
18   tqdm,
19   click,
20   humanize,
21   iterable-io,
22   txtorcon,
23   zipstream-ng,
25   # optional-dependencies
26   noiseprotocol,
28   # tests
29   nettools,
30   unixtools,
31   mock,
32   magic-wormhole-transit-relay,
33   magic-wormhole-mailbox-server,
34   pytestCheckHook,
37 buildPythonPackage rec {
38   pname = "magic-wormhole";
39   version = "0.17.0";
40   pyproject = true;
42   src = fetchFromGitHub {
43     owner = "magic-wormhole";
44     repo = "magic-wormhole";
45     rev = "refs/tags/${version}";
46     hash = "sha256-BxPF4iQ91wLBagdvQ/Y89VIZBkMxFiEHnK+BU55Bwr4=";
47   };
49   postPatch =
50     # enable tests by fixing the location of the wormhole binary
51     ''
52       substituteInPlace src/wormhole/test/test_cli.py --replace-fail \
53         'locations = procutils.which("wormhole")' \
54         'return "${placeholder "out"}/bin/wormhole"'
55     ''
56     # fix the location of the ifconfig binary
57     + lib.optionalString stdenv.hostPlatform.isLinux ''
58       sed -i -e "s|'ifconfig'|'${nettools}/bin/ifconfig'|" src/wormhole/ipaddrs.py
59     '';
61   build-system = [ setuptools ];
63   dependencies = [
64     attrs
65     autobahn
66     automat
67     click
68     humanize
69     iterable-io
70     pynacl
71     six
72     spake2
73     tqdm
74     twisted
75     txtorcon
76     zipstream-ng
77   ] ++ autobahn.optional-dependencies.twisted ++ twisted.optional-dependencies.tls;
79   optional-dependencies = {
80     dilation = [ noiseprotocol ];
81   };
83   nativeCheckInputs =
84     # For Python 3.12, remove magic-wormhole-mailbox-server and magic-wormhole-transit-relay from test dependencies,
85     # which are not yet supported with this version.
86     lib.optionals
87       (!magic-wormhole-mailbox-server.meta.broken && !magic-wormhole-transit-relay.meta.broken)
88       [
89         magic-wormhole-mailbox-server
90         magic-wormhole-transit-relay
91       ]
92     ++ [
93       mock
94       pytestCheckHook
95     ]
96     ++ optional-dependencies.dilation
97     ++ lib.optionals stdenv.hostPlatform.isDarwin [ unixtools.locale ];
99   __darwinAllowLocalNetworking = true;
101   disabledTestPaths =
102     # For Python 3.12, remove the tests depending on magic-wormhole-mailbox-server and magic-wormhole-transit-relay,
103     # which are not yet supported with this version.
104     lib.optionals
105       (magic-wormhole-mailbox-server.meta.broken || magic-wormhole-transit-relay.meta.broken)
106       [
107         "src/wormhole/test/dilate/test_full.py"
108         "src/wormhole/test/test_args.py"
109         "src/wormhole/test/test_cli.py"
110         "src/wormhole/test/test_transit.py"
111         "src/wormhole/test/test_wormhole.py"
112         "src/wormhole/test/test_xfer_util.py"
113       ];
115   postInstall = ''
116     install -Dm644 docs/wormhole.1 $out/share/man/man1/wormhole.1
117   '';
119   meta = {
120     changelog = "https://github.com/magic-wormhole/magic-wormhole/blob/${version}/NEWS.md";
121     description = "Securely transfer data between computers";
122     homepage = "https://github.com/magic-wormhole/magic-wormhole";
123     license = lib.licenses.mit;
124     maintainers = [ lib.maintainers.mjoerg ];
125     mainProgram = "wormhole";
126   };