Subject: [PATCH] gnu: Add ausweisapp2.

From: Sergey Trofimov <[email-masked]>
Date: Sun, 13 Jun 2021 09:18:37 +0200

---
 gnu/packages/security-token.scm | 55 +++++++++++++++++++++++++++++++++
 guix/licenses.scm               |  6 ++++
 2 files changed, 61 insertions(+)

diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 89783de965..da1334f1bf 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -34,6 +34,7 @@
   #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cargo)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python)
@@ -56,6 +57,7 @@
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages perl)
@@ -720,3 +722,56 @@ an unprivileged user.")
 for interaction with Nitrokey Pro, Nitrokey Storage, and Librem Key
 devices.")
     (license license:gpl3+)))
+
+(define-public ausweisapp2
+  (package
+    (name "ausweisapp2")
+    (version "1.22.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/Governikus/AusweisApp2/releases"
+                                  "/download/" version "/AusweisApp2-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1qh1m057va7njs3yk0s31kwsvv44fjlsdac6lhiw5npcwssgjn8l"))))
+
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (inputs `(("qtbase" ,qtbase)
+              ("qtsvg" ,qtsvg)
+              ("qtdeclarative" ,qtdeclarative)
+              ("qtwebsockets" ,qtwebsockets)
+              ("qtgraphicaleffects" ,qtgraphicaleffects)
+              ("qtquickcontrols2" ,qtquickcontrols2)
+              ("pcsc-lite" ,pcsc-lite)
+              ("openssl" ,openssl)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/AusweisApp2")
+                 `("QT_PLUGIN_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/plugins"))
+                         '("qtbase" "qtdeclarative"
+                           "qtsvg" "qtwebsockets")))
+                 `("QML2_IMPORT_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/qml"))
+                         '("qtdeclarative" "qtgraphicaleffects"
+                           "qtquickcontrols2" "qtsvg"))))
+               #t))))))
+    (home-page "https://github.com/Governikus/AusweisApp2")
+    (synopsis
+     "Official authentication app for German ID cards and residence permits")
+    (description
+     "This app is developed and issued by the German government to be used for online
+authentication with electronic German ID cards and residence titles. To use this app,
+a supported RFID card reader or NFC-enabled smart phone is required.")
+    (license license:eupl1.2)))
diff --git a/guix/licenses.scm b/guix/licenses.scm
index e7457799ce..c455cc8c39 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -56,6 +56,7 @@
             edl1.0
             epl1.0
             epl2.0
+            eupl1.2
             expat
             freetype
             freebsd-doc
@@ -307,6 +308,11 @@ at URI, which may be a file:// URI pointing the package's tree."
            "https://www.eclipse.org/legal/epl-2.0/"
            "https://www.gnu.org/licenses/license-list#EPL2"))
 
+(define eupl1.2
+  (license "EUPL 1.2"
+           "https://directory.fsf.org/wiki/License:EUPL-1.2"
+           "https://www.gnu.org/licenses/license-list#EPL2"))
+
 (define expat
   (license "Expat"
            "http://directory.fsf.org/wiki/License:Expat"
-- 
2.32.0