1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6
7 cfg = config.services.fprintd;
8 fprintdPkg = if cfg.tod.enable then pkgs.fprintd-tod else pkgs.fprintd;
9
10in
11
12
13{
14
15 ###### interface
16
17 options = {
18
19 services.fprintd = {
20
21 enable = mkEnableOption (lib.mdDoc "fprintd daemon and PAM module for fingerprint readers handling");
22
23 package = mkOption {
24 type = types.package;
25 default = fprintdPkg;
26 defaultText = literalExpression "if config.services.fprintd.tod.enable then pkgs.fprintd-tod else pkgs.fprintd";
27 description = lib.mdDoc ''
28 fprintd package to use.
29 '';
30 };
31
32 tod = {
33
34 enable = mkEnableOption (lib.mdDoc "Touch OEM Drivers library support");
35
36 driver = mkOption {
37 type = types.package;
38 example = literalExpression "pkgs.libfprint-2-tod1-goodix";
39 description = lib.mdDoc ''
40 Touch OEM Drivers (TOD) package to use.
41 '';
42 };
43 };
44 };
45 };
46
47
48 ###### implementation
49
50 config = mkIf cfg.enable {
51
52 services.dbus.packages = [ cfg.package ];
53
54 environment.systemPackages = [ cfg.package ];
55
56 systemd.packages = [ cfg.package ];
57
58 systemd.services.fprintd.environment = mkIf cfg.tod.enable {
59 FP_TOD_DRIVERS_DIR = "${cfg.tod.driver}${cfg.tod.driver.driverPath}";
60 };
61
62 };
63
64}