1{
2 lib,
3 python3Packages,
4 fetchFromGitHub,
5 wrapGAppsHook4,
6 gobject-introspection,
7 gtk4,
8 glib,
9 makeDesktopItem,
10 copyDesktopItems,
11 networkmanager,
12}:
13
14python3Packages.buildPythonApplication rec {
15 pname = "nmgui";
16 version = "1.0.0";
17 format = "other";
18
19 src = fetchFromGitHub {
20 owner = "s-adi-dev";
21 repo = "nmgui";
22 tag = "v${version}";
23 hash = "sha256-HS/n40Ng8S5N14DtEH/upwlxdzwCoOEJA40EMdCcLw4=io";
24 };
25
26 nativeBuildInputs = [
27 wrapGAppsHook4
28 gobject-introspection
29 copyDesktopItems
30 ];
31
32 buildInputs = [
33 gtk4
34 glib
35 ];
36
37 dependencies = with python3Packages; [
38 pygobject3
39 nmcli
40 ];
41
42 desktopItems = [
43 (makeDesktopItem {
44 name = "nmgui";
45 exec = "nmgui";
46 icon = "network-wireless-symbolic";
47 comment = "GTK4-based Network Manager GUI using nmcli";
48 desktopName = "NM GUI";
49 categories = [
50 "Network"
51 "GTK"
52 ];
53 startupNotify = true;
54 })
55 ];
56
57 installPhase = ''
58 runHook preInstall
59 mkdir -p $out/{bin,share/applications,opt/nmgui}
60 # Copy the app files
61 cp -r app $out/opt/nmgui/
62
63 runHook postInstall
64 '';
65
66 postFixup = ''
67 makeWrapper ${python3Packages.python.interpreter} $out/bin/nmgui \
68 --add-flags "$out/opt/nmgui/app/main.py" \
69 --prefix PYTHONPATH : "$PYTHONPATH" \
70 "''${gappsWrapperArgs[@]}"
71 '';
72
73 meta = {
74 description = "Python library for interacting with NetworkManager CLI";
75 homepage = "https://github.com/s-adi-dev/nmgui";
76 license = lib.licenses.gpl3Plus;
77 maintainers = with lib.maintainers; [ ktechmidas ];
78 mainProgram = "nmgui";
79 inherit (networkmanager.meta) platforms;
80 changelog = "https://github.com/s-adi-dev/nmgui/releases/tag/v${version}";
81 };
82}