about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/web-apps/peering-manager/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/web-apps/peering-manager/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/web-apps/peering-manager/default.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/web-apps/peering-manager/default.nix b/nixpkgs/pkgs/servers/web-apps/peering-manager/default.nix
new file mode 100644
index 000000000000..c564629b4fcb
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/peering-manager/default.nix
@@ -0,0 +1,83 @@
+{ python3
+, fetchFromGitHub
+, fetchpatch
+, nixosTests
+, lib
+
+, plugins ? ps: []
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "peering-manager";
+  version = "1.8.3";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-UV1zSX9C9y5faOBUQ7bfj2DT6ffhMW28MIT7SaYjMgw=";
+  };
+
+  format = "other";
+
+  propagatedBuildInputs = with python3.pkgs; [
+    django
+    djangorestframework
+    django-redis
+    django-debug-toolbar
+    django-filter
+    django-postgresql-netfields
+    django-prometheus
+    django-rq
+    django-tables2
+    django-taggit
+    drf-spectacular
+    drf-spectacular-sidecar
+    jinja2
+    markdown
+    napalm
+    packaging
+    psycopg2
+    pyixapi
+    pynetbox
+    pyyaml
+    requests
+    tzdata
+  ] ++ plugins python3.pkgs;
+
+  buildPhase = ''
+    runHook preBuild
+    cp peering_manager/configuration{.example,}.py
+    python3 manage.py collectstatic --no-input
+    rm -f peering_manager/configuration.py
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/opt/peering-manager
+    cp -r . $out/opt/peering-manager
+    chmod +x $out/opt/peering-manager/manage.py
+    makeWrapper $out/opt/peering-manager/manage.py $out/bin/peering-manager \
+      --prefix PYTHONPATH : "$PYTHONPATH"
+    runHook postInstall
+  '';
+
+  passthru = {
+    # PYTHONPATH of all dependencies used by the package
+    python = python3;
+    pythonPath = python3.pkgs.makePythonPath propagatedBuildInputs;
+
+    tests = {
+      inherit (nixosTests) peering-manager;
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://peering-manager.net/";
+    license = licenses.asl20;
+    description = "BGP sessions management tool";
+    maintainers = teams.wdz.members;
+    platforms = platforms.linux;
+  };
+}