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