at 23.11-pre 1.3 kB view raw
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}