1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build deps
7 setuptools,
8 docutils,
9
10 # dependencies
11 zipp,
12 importlib-metadata,
13 flask,
14 flask-compress,
15 flask-xml-rpc-re,
16 flask-restx,
17 requests,
18 ipy,
19 # indirect deps omitted: jinja2/markupsafe/werkzeug,
20 parsedatetime,
21 psutil,
22 psycopg2,
23 pyparsing,
24 python-dateutil,
25 pytz,
26 pyjwt,
27 tornado,
28
29 # optional deps
30 ## ldap
31 python-ldap,
32}:
33
34buildPythonPackage rec {
35 pname = "nipap";
36 version = "0.32.7";
37 pyproject = true;
38
39 src = fetchFromGitHub {
40 owner = "SpriteLink";
41 repo = "NIPAP";
42 tag = "v${version}";
43 hash = "sha256-FnCHW/yEhWtx+2fU+G6vxz50lWC7WL3cYKYOQzmH8zs=";
44 };
45
46 sourceRoot = "${src.name}/nipap";
47
48 pythonRelaxDeps = true; # deps are tightly specified by upstream
49
50 postPatch = ''
51 substituteInPlace pyproject.toml \
52 --replace-fail 'docutils==0.20.1' 'docutils'
53 '';
54
55 build-system = [
56 setuptools
57 docutils
58 ];
59
60 dependencies = [
61 zipp
62 importlib-metadata
63 flask
64 flask-compress
65 flask-xml-rpc-re
66 flask-restx
67 requests
68 ipy
69 # indirect deps omitted: jinja2/markupsafe/werkzeug
70 parsedatetime
71 psutil
72 psycopg2
73 pyparsing
74 python-dateutil
75 pytz
76 pyjwt
77 tornado
78 ];
79
80 optional-dependencies = {
81 ldap = [ python-ldap ];
82 };
83
84 doCheck = false; # tests require nose, /etc/nipap/nipap.conf and a running nipapd
85
86 meta = {
87 description = "Neat IP Address Planner";
88 longDescription = ''
89 NIPAP is the best open source IPAM in the known universe,
90 challenging classical IP address management (IPAM) systems in many areas.
91 '';
92 homepage = "https://github.com/SpriteLink/NIPAP";
93 changelog = "https://github.com/SpriteLink/NIPAP/releases/tag/v${version}";
94 license = lib.licenses.mit;
95 maintainers = with lib.maintainers; [
96 lukegb
97 ];
98 platforms = lib.platforms.all;
99 };
100}