diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 2e3a8bc71fed..833dd48c26dd 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -13892,6 +13892,12 @@ github = "KSJ2000"; githubId = 184105270; }; + ktechmidas = { + email = "daniel@ktechmidas.net"; + github = "ktechmidas"; + githubId = 9920871; + name = "Monotoko"; + }; ktf = { email = "giulio.eulisse@cern.ch"; github = "ktf"; diff --git a/pkgs/by-name/nm/nmgui/package.nix b/pkgs/by-name/nm/nmgui/package.nix new file mode 100644 index 000000000000..c9841e537631 --- /dev/null +++ b/pkgs/by-name/nm/nmgui/package.nix @@ -0,0 +1,82 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + wrapGAppsHook4, + gobject-introspection, + gtk4, + glib, + makeDesktopItem, + copyDesktopItems, + networkmanager, +}: + +python3Packages.buildPythonApplication rec { + pname = "nmgui"; + version = "1.0.0"; + format = "other"; + + src = fetchFromGitHub { + owner = "s-adi-dev"; + repo = "nmgui"; + tag = "v${version}"; + hash = "sha256-HS/n40Ng8S5N14DtEH/upwlxdzwCoOEJA40EMdCcLw4=io"; + }; + + nativeBuildInputs = [ + wrapGAppsHook4 + gobject-introspection + copyDesktopItems + ]; + + buildInputs = [ + gtk4 + glib + ]; + + dependencies = with python3Packages; [ + pygobject3 + nmcli + ]; + + desktopItems = [ + (makeDesktopItem { + name = "nmgui"; + exec = "nmgui"; + icon = "network-wireless-symbolic"; + comment = "GTK4-based Network Manager GUI using nmcli"; + desktopName = "NM GUI"; + categories = [ + "Network" + "GTK" + ]; + startupNotify = true; + }) + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/{bin,share/applications,opt/nmgui} + # Copy the app files + cp -r app $out/opt/nmgui/ + + runHook postInstall + ''; + + postFixup = '' + makeWrapper ${python3Packages.python.interpreter} $out/bin/nmgui \ + --add-flags "$out/opt/nmgui/app/main.py" \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + "''${gappsWrapperArgs[@]}" + ''; + + meta = { + description = "Python library for interacting with NetworkManager CLI"; + homepage = "https://github.com/s-adi-dev/nmgui"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ktechmidas ]; + mainProgram = "nmgui"; + inherit (networkmanager.meta) platforms; + changelog = "https://github.com/s-adi-dev/nmgui/releases/tag/v${version}"; + }; +} diff --git a/pkgs/development/python-modules/nmcli/default.nix b/pkgs/development/python-modules/nmcli/default.nix new file mode 100644 index 000000000000..36cb2cf99b4c --- /dev/null +++ b/pkgs/development/python-modules/nmcli/default.nix @@ -0,0 +1,42 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + replaceVars, + setuptools, + wheel, + networkmanager, +}: + +buildPythonPackage rec { + pname = "nmcli"; + version = "1.5.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ushiboy"; + repo = "nmcli"; + tag = "v${version}"; + hash = "sha256-1gVj4WfTx1NcoyWA9OK5EyGze9hmrXV0Mq50C1S3bfM="; + }; + + build-system = [ + setuptools + wheel + ]; + + patches = [ + (replaceVars ./nmcli-path.patch { + nmcli = lib.getExe' networkmanager "nmcli"; + }) + ]; + + meta = { + description = "Python library for interacting with NetworkManager CLI"; + homepage = "https://github.com/ushiboy/nmcli"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ktechmidas ]; + inherit (networkmanager.meta) platforms; + changelog = "https://github.com/ushiboy/nmcli/releases/tag/v${version}"; + }; +} diff --git a/pkgs/development/python-modules/nmcli/nmcli-path.patch b/pkgs/development/python-modules/nmcli/nmcli-path.patch new file mode 100644 index 000000000000..13d39a649c8c --- /dev/null +++ b/pkgs/development/python-modules/nmcli/nmcli-path.patch @@ -0,0 +1,11 @@ +--- a/nmcli/_system.py ++++ b/nmcli/_system.py +@@ -43,7 +43,7 @@ class System: + def nmcli(self, parameters: CommandParameter) -> str: + if isinstance(parameters, str): + parameters = [parameters] +- c = ['sudo', 'nmcli'] if self._use_sudo else ['nmcli'] ++ c = ['sudo', '@nmcli@'] if self._use_sudo else ['@nmcli@'] + commands = c + parameters + try: + env = dict(os.environ, **{'LANG': self._lang}) \ No newline at end of file diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a96dff3fb2c4..65a5801b84bc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10459,6 +10459,8 @@ self: super: with self; { nmapthon2 = callPackage ../development/python-modules/nmapthon2 { }; + nmcli = callPackage ../development/python-modules/nmcli { }; + nnpdf = toPythonModule (pkgs.nnpdf.override { python3 = python; }); noaa-coops = callPackage ../development/python-modules/noaa-coops { };