anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / networking / gns3 / gui.nix
blobe01380bc286ab16812977150ee1d61132f648c82
2   channel,
3   version,
4   hash,
5 }:
8   fetchFromGitHub,
9   gns3-gui,
10   lib,
11   python3Packages,
12   qt5,
13   testers,
14   wrapQtAppsHook,
17 python3Packages.buildPythonApplication rec {
18   pname = "gns3-gui";
19   inherit version;
21   src = fetchFromGitHub {
22     inherit hash;
23     owner = "GNS3";
24     repo = "gns3-gui";
25     rev = "refs/tags/v${version}";
26   };
28   nativeBuildInputs = with python3Packages; [ wrapQtAppsHook ];
30   build-system = with python3Packages; [ setuptools ];
32   propagatedBuildInputs = [ qt5.qtwayland ];
34   dependencies = with python3Packages; [
35     distro
36     jsonschema
37     psutil
38     sentry-sdk
39     setuptools
40     sip
41     (pyqt5.override { withWebSockets = true; })
42     truststore
43   ] ++ lib.optionals (pythonOlder "3.9") [
44     importlib-resources
45   ];
47   dontWrapQtApps = true;
49   preFixup = ''
50     wrapQtApp "$out/bin/gns3"
51   '';
53   doCheck = true;
55   checkInputs = with python3Packages; [ pytestCheckHook ];
57   preCheck = ''
58     export HOME=$(mktemp -d)
59     export QT_PLUGIN_PATH="${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}"
60     export QT_QPA_PLATFORM_PLUGIN_PATH="${qt5.qtbase.bin}/lib/qt-${qt5.qtbase.version}/plugins";
61     export QT_QPA_PLATFORM=offscreen
62   '';
64   passthru.tests.version = testers.testVersion {
65     package = gns3-gui;
66     command = "${lib.getExe gns3-gui} --version";
67   };
69   meta = {
70     description = "Graphical Network Simulator 3 GUI (${channel} release)";
71     longDescription = ''
72       Graphical user interface for controlling the GNS3 network simulator. This
73       requires access to a local or remote GNS3 server (it's recommended to
74       download the official GNS3 VM).
75     '';
76     homepage = "https://www.gns3.com/";
77     changelog = "https://github.com/GNS3/gns3-gui/releases/tag/v${version}";
78     license = lib.licenses.gpl3Plus;
79     platforms = lib.platforms.linux;
80     maintainers = with lib.maintainers; [ anthonyroussel ];
81     mainProgram = "gns3";
82   };