summary refs log tree commit diff
path: root/pkgs/applications/networking/gns3/server.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/gns3/server.nix')
-rw-r--r--pkgs/applications/networking/gns3/server.nix62
1 files changed, 51 insertions, 11 deletions
diff --git a/pkgs/applications/networking/gns3/server.nix b/pkgs/applications/networking/gns3/server.nix
index 7d5d9433bf31..9d7bf6f5a3ab 100644
--- a/pkgs/applications/networking/gns3/server.nix
+++ b/pkgs/applications/networking/gns3/server.nix
@@ -1,23 +1,63 @@
-{ stdenv, python3Packages, fetchFromGitHub }:
+{ stable, branch, version, sha256Hash }:
 
-python3Packages.buildPythonPackage rec {
+{ stdenv, python3Packages, fetchFromGitHub, fetchurl }:
+
+let
+  pythonPackages = python3Packages;
+  yarl = if (!stable) then pythonPackages.yarl
+    else (stdenv.lib.overrideDerivation pythonPackages.yarl (oldAttrs:
+      rec {
+        pname = "yarl";
+        version = "0.9.8";
+        name = "${pname}-${version}";
+        src = pythonPackages.fetchPypi {
+          inherit pname version;
+          sha256 = "1v2dsmr7bqp0yx51pwhbxyvzza8m2f88prsnbd926mi6ah38p0d7";
+        };
+      }));
+  aiohttp = if (!stable) then pythonPackages.aiohttp
+    else (stdenv.lib.overrideDerivation pythonPackages.aiohttp (oldAttrs:
+      rec {
+        pname = "aiohttp";
+        version = "1.3.5";
+        name = "${pname}-${version}";
+        src = pythonPackages.fetchPypi {
+          inherit pname version;
+          sha256 = "0hpqdiaifgyfqmxkyzwypwvrnvz5rqzgzylzhihfidc5ldfs856d";
+        };
+        propagatedBuildInputs = [ yarl ]
+          ++ (with pythonPackages; [ async-timeout chardet multidict ]);
+      }));
+  aiohttp-cors = if (!stable) then pythonPackages.aiohttp-cors
+    else (stdenv.lib.overrideDerivation pythonPackages.aiohttp-cors (oldAttrs:
+      rec {
+        pname = "aiohttp-cors";
+        version = "0.5.1";
+        name = "${pname}-${version}";
+        src = pythonPackages.fetchPypi {
+          inherit pname version;
+          sha256 = "0szma27ri25fq4nwwvs36myddggw3jz4pyzmq63yz4xpw0jjdxck";
+        };
+        propagatedBuildInputs = [ aiohttp ];
+      }));
+in pythonPackages.buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "gns3-server";
-  version = "2.1.0rc1";
 
   src = fetchFromGitHub {
     owner = "GNS3";
     repo = pname;
     rev = "v${version}";
-    sha256 = "181689fpjxq4hy2lyxk4zciqhgnhj5srvb4xsxdlbf68n89fj2zf";
+    sha256 = sha256Hash;
   };
 
-  propagatedBuildInputs = with python3Packages; [
-    aiohttp jinja2 psutil zipstream aiohttp-cors raven jsonschema yarl typing
-    prompt_toolkit
-  ];
+  propagatedBuildInputs = [ yarl aiohttp aiohttp-cors ]
+    ++ (with pythonPackages; [
+      jinja2 psutil zipstream raven jsonschema typing
+      prompt_toolkit
+    ]);
 
-  postPatch = ''
+  postPatch = stdenv.lib.optionalString (!stable) ''
     sed -i 's/yarl>=0.11,<0.12/yarl/g' requirements.txt
   '';
 
@@ -28,13 +68,13 @@ python3Packages.buildPythonPackage rec {
     rm $out/bin/gns3loopback # For windows only
   '';
   meta = with stdenv.lib; {
-    description = "Graphical Network Simulator 3 server";
+    description = "Graphical Network Simulator 3 server (${branch} release)";
     longDescription = ''
       The GNS3 server manages emulators such as Dynamips, VirtualBox or
       Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
       API.
     '';
-    homepage = "https://www.gns3.com/";
+    homepage = https://www.gns3.com/;
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos ];