19 python3Packages.buildPythonApplication {
20 pname = "gns3-server";
23 src = fetchFromGitHub {
27 rev = "refs/tags/v${version}";
30 # GNS3 2.3.26 requires a static BusyBox for the Docker integration
32 cp ${pkgsStatic.busybox}/bin/busybox gns3server/compute/docker/resources/bin/busybox
35 build-system = with python3Packages; [ setuptools ];
56 ++ lib.optionals (pythonOlder "3.9") [
60 postInstall = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
61 rm $out/bin/gns3loopback
64 # util-linux (script program) is required for Docker support
65 makeWrapperArgs = [ "--suffix PATH : ${lib.makeBinPath [ util-linux ]}" ];
69 # Otherwise tests will fail to create directory
70 # Permission denied: '/homeless-shelter'
72 export HOME=$(mktemp -d)
75 checkInputs = with python3Packages; [
82 # fails on ofborg because of lack of cpu vendor information
83 "--deselect=tests/controller/gns3vm/test_virtualbox_gns3_vm.py::test_cpu_vendor_id"
84 # Rerun failed tests up to three times (flaky tests)
89 inherit (nixosTests) gns3-server;
90 version = testers.testVersion {
91 package = gns3-server;
92 command = "${lib.getExe gns3-server} --version";
97 description = "Graphical Network Simulator 3 server (${channel} release)";
99 The GNS3 server manages emulators such as Dynamips, VirtualBox or
100 Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
103 homepage = "https://www.gns3.com/";
104 changelog = "https://github.com/GNS3/gns3-server/releases/tag/v${version}";
105 license = lib.licenses.gpl3Plus;
106 platforms = lib.platforms.linux;
107 maintainers = with lib.maintainers; [ anthonyroussel ];
108 mainProgram = "gns3server";