{
  config,
  lib,
  pkgs,
  inputs,
  ...
}:

let
  module = inputs.fingerprint-sensor.nixosModules."06cb-009a-fingerprint-sensor";
in
{
  options.modules.fingerprint-fix = {
    enable = lib.mkEnableOption "Enable support for fingerprint for P51S-like ThinkPads.";
    calibDataFile = lib.mkOption {
      description = "Path to calibration data file.";
    };
  };

  imports = [ module ];
  config = lib.mkIf config.modules.fingerprint-fix.enable {
    # Needed because we're getting TLS error with open-fprintd-resume
    systemd.services.validity-restart =
      let
        targets = [
          "suspend.target"
          "hibernate.target"
          "hybrid-sleep.target"
          "suspend-then-hibernate.target"
        ];
      in
      {
        description = "Restart.modules.to fix fingerprint integration";
        wantedBy = targets;
        after = targets;
        serviceConfig.ExecStart = "systemctl restart open-fprintd python3-validity";
      };

    services."06cb-009a-fingerprint-sensor" = {
      enable = true;
      backend = "python-validity";
      calib-data-file = config.modules.fingerprint-fix.calibDataFile;
    };

    security.pam.services.su.fprintAuth = true;
    security.pam.services.sudo.fprintAuth = true;
    security.pam.services.login.fprintAuth = true;
    security.pam.services.greetd.fprintAuth = true;
  };
}
