Subject: [bug#53815] [PATCH 1/3] gnu: Add libnitrokey.

From: phodina <[email-masked]>
Date: Sun, 06 Feb 2022 07:46:46 +0000

Hi,

Here are patches which add GUI tool to interface with Nitrokey hardware token.

----
Petr

From 0907f7ae8cbd244400cfa1a1f1c50ede9a941d8d Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Sat, 5 Feb 2022 23:25:44 +0100
Subject: [PATCH 1/3] gnu: Add libnitrokey.

* gnu/packages/security-token.scm (libnitrokey): New variable.

diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 8190e1e1e2..d9c2c7f254 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2021 Dhruvin Gandhi <[email-masked]>
 ;;; Copyright © 2021 Ahmad Jarara <[email-masked]>
 ;;; Copyright © 2022 John Kehayias <[email-masked]>
+;;; Copyright © 2022 Petr Hodina <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -723,6 +724,39 @@ (define-public python-yubikey-manager
 an unprivileged user.")
     (license license:bsd-2)))
 
+(define-public libnitrokey
+  (package
+    (name "libnitrokey")
+    (version "3.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Nitrokey/libnitrokey")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              ;; unbundle vendored hidapi library
+              (snippet '(begin
+                          (delete-file-recursively "hidapi")))
+              (sha256
+               (base32
+                "0ngrvv61d36vvfwrfg0qxmp2wg18v4aaldwvwzgxvwaysjswhn9r"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-hidapi-include
+           (lambda* _
+             (substitute* "CMakeLists.txt"
+               (("include_directories\\(hidapi\\)") "")))))))
+    (native-inputs (list pkg-config))
+    (inputs (list hidapi libusb))
+    (home-page "https://github.com/Nitrokey/libnitrokey")
+    (synopsis "Communication library for Nitrokey")
+    (description "This packate provides communication library for Nitrokey.")
+    (license license:lgpl3)))
+
 (define-public nitrocli
   (package
     (name "nitrocli")
-- 
2.34.0

From 84574de5c7c4c74e914c223586269a955e4202e8 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Sat, 5 Feb 2022 23:26:36 +0100
Subject: [PATCH 2/3] gnu: Add cppcodec.

* gnu/packages/crates-io.scm (cppcodec): New variable.

diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index d9c2c7f254..1188df5348 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -757,6 +757,30 @@ (define-public libnitrokey
     (description "This packate provides communication library for Nitrokey.")
     (license license:lgpl3)))
 
+(define-public cppcodec
+  (package
+    (name "cppcodec")
+    (version "0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tplgy/cppcodec")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0z39f8w0zvra874az0f67ck1al9kbpaidpilggbl8jnfs05010ck"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ;no test suite
+    (native-inputs (list pkg-config qttools))
+    (inputs (list catch-framework2))
+    (home-page "https://github.com/tplgy/cppcodec")
+    (synopsis "Header only C++11 library to encode/decode base64, etc.")
+    (description "This package provide header-only C++11 library to
+encode/decode base64, base64url, base32, base32hex and hex.")
+    (license license:expat)))
+
 (define-public nitrocli
   (package
     (name "nitrocli")
-- 
2.34.0

From eef718af2c1218aebb1999acab864e281a945ac9 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Sat, 5 Feb 2022 23:27:06 +0100
Subject: [PATCH 3/3] gnu: Add nitrokey-app.

* gnu/packages/crates-io.scm (nitrokey-app): New variable.

diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 1188df5348..d7e39ad475 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -781,6 +781,36 @@ (define-public cppcodec
 encode/decode base64, base64url, base32, base32hex and hex.")
     (license license:expat)))
 
+(define-public nitrokey-app
+  (package
+    (name "nitrokey-app")
+    (version "1.4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Nitrokey/nitrokey-app")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1imbvaf0yncz36ckjr99x94jwg2hnid49hsiqlxsv7ccxgk058bk"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ;no test suite
+    (native-inputs (list pkg-config qttools))
+    (inputs (list cppcodec
+                  hidapi
+                  libnitrokey
+                  libusb
+                  qtbase-5
+                  qtsvg))
+    (home-page "https://github.com/Nitrokey/nitrokey-app")
+    (synopsis "GUI tool for Nitrokey devices")
+    (description
+     "This package provides GUI tool that interfaces with Nitrokey Pro
+v0.7/v0.8 and Nitrokey Storage devices.")
+    (license license:gpl3+)))
+
 (define-public nitrocli
   (package
     (name "nitrocli")
-- 
2.34.0