anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / networking / gns3 / server.nix
blobdec90b620f704b886016b7a52f426fd84fd6db8a
2   channel,
3   version,
4   hash,
5 }:
8   fetchFromGitHub,
9   gns3-server,
10   lib,
11   nixosTests,
12   pkgsStatic,
13   python3Packages,
14   stdenv,
15   testers,
16   util-linux,
19 python3Packages.buildPythonApplication {
20   pname = "gns3-server";
21   inherit version;
23   src = fetchFromGitHub {
24     inherit hash;
25     owner = "GNS3";
26     repo = "gns3-server";
27     rev = "refs/tags/v${version}";
28   };
30   # GNS3 2.3.26 requires a static BusyBox for the Docker integration
31   prePatch = ''
32     cp ${pkgsStatic.busybox}/bin/busybox gns3server/compute/docker/resources/bin/busybox
33   '';
35   build-system = with python3Packages; [ setuptools ];
37   dependencies = with python3Packages; [
38     aiofiles
39     aiohttp
40     aiohttp-cors
41     async-generator
42     distro
43     jinja2
44     jsonschema
45     multidict
46     platformdirs
47     prompt-toolkit
48     psutil
49     py-cpuinfo
50     sentry-sdk
51     truststore
52     yarl
53   ] ++ lib.optionals (pythonOlder "3.9") [
54     importlib-resources
55   ];
57   postInstall = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
58     rm $out/bin/gns3loopback
59   '';
61   # util-linux (script program) is required for Docker support
62   makeWrapperArgs = [ "--suffix PATH : ${lib.makeBinPath [ util-linux ]}" ];
64   doCheck = true;
66   # Otherwise tests will fail to create directory
67   # Permission denied: '/homeless-shelter'
68   preCheck = ''
69     export HOME=$(mktemp -d)
70   '';
72   checkInputs = with python3Packages; [
73     pytest-aiohttp
74     pytest-rerunfailures
75     pytestCheckHook
76   ];
78   pytestFlagsArray = [
79     # fails on ofborg because of lack of cpu vendor information
80     "--deselect=tests/controller/gns3vm/test_virtualbox_gns3_vm.py::test_cpu_vendor_id"
81     # Rerun failed tests up to three times (flaky tests)
82     "--reruns 3"
83   ];
85   passthru.tests = {
86     inherit (nixosTests) gns3-server;
87     version = testers.testVersion {
88       package = gns3-server;
89       command = "${lib.getExe gns3-server} --version";
90     };
91   };
93   meta = {
94     description = "Graphical Network Simulator 3 server (${channel} release)";
95     longDescription = ''
96       The GNS3 server manages emulators such as Dynamips, VirtualBox or
97       Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
98       API.
99     '';
100     homepage = "https://www.gns3.com/";
101     changelog = "https://github.com/GNS3/gns3-server/releases/tag/v${version}";
102     license = lib.licenses.gpl3Plus;
103     platforms = lib.platforms.linux;
104     maintainers = with lib.maintainers; [ anthonyroussel ];
105     mainProgram = "gns3server";
106   };