Subject: [PATCH] gnu: Add network-manager-fortisslvpn.

From: Arjan Adriaanse <[email-masked]>
Date: Sun, 27 Nov 2022 22:57:42 +0100

* gnu/packages/gnome.scm (network-manager-fortisslvpn): New variable.
---

This package can be used as VPN plugin in the NetworkManager service
and its definition is based on the other VPN plugin packages.

gnu/packages/gnome.scm | 62 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index f81b44cca2..ec16ae042a 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -72,6 +72,7 @@
 ;;; Copyright © 2022 Leo Nikkilä <[email-masked]>
 ;;; Copyright © 2022 Rene Saavedra <[email-masked]>
 ;;; Copyright © 2022 Alexandros Theodotou <[email-masked]>
+;;; Copyright © 2022 Arjan Adriaanse <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -8710,6 +8711,67 @@ (define-public network-manager-openconnect
                   ;; so that 'network-manager-service-type' creates it.
                   (user-accounts . ("nm-openconnect"))))))
 
+(define-public network-manager-fortisslvpn
+    (package
+    (name "network-manager-fortisslvpn")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://gnome/sources/NetworkManager-fortisslvpn/"
+                    (version-major+minor version)
+                    "/NetworkManager-fortisslvpn-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1ynsqmv8xz1cffnai4hfh0ab0dmlazpv72krhlsv45mm95iy4mdh"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile.in"
+                  ;; do not try to make state directory
+                  (("\\$\\(DESTDIR\\)\\$\\(fortisslvpn_statedir\\)") "")
+                  ;; use state directory of the NetworkManager service
+                  (("\\$\\(fortisslvpn_statedir\\)")
+                   "/var/lib/NetworkManager")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-absolute-paths"
+                           "--localstatedir=/var"
+                           "--with-gtk4=yes")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((ovpn (search-input-file inputs "/bin/openfortivpn"))
+                    (pretty-ovpn (string-append "\"" ovpn "\"")))
+               (for-each
+                (lambda (file)
+                  (substitute* file
+                    (("\"/usr/local/bin/openfortivpn\"") pretty-ovpn)
+                    (("\"/usr/bin/openfortivpn\"") pretty-ovpn)))
+                '("src/nm-fortisslvpn-service.c"
+                  "properties/nm-fortisslvpn-editor.c"))))))))
+    (native-inputs
+     (list intltool
+           `(,glib "bin")
+           pkg-config))
+    (inputs
+     (list gtk+
+           gtk
+           kmod
+           libnma
+           libsecret
+           network-manager
+           openfortivpn
+           pango-next                   ;TODO: remove after it's the default
+           ppp))
+    (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
+    (synopsis "Fortinet SSLVPN plug-in for NetworkManager")
+    (description
+     "This extension of NetworkManager allows it to take care of connections
+to virtual private networks (VPNs) via Fortinet SSLVPN.")
+    (license license:gpl2+)
+    (properties `((upstream-name . "NetworkManager-fortisslvpn")))))
+
 (define-public mobile-broadband-provider-info
   (package
     (name "mobile-broadband-provider-info")

base-commit: e75e699ec30fd7d9eab50dd2c98a3a25fe50ffc0
-- 
2.38.1