nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pycryptodome,
6 uvloop,
7 asyncssh,
8 aioquic,
9 python-daemon,
10 setuptools,
11}:
12
13buildPythonPackage rec {
14 pname = "pproxy";
15 version = "2.7.9";
16 pyproject = true;
17
18 src = fetchFromGitHub {
19 owner = "qwj";
20 repo = "python-proxy";
21 rev = "7fccf8dd62204f34b0aa3a70fc568fd6ddff7728";
22 sha256 = "sha256-bOqDdNiaZ5MRi/UeF0hJwMs+rfQBKRsTmXrZ6ieIguo=";
23 };
24
25 nativeBuildInputs = [ setuptools ];
26
27 optional-dependencies = {
28 accelerated = [
29 pycryptodome
30 uvloop
31 ];
32 sshtunnel = [ asyncssh ];
33 quic = [ aioquic ];
34 daemon = [ python-daemon ];
35 };
36
37 nativeCheckInputs = lib.concatAttrValues optional-dependencies;
38
39 pythonImportsCheck = [ "pproxy" ];
40
41 disabledTests = [
42 # Tests try to connect to outside Internet, so disabled
43 "api_server"
44 "api_client"
45 ];
46
47 # test suite doesn't use test runner. so need to run ``python ./tests/*``
48 checkPhase = ''
49 shopt -s extglob
50 for f in ./tests/!(${builtins.concatStringsSep "|" disabledTests}).py ; do
51 echo "***Testing $f***"
52 eval "python $f"
53 done
54 '';
55
56 meta = {
57 description = "Proxy server that can tunnel among remote servers by regex rules";
58 mainProgram = "pproxy";
59 homepage = "https://github.com/qwj/python-proxy";
60 license = lib.licenses.mit;
61 maintainers = [ ];
62 };
63}