1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 poetry-core,
8
9 # dependencies
10 apscheduler,
11 bitstring,
12 cffi,
13 ecdsa,
14 monero,
15 pypng,
16 pyqrcode,
17 pyramid,
18 pyramid-jinja2,
19 pysocks,
20 pytz,
21 requests,
22 tzlocal,
23 waitress,
24 yoyo-migrations,
25
26 # tests
27 pytestCheckHook,
28 webtest,
29}:
30
31buildPythonPackage rec {
32 pname = "cypherpunkpay";
33 version = "1.0.16";
34 pyproject = true;
35
36 src = fetchFromGitHub {
37 owner = "CypherpunkPay";
38 repo = "CypherpunkPay";
39 tag = "v${version}";
40 hash = "sha256-X0DB0PVwR0gRnt3jixFzglWAOPKBMvqTOG6pK6OJ03w=";
41 };
42
43 pythonRelaxDeps = [
44 "bitstring"
45 "cffi"
46 "ecdsa"
47 "pypng"
48 "tzlocal"
49 "yoyo-migrations"
50 "waitress"
51 ];
52
53 build-system = [
54 poetry-core
55 ];
56
57 dependencies = [
58 apscheduler
59 bitstring
60 cffi
61 ecdsa
62 monero
63 pypng
64 pyqrcode
65 pyramid
66 pyramid-jinja2
67 pysocks
68 pytz
69 requests
70 tzlocal
71 waitress
72 yoyo-migrations
73 ];
74
75 nativeCheckInputs = [
76 pytestCheckHook
77 webtest
78 ];
79
80 pytestFlags = [
81 "-Wignore::DeprecationWarning"
82 ];
83
84 disabledTestPaths = [
85 # performance test
86 "tests/unit/tools/pbkdf2_test.py"
87 # tests require network connection
88 "tests/network/explorers/bitcoin"
89 "tests/network/monero/monero_address_transactions_db_test.py"
90 "tests/network/net/http_client"
91 "tests/network/prices"
92 # tests require bitcoind running
93 "tests/network/full_node_clients"
94 # tests require lnd running
95 "tests/network/ln"
96 # tests require tor running
97 "tests/network/monero/monero_test.py"
98 "tests/network/net/tor_client"
99 "tests/network/usecases/calc_monero_address_credits_uc_test.py"
100 "tests/network/usecases/fetch_monero_txs_from_open_node_uc_test.py"
101 # tests require the full environment running
102 "tests/acceptance/views"
103 "tests/acceptance/views_admin"
104 "tests/acceptance/views_donations"
105 "tests/acceptance/views_dummystore"
106 ];
107
108 pythonImportsCheck = [ "cypherpunkpay" ];
109
110 meta = {
111 description = "Modern self-hosted software for accepting Bitcoin";
112 homepage = "https://github.com/CypherpunkPay/CypherpunkPay";
113 changelog = "https://github.com/CypherpunkPay/CypherpunkPay/releases/tag/v${version}";
114 license = with lib.licenses; [
115 mit # or
116 unlicense
117 ];
118 maintainers = with lib.maintainers; [ prusnak ];
119 };
120}