btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / ne / netbox_4_1 / package.nix
blobbe5b53042793c50730e595f273e6bf9d8a77bb33
2   lib,
3   fetchFromGitHub,
4   fetchpatch,
5   python3,
6   plugins ? _ps: [ ],
7   nixosTests,
8 }:
9 let
10   py = python3.override {
11     packageOverrides = _final: prev: { django = prev.django_5; };
12   };
14   extraBuildInputs = plugins py.pkgs;
16 py.pkgs.buildPythonApplication rec {
17   pname = "netbox";
18   version = "4.1.3";
20   format = "other";
22   src = fetchFromGitHub {
23     owner = "netbox-community";
24     repo = "netbox";
25     rev = "refs/tags/v${version}";
26     hash = "sha256-SRzkmRkniVDu6vYGa9Kd9exob/LHpGBPd+lRA/pbCFo=";
27   };
29   patches = [
30     ./custom-static-root.patch
31     (fetchpatch {
32       url = "https://github.com/netbox-community/netbox/pull/17620.patch";
33       hash = "sha256-zN2zke4qlNJUbxI8mSV+zGmEv0Qtd0zSCbCXWyE1L2k=";
34     })
35   ];
37   propagatedBuildInputs =
38     (
39       with py.pkgs;
40       [
41         django
42         django-cors-headers
43         django-debug-toolbar
44         django-filter
45         django-graphiql-debug-toolbar
46         django-htmx
47         django-mptt
48         django-pglocks
49         django-prometheus
50         django-redis
51         django-rq
52         django-tables2
53         django-taggit
54         django-timezone-field
55         djangorestframework
56         drf-spectacular
57         drf-spectacular-sidecar
58         feedparser
59         jinja2
60         markdown
61         netaddr
62         nh3
63         pillow
64         psycopg
65         psycopg.optional-dependencies.c
66         psycopg.optional-dependencies.pool
67         pyyaml
68         requests
69         social-auth-core
70         social-auth-app-django
71         strawberry-graphql
72         strawberry-django
73         svgwrite
74         tablib
76         # Optional dependencies, kept here for backward compatibility
78         # for the S3 data source backend
79         boto3
80         # for Git data source backend
81         dulwich
82         # for error reporting
83         sentry-sdk
84       ]
85       ++ social-auth-core.passthru.optional-dependencies.openidconnect
86     )
87     ++ extraBuildInputs;
89   buildInputs = with py.pkgs; [
90     mkdocs-material
91     mkdocs-material-extensions
92     mkdocstrings
93     mkdocstrings-python
94   ];
96   nativeBuildInputs = [ py.pkgs.mkdocs ];
98   postBuild = ''
99     PYTHONPATH=$PYTHONPATH:netbox/
100     python -m mkdocs build
101   '';
103   installPhase = ''
104     mkdir -p $out/opt/netbox
105     cp -r . $out/opt/netbox
106     chmod +x $out/opt/netbox/netbox/manage.py
107     makeWrapper $out/opt/netbox/netbox/manage.py $out/bin/netbox \
108       --prefix PYTHONPATH : "$PYTHONPATH"
109   '';
111   passthru = {
112     python = python3;
113     # PYTHONPATH of all dependencies used by the package
114     pythonPath = py.pkgs.makePythonPath propagatedBuildInputs;
115     inherit (py.pkgs) gunicorn;
116     tests = {
117       netbox = nixosTests.netbox_4_1;
118       inherit (nixosTests) netbox-upgrade;
119     };
120   };
122   meta = {
123     homepage = "https://github.com/netbox-community/netbox";
124     description = "IP address management (IPAM) and data center infrastructure management (DCIM) tool";
125     mainProgram = "netbox";
126     license = lib.licenses.asl20;
127     maintainers = with lib.maintainers; [
128       minijackson
129       n0emis
130       raitobezarius
131     ];
132   };