lol
1{ stable, branch, version, sha256Hash }:
2
3{ stdenv, python3Packages, fetchFromGitHub, fetchurl }:
4
5let
6 pythonPackages = python3Packages;
7 aiohttp = (stdenv.lib.overrideDerivation pythonPackages.aiohttp
8 (oldAttrs:
9 rec {
10 pname = "aiohttp";
11 version = "2.3.10";
12 src = pythonPackages.fetchPypi {
13 inherit pname version;
14 sha256 = "8adda6583ba438a4c70693374e10b60168663ffa6564c5c75d3c7a9055290964";
15 };
16 }));
17 aiohttp-cors = (stdenv.lib.overrideDerivation pythonPackages.aiohttp-cors
18 (oldAttrs:
19 rec {
20 pname = "aiohttp-cors";
21 version = "0.5.3";
22 name = "${pname}-${version}";
23 src = pythonPackages.fetchPypi {
24 inherit pname version;
25 sha256 = "11b51mhr7wjfiikvj3nc5s8c7miin2zdhl3yrzcga4mbpkj892in";
26 };
27 propagatedBuildInputs = [ aiohttp ]
28 ++ stdenv.lib.optional
29 (pythonPackages.pythonOlder "3.5")
30 pythonPackages.typing;
31 }));
32in pythonPackages.buildPythonPackage rec {
33 name = "${pname}-${version}";
34 pname = "gns3-server";
35
36 src = fetchFromGitHub {
37 owner = "GNS3";
38 repo = pname;
39 rev = "v${version}";
40 sha256 = sha256Hash;
41 };
42
43 propagatedBuildInputs = [ aiohttp-cors ]
44 ++ (with pythonPackages; [
45 yarl aiohttp multidict
46 jinja2 psutil zipstream raven jsonschema typing
47 prompt_toolkit
48 ]);
49
50 # Requires network access
51 doCheck = false;
52
53 postInstall = ''
54 rm $out/bin/gns3loopback # For Windows only
55 '';
56 meta = with stdenv.lib; {
57 description = "Graphical Network Simulator 3 server (${branch} release)";
58 longDescription = ''
59 The GNS3 server manages emulators such as Dynamips, VirtualBox or
60 Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
61 API.
62 '';
63 homepage = https://www.gns3.com/;
64 license = licenses.gpl3Plus;
65 platforms = platforms.linux;
66 maintainers = with maintainers; [ primeos ];
67 };
68}