1{
2 lib,
3 fetchFromGitHub,
4 buildPythonPackage,
5 pythonOlder,
6 cryptography,
7 jinja2,
8 mako,
9 passlib,
10 pytest,
11 pyyaml,
12 requests,
13 rtoml,
14 setuptools,
15 tomlkit,
16 librouteros,
17 pytestCheckHook,
18}:
19
20buildPythonPackage rec {
21 pname = "bundlewrap";
22 version = "4.18.0";
23 format = "setuptools";
24
25 disabled = pythonOlder "3.8";
26
27 src = fetchFromGitHub {
28 owner = "bundlewrap";
29 repo = "bundlewrap";
30 rev = "refs/tags/${version}";
31 hash = "sha256-7jBFeJem+0vZot+BknKmCxozmoHCBCAZqDbfQQG3/Vw=";
32 };
33
34 nativeBuildInputs = [ setuptools ];
35 propagatedBuildInputs = [
36 setuptools
37 cryptography
38 jinja2
39 mako
40 passlib
41 pyyaml
42 requests
43 tomlkit
44 librouteros
45 ] ++ lib.optionals (pythonOlder "3.11") [ rtoml ];
46
47 pythonImportsCheck = [ "bundlewrap" ];
48
49 nativeCheckInputs = [ pytestCheckHook ];
50
51 pytestFlagsArray = [
52 # only unit tests as integration tests need a OpenSSH client/server setup
53 "tests/unit"
54 ];
55
56 meta = with lib; {
57 homepage = "https://bundlewrap.org/";
58 description = "Easy, Concise and Decentralized Config management with Python";
59 mainProgram = "bw";
60 license = [ licenses.gpl3 ];
61 maintainers = with maintainers; [ wamserma ];
62 };
63}