I've been unable to use my gnuk usb smartcard token with gnupg on GuixSD, and it appears this is because scdaemon is built without libusb support: $ gpg --card-status gpg: selecting openpgp failed: No such device gpg: OpenPGP card not available: No such device Attached is a patch that gets scdaemon working for me and a gnuk... Unfortunately, enabling libusb causes one of the tets to hang indefinitely: PASS: tests/openpgp/decrypt-session-key.scm Checking unwrapping the encryption. > encsig-2-keys-3 encsig-2-keys-4 < PASS: tests/openpgp/decrypt-unwrap-verify.scm Checking signing with the default hash algorithm > So far, I've only been able to get it to work by disabling the tests... so it's obviously not a good idea to enable without further troubleshooting. Another option might be to use pcsc-lite and ccid, but I had even less luck getting that to work. live well, vagrant diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index f397482ab..0e9e72784 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages curl) #:use-module (gnu packages crypto) #:use-module (gnu packages emacs) + #:use-module (gnu packages libusb) #:use-module (gnu packages openldap) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) @@ -232,6 +233,7 @@ compatible to GNU Pth.") ("libgcrypt" ,libgcrypt) ("libgpg-error" ,libgpg-error) ("libksba" ,libksba) + ("libusb" ,libusb) ("npth" ,npth) ("openldap" ,openldap) ("pcsc-lite" ,pcsc-lite) @@ -246,12 +248,17 @@ compatible to GNU Pth.") "--enable-all-tests") #:phases (modify-phases %standard-phases + ;; (delete 'check) (add-before 'configure 'patch-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "scd/scdaemon.c" (("\"(libpcsclite\\.so[^\"]*)\"" _ name) (string-append "\"" (assoc-ref inputs "pcsc-lite") "/lib/" name "\""))) + (substitute* "configure" + (("/usr/include/libusb-1.0") + (string-append (assoc-ref inputs "libusb") + "/include/libusb-1.0"))) #t)) (add-after 'build 'patch-scheme-tests (lambda _