{ pkgs, config, lib, ... }: let cfg = config.jade.hwKey; in with lib; { options.jade.hwKey = { pamAuth.enable = mkEnableOption "Enable PAM authentication with hardware keys"; }; config = { # nitrokey services.udev.packages = [pkgs.nitrokey-udev-rules]; # smartcard daemon services.pcscd.enable = true; # authenticate using hw key security.pam = { services.jade.u2fAuth = cfg.pamAuth.enable; u2f = { enable = true; control = "sufficient"; settings = { cue = true; authFile = "/home/jade/.ssh/u2f_keys"; }; }; }; programs.i3lock.u2fSupport = true; }; }