From aeeb5ebd00adb6e247a4a5774a8a84f24fb1cfb2 Mon Sep 17 00:00:00 2001 From: Sandro Jäckel Date: Thu, 28 Apr 2022 23:35:46 +0200 Subject: firewalld: init at 1.1.1 --- pkgs/applications/networking/firewalld/default.nix | 104 +++++++++++++++++++++ .../firewalld/respect-xml-catalog-files-var.patch | 13 +++ 2 files changed, 117 insertions(+) create mode 100644 pkgs/applications/networking/firewalld/default.nix create mode 100644 pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patch (limited to 'pkgs/applications') diff --git a/pkgs/applications/networking/firewalld/default.nix b/pkgs/applications/networking/firewalld/default.nix new file mode 100644 index 00000000000..825222783e3 --- /dev/null +++ b/pkgs/applications/networking/firewalld/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, bash +, docbook_xml_dtd_42 +, docbook-xsl-nons +, glib +, gobject-introspection +, gtk3 +, intltool +, libnotify +, libxml2 +, libxslt +, networkmanager-applet +, pkg-config +, python3 +, wrapGAppsNoGuiHook +, withGui ? false +}: + +let + pythonPath = python3.withPackages (ps: with ps; [ + dbus-python + nftables + pygobject3 + ] ++ lib.optionals withGui [ + pyqt5 + pyqt5_sip + ]); +in +stdenv.mkDerivation rec { + pname = "firewalld"; + version = "1.1.1"; + + src = fetchFromGitHub { + owner = "firewalld"; + repo = "firewalld"; + rev = "v${version}"; + sha256 = "sha256-w8TbovIhOhJAUZWbKdBd/+db8Hro/ttlxWZDcrCXX4Q="; + }; + + patches = [ + ./respect-xml-catalog-files-var.patch + ]; + + postPatch = '' + substituteInPlace src/firewall/config/__init__.py.in \ + --replace "/usr/share" "$out/share" + + for file in config/firewall-{applet,config}.desktop.in; do + substituteInPlace $file \ + --replace "/usr/bin/" "$out/bin/" + done + '' + lib.optionalString withGui '' + substituteInPlace src/firewall-applet.in \ + --replace "/usr/bin/nm-connection-editor" "${networkmanager-applet}/bin/nm-conenction-editor" + ''; + + nativeBuildInputs = [ + autoreconfHook + docbook_xml_dtd_42 + docbook-xsl-nons + glib + intltool + libxml2 + libxslt + pkg-config + python3 + python3.pkgs.wrapPython + ] ++ lib.optionals withGui [ + gobject-introspection + wrapGAppsNoGuiHook + ]; + + buildInputs = [ + bash + glib + ] ++ lib.optionals withGui [ + gtk3 + libnotify + pythonPath + ]; + + dontWrapGApps = true; + + preFixup = lib.optionalString withGui '' + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + ''; + + 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 + wrapPythonProgramsIn "$out/bin" "$out ${pythonPath}" + wrapPythonProgramsIn "$out/share/firewalld/testsuite/python" "$out ${pythonPath}" + ''; + + meta = with lib; { + description = "Firewall daemon with D-Bus interface"; + homepage = "https://github.com/firewalld/firewalld"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ SuperSandro2000 ]; + }; +} diff --git a/pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patch b/pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patch new file mode 100644 index 00000000000..03a10121c6b --- /dev/null +++ b/pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patch @@ -0,0 +1,13 @@ +--- a/m4/jh_path_xml_catalog.m4 ++++ b/m4/jh_path_xml_catalog.m4 +@@ -40,8 +40,8 @@ AC_DEFUN([JH_CHECK_XML_CATALOG], + [ + AC_REQUIRE([JH_PATH_XML_CATALOG],[JH_PATH_XML_CATALOG(,[:])])dnl + AC_MSG_CHECKING([for ifelse([$2],,[$1],[$2]) in XML catalog]) +- if $jh_found_xmlcatalog && \ +- AC_RUN_LOG([$XMLCATALOG --noout "$XML_CATALOG_FILE" "$1" >&2]); then ++ # empty argument forces libxml to use XML_CATALOG_FILES variable ++ if AC_RUN_LOG([$XMLCATALOG --noout "" "$1" >&2]); then + AC_MSG_RESULT([found]) + ifelse([$3],,,[$3 + ])dnl -- cgit 1.4.1