1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 replaceVars,
6 esptool,
7
8 # build-system
9 setuptools,
10
11 # dependencies
12 bleak,
13 cryptography,
14 netifaces,
15 pyserial,
16
17 # tests
18 versionCheckHook,
19}:
20
21buildPythonPackage rec {
22 pname = "rns";
23 version = "0.9.5";
24 pyproject = true;
25
26 src = fetchFromGitHub {
27 owner = "markqvist";
28 repo = "Reticulum";
29 tag = version;
30 hash = "sha256-jpmh7emJa9qy5Ge2sYgxSz2wYECG6POIEVo4hkAZI+8=";
31 };
32
33 patches = [
34 (replaceVars ./unvendor-esptool.patch {
35 esptool = lib.getExe esptool;
36 })
37 ];
38
39 build-system = [ setuptools ];
40
41 dependencies = [
42 bleak
43 cryptography
44 netifaces
45 pyserial
46 ];
47
48 pythonImportsCheck = [ "RNS" ];
49
50 nativeCheckInputs = [
51 versionCheckHook
52 ];
53 versionCheckProgram = "${placeholder "out"}/bin/rncp";
54 versionCheckProgramArg = "--version";
55
56 meta = {
57 description = "Cryptography-based networking stack for wide-area networks";
58 homepage = "https://reticulum.network";
59 changelog = "https://github.com/markqvist/Reticulum/blob/${src.tag}/Changelog.md";
60 license = lib.licenses.mit;
61 maintainers = with lib.maintainers; [
62 fab
63 qbit
64 ];
65 };
66}