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

{
	options.services.fingerprint-fix.enable = lib.mkEnableOption "Enable support for fingerprint for P51S-like ThinkPads.";
	options.services.fingerprint-fix.calibDataFile = lib.mkOption {
		description = "Path to calibration data file.";
	};

	imports = [
		inputs.fingerprint-sensor.nixosModules."06cb-009a-fingerprint-sensor"
	];

  	config = lib.mkIf config.services.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 services 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.services.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;
	};
}