about summary refs log tree commit diff
path: root/home/yubikey
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2023-03-12 18:38:54 -0700
committerFranck Cuny <franck@fcuny.net>2023-03-12 18:38:54 -0700
commitd6a1385cfd91a51868dfada051b019aafd2efa94 (patch)
treed663802dc2033591f278d69679205e5473930bc7 /home/yubikey
parenthome/secrets: delete the one for gcloud (diff)
downloadworld-d6a1385cfd91a51868dfada051b019aafd2efa94.tar.gz
home/yubikey: install (and run) yubikey-touch-detector
This is a useful tool to know when I'm supposed to touch my
yubikey (sometimes I forget that some actions require that).

Also configure a systemd unit to run it, and configure it to send a
notification to the desktop (at the moment this is consumed by mako).
Diffstat (limited to 'home/yubikey')
-rw-r--r--home/yubikey/default.nix26
1 files changed, 25 insertions, 1 deletions
diff --git a/home/yubikey/default.nix b/home/yubikey/default.nix
index 640ed09..d4b73d5 100644
--- a/home/yubikey/default.nix
+++ b/home/yubikey/default.nix
@@ -7,6 +7,30 @@ in
   };
 
   config = lib.mkIf cfg.enable {
-    home.packages = with pkgs; [ yubikey-manager ];
+    home.packages = with pkgs; [ yubikey-manager yubikey-touch-detector ];
+
+    systemd.user.sockets.yubikey-touch-detector = {
+      Unit.Description = "Unix socket activation for YubiKey touch detector service";
+      Socket = {
+        ListenStream = "%t/yubikey-touch-detector.socket";
+        RemoveOnStop = true;
+      };
+      Install.WantedBy = [ "sockets.target" ];
+    };
+
+    systemd.user.services.yubikey-touch-detector = {
+      Unit = {
+        Description = "Detects when your YubiKey is waiting for a touch";
+        Requires = "yubikey-touch-detector.socket";
+      };
+      Service = {
+        ExecStart = "${pkgs.yubikey-touch-detector}/bin/yubikey-touch-detector --libnotify";
+        EnvironmentFile = "-%E/yubikey-touch-detector/service.conf";
+      };
+      Install = {
+        Also = "yubikey-touch-detector.socket";
+        WantedBy = [ "default.target" ];
+      };
+    };
   };
 }