From f301f1ca2bb3fcc70d7c0c7e2a0c002208a4833d Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Thu, 13 Mar 2025 00:59:12 +0800 Subject: [PATCH 01/13] firewalld: update meta attributes --- pkgs/by-name/fi/firewalld/package.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 5fe266ea17e3..bd112bbda6be 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -107,10 +107,12 @@ stdenv.mkDerivation rec { wrapPythonProgramsIn "$out/share/firewalld/testsuite/python" "$out ${pythonPath}" ''; - meta = with lib; { + meta = { description = "Firewall daemon with D-Bus interface"; - homepage = "https://github.com/firewalld/firewalld"; - license = licenses.gpl2Plus; - maintainers = [ ]; + homepage = "https://firewalld.org"; + downloadPage = "https://github.com/firewalld/firewalld/releases"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ prince213 ]; + platforms = lib.platforms.linux; }; } From 448091b05cacb5a1e85bff718568d4da58d75e7a Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 17:30:18 +0800 Subject: [PATCH 02/13] firewalld: avoid autoreconfHook Run autogen.sh to properly create i18n and l10n files. --- pkgs/by-name/fi/firewalld/package.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index bd112bbda6be..c71515ccec25 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -2,7 +2,8 @@ lib, stdenv, fetchFromGitHub, - autoreconfHook, + autoconf, + automake, bash, docbook_xml_dtd_42, docbook-xsl-nons, @@ -67,7 +68,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ - autoreconfHook + autoconf + automake docbook_xml_dtd_42 docbook-xsl-nons glib @@ -94,6 +96,10 @@ stdenv.mkDerivation rec { pythonPath ]; + preConfigure = '' + ./autogen.sh + ''; + dontWrapGApps = true; preFixup = lib.optionalString withGui '' From ea57607629880fda5c879797aa8e86846392a2a0 Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 17:33:00 +0800 Subject: [PATCH 03/13] firewalld: add runtime programs as build inputs --- pkgs/by-name/fi/firewalld/package.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index c71515ccec25..328c4171efe1 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -4,19 +4,22 @@ fetchFromGitHub, autoconf, automake, - bash, docbook_xml_dtd_42, docbook-xsl-nons, glib, gobject-introspection, gtk3, intltool, + ipset, + iptables, + kmod, libnotify, libxml2, libxslt, networkmanagerapplet, pkg-config, python3, + sysctl, wrapGAppsNoGuiHook, withGui ? false, }: @@ -74,11 +77,15 @@ stdenv.mkDerivation rec { docbook-xsl-nons glib intltool + ipset + iptables + kmod libxml2 libxslt pkg-config python3 python3.pkgs.wrapPython + sysctl ] ++ lib.optionals withGui [ gobject-introspection @@ -87,8 +94,11 @@ stdenv.mkDerivation rec { buildInputs = [ - bash glib + ipset + iptables + kmod + sysctl ] ++ lib.optionals withGui [ gtk3 From dacd3b409bd0f74f67c8c407b5d7b2ad955b4a32 Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 17:47:07 +0800 Subject: [PATCH 04/13] firewalld: install applet and config for gui --- pkgs/by-name/fi/firewalld/package.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 328c4171efe1..3f5fcf9f2d1c 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -110,6 +110,10 @@ stdenv.mkDerivation rec { ./autogen.sh ''; + postInstall = lib.optionalString (!withGui) '' + rm $out/bin/firewall-{applet,config} + ''; + dontWrapGApps = true; preFixup = lib.optionalString withGui '' From 652cac382a47bc721e84552a2ef7d24e1df74721 Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 17:52:10 +0800 Subject: [PATCH 05/13] firewalld: wrap non-gui programs with gtk --- pkgs/by-name/fi/firewalld/package.nix | 45 +++++++++++++-------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 3f5fcf9f2d1c..9b4d85799135 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -69,41 +69,38 @@ stdenv.mkDerivation rec { --replace "/usr/bin/nm-connection-editor" "${networkmanagerapplet}/bin/nm-connection-editor" ''; - nativeBuildInputs = - [ - autoconf - automake - docbook_xml_dtd_42 - docbook-xsl-nons - glib - intltool - ipset - iptables - kmod - libxml2 - libxslt - pkg-config - python3 - python3.pkgs.wrapPython - sysctl - ] - ++ lib.optionals withGui [ - gobject-introspection - wrapGAppsNoGuiHook - ]; + nativeBuildInputs = [ + autoconf + automake + docbook_xml_dtd_42 + docbook-xsl-nons + glib + intltool + ipset + iptables + kmod + libxml2 + libxslt + pkg-config + python3 + python3.pkgs.wrapPython + sysctl + wrapGAppsNoGuiHook + ]; buildInputs = [ glib + gobject-introspection ipset iptables kmod + pythonPath sysctl ] ++ lib.optionals withGui [ gtk3 libnotify - pythonPath ]; preConfigure = '' @@ -116,7 +113,7 @@ stdenv.mkDerivation rec { dontWrapGApps = true; - preFixup = lib.optionalString withGui '' + preFixup = '' makeWrapperArgs+=("''${gappsWrapperArgs[@]}") ''; From 099202f1baba54c072e3f10d5a28da79a010064a Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 23:25:54 +0800 Subject: [PATCH 06/13] firewalld: use pyqt6 instead of pyqt5 --- pkgs/by-name/fi/firewalld/package.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 9b4d85799135..468d63e0db95 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -34,8 +34,7 @@ let pygobject3 ] ++ lib.optionals withGui [ - pyqt5 - pyqt5-sip + pyqt6 ] ); in From 27d754aac6dff811c2a01562a65a5380250ef40f Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 23:31:51 +0800 Subject: [PATCH 07/13] firewalld: fix networkmanager integration --- pkgs/by-name/fi/firewalld/package.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 468d63e0db95..7fab2ce7beb6 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -12,10 +12,12 @@ intltool, ipset, iptables, + kdePackages, kmod, libnotify, libxml2, libxslt, + networkmanager, networkmanagerapplet, pkg-config, python3, @@ -56,7 +58,7 @@ stdenv.mkDerivation rec { postPatch = '' substituteInPlace src/firewall/config/__init__.py.in \ - --replace "/usr/share" "$out/share" + --replace-fail /usr "$out" for file in config/firewall-{applet,config}.desktop.in; do substituteInPlace $file \ @@ -65,7 +67,8 @@ stdenv.mkDerivation rec { '' + lib.optionalString withGui '' substituteInPlace src/firewall-applet.in \ - --replace "/usr/bin/nm-connection-editor" "${networkmanagerapplet}/bin/nm-connection-editor" + --replace-fail "/usr/bin/systemsettings" "${kdePackages.systemsettings}/bin/systemsettings" \ + --replace-fail "/usr/bin/nm-connection-editor" "${networkmanagerapplet}/bin/nm-connection-editor" ''; nativeBuildInputs = [ @@ -94,6 +97,7 @@ stdenv.mkDerivation rec { ipset iptables kmod + networkmanager pythonPath sysctl ] From 3a1c054bb9390e158652c1efe20367b2eb8ee252 Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 23:33:42 +0800 Subject: [PATCH 08/13] firewalld: fix paths --- pkgs/by-name/fi/firewalld/package.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 7fab2ce7beb6..dae4be7bc773 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -57,12 +57,13 @@ stdenv.mkDerivation rec { postPatch = '' - substituteInPlace src/firewall/config/__init__.py.in \ - --replace-fail /usr "$out" + substituteInPlace config/xmlschema/check.sh \ + --replace-fail /usr/bin/ "" - for file in config/firewall-{applet,config}.desktop.in; do - substituteInPlace $file \ - --replace "/usr/bin/" "$out/bin/" + for file in src/{firewall-offline-cmd.in,firewall/config/__init__.py.in} \ + config/firewall-{applet,config}.desktop.in; do + substituteInPlace $file \ + --replace-fail /usr "$out" done '' + lib.optionalString withGui '' From ee19ecd464c92be604bc98433b985b5dc233637f Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 23:36:52 +0800 Subject: [PATCH 09/13] firewalld: wrap gui programs with qt6 --- pkgs/by-name/fi/firewalld/package.nix | 53 ++++++++++++++++----------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index dae4be7bc773..9c54afb0f871 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -21,6 +21,7 @@ networkmanagerapplet, pkg-config, python3, + qt6, sysctl, wrapGAppsNoGuiHook, withGui ? false, @@ -72,24 +73,28 @@ stdenv.mkDerivation rec { --replace-fail "/usr/bin/nm-connection-editor" "${networkmanagerapplet}/bin/nm-connection-editor" ''; - nativeBuildInputs = [ - autoconf - automake - docbook_xml_dtd_42 - docbook-xsl-nons - glib - intltool - ipset - iptables - kmod - libxml2 - libxslt - pkg-config - python3 - python3.pkgs.wrapPython - sysctl - wrapGAppsNoGuiHook - ]; + nativeBuildInputs = + [ + autoconf + automake + docbook_xml_dtd_42 + docbook-xsl-nons + glib + intltool + ipset + iptables + kmod + libxml2 + libxslt + pkg-config + python3 + python3.pkgs.wrapPython + sysctl + wrapGAppsNoGuiHook + ] + ++ lib.optionals withGui [ + qt6.wrapQtAppsHook + ]; buildInputs = [ @@ -105,6 +110,7 @@ stdenv.mkDerivation rec { ++ lib.optionals withGui [ gtk3 libnotify + qt6.qtbase ]; preConfigure = '' @@ -116,10 +122,15 @@ stdenv.mkDerivation rec { ''; dontWrapGApps = true; + dontWrapQtApps = true; - preFixup = '' - makeWrapperArgs+=("''${gappsWrapperArgs[@]}") - ''; + preFixup = + '' + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + '' + + lib.optionalString withGui '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + ''; postFixup = '' chmod +x $out/share/firewalld/*.py $out/share/firewalld/testsuite/python/*.py $out/share/firewalld/testsuite/{,integration/}testsuite From 367f4890275bde16bbd2a5f60e9bc111e09ff7fc Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 23:40:09 +0800 Subject: [PATCH 10/13] firewalld: fix i18n --- pkgs/by-name/fi/firewalld/package.nix | 1 + pkgs/by-name/fi/firewalld/specify-localedir.patch | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 pkgs/by-name/fi/firewalld/specify-localedir.patch diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 9c54afb0f871..d28f0ce70a89 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -54,6 +54,7 @@ stdenv.mkDerivation rec { patches = [ ./respect-xml-catalog-files-var.patch + ./specify-localedir.patch ]; postPatch = diff --git a/pkgs/by-name/fi/firewalld/specify-localedir.patch b/pkgs/by-name/fi/firewalld/specify-localedir.patch new file mode 100644 index 000000000000..57e79da4d0b1 --- /dev/null +++ b/pkgs/by-name/fi/firewalld/specify-localedir.patch @@ -0,0 +1,12 @@ +--- a/src/firewall/config/__init__.py.in ++++ b/src/firewall/config/__init__.py.in +@@ -19,6 +19,9 @@ + DOMAIN = "firewalld" + import gettext + ++locale.bindtextdomain(DOMAIN, "/usr/share/locale") ++gettext.bindtextdomain(DOMAIN, "/usr/share/locale") ++ + gettext.install(domain=DOMAIN) + + from . import dbus # noqa: F401 From 2b32dee3c3fc668cfa8015151cf62532dfc8669b Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 24 Mar 2025 23:42:18 +0800 Subject: [PATCH 11/13] firewalld: remove testsuite --- pkgs/by-name/fi/firewalld/package.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index d28f0ce70a89..466e25285a91 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -118,9 +118,13 @@ stdenv.mkDerivation rec { ./autogen.sh ''; - postInstall = lib.optionalString (!withGui) '' - rm $out/bin/firewall-{applet,config} - ''; + postInstall = + '' + rm -r $out/share/firewalld/testsuite + '' + + lib.optionalString (!withGui) '' + rm $out/bin/firewall-{applet,config} + ''; dontWrapGApps = true; dontWrapQtApps = true; @@ -134,10 +138,9 @@ stdenv.mkDerivation rec { ''; postFixup = '' - chmod +x $out/share/firewalld/*.py $out/share/firewalld/testsuite/python/*.py $out/share/firewalld/testsuite/{,integration/}testsuite - patchShebangs --host $out/share/firewalld/testsuite/{,integration/}testsuite $out/share/firewalld/*.py + chmod +x $out/share/firewalld/*.py + patchShebangs --host $out/share/firewalld/*.py wrapPythonProgramsIn "$out/bin" "$out ${pythonPath}" - wrapPythonProgramsIn "$out/share/firewalld/testsuite/python" "$out ${pythonPath}" ''; meta = { From ea168da721a097d9364b113b8352f0546fe50dff Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Mon, 7 Apr 2025 11:20:03 +0800 Subject: [PATCH 12/13] firewalld: add NIX_FIREWALLD_CONFIG_PATH --- .../fi/firewalld/add-config-path-env-var.patch | 12 ++++++++++++ pkgs/by-name/fi/firewalld/package.nix | 1 + 2 files changed, 13 insertions(+) create mode 100644 pkgs/by-name/fi/firewalld/add-config-path-env-var.patch diff --git a/pkgs/by-name/fi/firewalld/add-config-path-env-var.patch b/pkgs/by-name/fi/firewalld/add-config-path-env-var.patch new file mode 100644 index 000000000000..bba877e5593a --- /dev/null +++ b/pkgs/by-name/fi/firewalld/add-config-path-env-var.patch @@ -0,0 +1,12 @@ +--- a/src/firewall/config/__init__.py.in ++++ b/src/firewall/config/__init__.py.in +@@ -80,7 +80,8 @@ + FIREWALLD_POLICIES = path + "/policies" + + +-set_default_config_paths("/usr/lib/firewalld") ++import os ++set_default_config_paths(os.environ.get("NIX_FIREWALLD_CONFIG_PATH", "/usr/lib/firewalld")) + + FIREWALLD_LOGFILE = "/var/log/firewalld" + diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index 466e25285a91..f8606abb4757 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -53,6 +53,7 @@ stdenv.mkDerivation rec { }; patches = [ + ./add-config-path-env-var.patch ./respect-xml-catalog-files-var.patch ./specify-localedir.patch ]; From afd5a4bf7ba952d99ed40f894d848b45a0135fd0 Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Sat, 12 Apr 2025 13:55:07 +0800 Subject: [PATCH 13/13] firewalld: remove linux-only dependencies --- pkgs/by-name/fi/firewalld/package.nix | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/fi/firewalld/package.nix b/pkgs/by-name/fi/firewalld/package.nix index f8606abb4757..59c62cdfd2d8 100644 --- a/pkgs/by-name/fi/firewalld/package.nix +++ b/pkgs/by-name/fi/firewalld/package.nix @@ -83,15 +83,11 @@ stdenv.mkDerivation rec { docbook-xsl-nons glib intltool - ipset - iptables - kmod libxml2 libxslt pkg-config python3 python3.pkgs.wrapPython - sysctl wrapGAppsNoGuiHook ] ++ lib.optionals withGui [ @@ -119,6 +115,20 @@ stdenv.mkDerivation rec { ./autogen.sh ''; + ac_cv_path_MODPROBE = lib.getExe' kmod "modprobe"; + ac_cv_path_RMMOD = lib.getExe' kmod "rmmod"; + ac_cv_path_SYSCTL = lib.getExe' sysctl "sysctl"; + + configureFlags = [ + "--with-iptables=${lib.getExe' iptables "iptables"}" + "--with-iptables-restore=${lib.getExe' iptables "iptables-restore"}" + "--with-ip6tables=${lib.getExe' iptables "ip6tables"}" + "--with-ip6tables-restore=${lib.getExe' iptables "ip6tables-restore"}" + "--with-ebtables=${lib.getExe' iptables "ebtables"}" + "--with-ebtables-restore=${lib.getExe' iptables "ebtables-restore"}" + "--with-ipset=${lib.getExe' ipset "ipset"}" + ]; + postInstall = '' rm -r $out/share/firewalld/testsuite