unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#53270] [PATCH] gnu: Add yubikey-oath-dmenu.
@ 2022-01-14 21:15 John Kehayias via Guix-patches via
  2022-01-14 23:01 ` [bug#53270] [PATCH v2] " John Kehayias via Guix-patches via
  0 siblings, 1 reply; 7+ messages in thread
From: John Kehayias via Guix-patches via @ 2022-01-14 21:15 UTC (permalink / raw)
  To: 53270

[-- Attachment #1: Type: text/plain, Size: 446 bytes --]

Hello!

Here is a patch to add yubikey-oath-dmenu, a handy way to get OATH codes from a Yubikey with a dmenu interface. I use it all the time (though through rofi). It seemed the best place was in the security-token module with similar yubikey packages. This is written in python but meant to run as a program rather than used as a library, so I called it without a python- prefix (and it runs with just non-propagated inputs).

Thanks!
John

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-yubikey-oath-dmenu.patch --]
[-- Type: text/x-patch; name=0001-gnu-Add-yubikey-oath-dmenu.patch, Size: 3987 bytes --]

From dae602f6db781ec71ab79a560b522270f35750cd Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Fri, 14 Jan 2022 16:11:47 -0500
Subject: [PATCH] gnu: Add yubikey-oath-dmenu.

* gnu/packages/security-token.scm (yubikey-oath-dmenu): New variable.
---
 gnu/packages/security-token.scm | 63 +++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 79afdcee47..3a2d88cf8d 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2021 Sergey Trofimov <sarg@sarg.org.ru>
 ;;; Copyright © 2021 Dhruvin Gandhi <contact@dhruvin.dev>
 ;;; Copyright © 2021 Ahmad Jarara <git@ajarara.io>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -53,6 +54,7 @@ (define-module (gnu packages security-token)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libbsd)
@@ -72,7 +74,9 @@ (define-module (gnu packages security-token)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages suckless)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml))
 
 (define-public ccid
@@ -443,6 +447,65 @@ (define-public python-pyscard
 (define-public python2-pyscard
   (package-with-python2 python-pyscard))
 
+(define-public yubikey-oath-dmenu
+  (package
+    (name "yubikey-oath-dmenu")
+    (version "0.13.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emlun/yubikey-oath-dmenu")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1h6dr4l0gzgdg8zn2c39kx9cx1bgvwqxkz3z95qz9r70xfsghgwk"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:tests? #f ; there are no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure) ; no configure script
+          (delete 'build)     ; or build
+          (add-after 'unpack 'fix-paths
+            (lambda _
+              (for-each (lambda (tool)
+                          (substitute* "yubikey-oath-dmenu.py"
+                            (((string-append "'" tool))
+                             (string-append "'" (which tool)))))
+                        (list "dmenu" "notify-send" "wl-copy" "xclip" "xdotool"))))
+          (replace 'install
+            (lambda _
+              (invoke "make" "install"
+                      (string-append "DESTDIR=" #$output)
+                      "PREFIX="))))))
+    (inputs
+     (list dmenu
+           libnotify
+           python-click
+           python-yubikey-manager
+           ;; TODO add wtype, once packaged, for type support for Wayland
+           wl-clipboard ; optional clipboard support for Wayland
+           xclip        ; optional clipboard support for X11
+           xdotool))    ; optional type support for X11
+    (home-page
+     "https://github.com/emlun/yubikey-oath-dmenu/")
+    (synopsis "Interface for getting OATH codes from a YubiKey using dmenu")
+    (description
+     "Yubikey-oath-demenu lets you pick an OATH credential from your YubiKey using
+dmenu, and copies the corresponding OTP to the clipboard.  Alternatively, it
+can \"type\" the OTP using @code{xdotool} on X11.
+
+Notable features:
+
+@itemize
+@item Pick between all credentials on all connected YubiKeys
+@item No mouse interaction required
+@end itemize\n")
+    (license license:gpl3+)))
+
 (define-public libu2f-host
   (package
     (name "libu2f-host")
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-01-24 15:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-14 21:15 [bug#53270] [PATCH] gnu: Add yubikey-oath-dmenu John Kehayias via Guix-patches via
2022-01-14 23:01 ` [bug#53270] [PATCH v2] " John Kehayias via Guix-patches via
2022-01-15 11:27   ` Maxime Devos
2022-01-15 19:52     ` John Kehayias via Guix-patches via
2022-01-24  6:15       ` [bug#53270] [PATCH v3] " John Kehayias via Guix-patches via
2022-01-24  9:10       ` bug#53270: [PATCH] " Ludovic Courtès
2022-01-24 15:46         ` [bug#53270] " John Kehayias via Guix-patches via

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).