{
  lib,
  pkgs,
  config,
  ...
}: let
  inherit (lib.modules) mkIf mkForce;
in {
  services.fprintd.enable = true;

  security.sudo.wheelNeedsPassword = mkForce true;

  security.pam.services = {
    sudo.fprintAuth = true;
    login.fprintAuth = true;

    gdm-fingerprint = mkIf config.services.xserver.displayManager.gdm.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.gdm}/lib/security/pam_gdm.so
        auth       optional                    ${pkgs.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
      '';
    };
  };
}