at 15.09-beta 1.0 kB view raw
1{ config, lib, pkgs, ... }: 2 3let 4 cfgFile = pkgs.writeText "reader.conf" ""; 5in 6 7with lib; 8 9{ 10 11 ###### interface 12 13 options = { 14 15 services.pcscd = { 16 17 enable = mkOption { 18 default = false; 19 description = "Whether to enable the PCSC-Lite daemon."; 20 }; 21 22 }; 23 24 }; 25 26 27 ###### implementation 28 29 config = mkIf config.services.pcscd.enable { 30 31 systemd.sockets.pcscd = { 32 description = "PCSC-Lite Socket"; 33 wantedBy = [ "sockets.target" ]; 34 before = [ "multi-user.target" ]; 35 socketConfig.ListenStream = "/run/pcscd/pcscd.comm"; 36 }; 37 38 systemd.services.pcscd = { 39 description = "PCSC-Lite daemon"; 40 preStart = '' 41 mkdir -p /var/lib/pcsc 42 rm -Rf /var/lib/pcsc/drivers 43 ln -s ${pkgs.ccid}/pcsc/drivers /var/lib/pcsc/ 44 ''; 45 serviceConfig = { 46 Type = "forking"; 47 ExecStart = "${pkgs.pcsclite}/sbin/pcscd --auto-exit -c ${cfgFile}"; 48 ExecReload = "${pkgs.pcsclite}/sbin/pcscd --hotplug"; 49 }; 50 }; 51 52 }; 53 54}