{ config, lib, pkgs, ... }: { # Enable fingerprint using fprintd services.fprintd = { enable = true; package = pkgs.fprintd-tod; tod = { enable = true; driver = pkgs.libfprint-2-tod1-vfs0090; }; }; services.gnome.gnome-online-accounts.enable = lib.mkForce false; services.gnome.gnome-keyring.enable = lib.mkForce false; # PAM login hacks to allow password + fingerprint login # ref: https://github.com/NixOS/nixpkgs/issues/171136#issuecomment-1627779037 security.pam.services.login.fprintAuth = false; security.pam.services.gdm-fingerprint = lib.mkIf (config.services.fprintd.enable) { text = '' auth required pam_shells.so auth requisite pam_nologin.so auth requisite pam_faillock.so preauth auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so auth optional pam_permit.so auth required pam_env.so auth [success=ok default=1] ${pkgs.gnome.gdm}/lib/security/pam_gdm.so auth optional ${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so account include login password required pam_deny.so session include login session optional ${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start ''; }; security.sudo.extraConfig = '' Defaults timestamp_timeout=500 Defaults timestamp_type=global ''; security.pam.services.gdm.enableGnomeKeyring = true; }