;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Arun Isaac ;;; Copyright © 2020 Tobias Geerinckx-Rice ;;; Copyright © 2021 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu services security-token) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu packages admin) #:use-module (gnu packages base) #:use-module (gnu packages security-token) #:use-module (gnu system shadow) #:use-module (guix gexp) #:use-module (guix modules) #:use-module (guix records) #:use-module (ice-9 match) #:use-module (srfi srfi-26) #:export (pcscd-configuration pcscd-configuration? pcscd-configuration-pcsc-lite pcscd-configuration-usb-drivers pcscd-service-type)) ;;; ;;; PC/SC Smart Card Daemon ;;; (define-record-type* pcscd-configuration make-pcscd-configuration pcscd-configuration? (pcsc-lite pcscd-configuration-pcsc-lite (default pcsc-lite)) (usb-drivers pcscd-configuration-usb-drivers (default (list ccid)))) (define pcscd-shepherd-service (match-lambda (($ pcsc-lite) (with-imported-modules (source-module-closure '((gnu build shepherd))) (shepherd-service (documentation "PC/SC Smart Card Daemon") (provision '(pcscd)) (requirement '(syslogd)) (modules '((gnu build shepherd))) (start #~(lambda _ (let ((socket "/run/pcscd/pcscd.comm")) (when (file-exists? socket) (delete-file socket))) (fork+exec-command (list #$(file-append pcsc-lite "/sbin/pcscd") "--foreground") #:log-file "/var/log/pcscd.log"))) (stop #~(make-kill-destructor))))))) (define pcscd-activation (match-lambda (($ pcsc-lite usb-drivers) (with-imported-modules (source-module-closure '((guix build utils))) #~(begin (use-modules (guix build utils)) ;; XXX: We can't use (guix utils) because it requires a ;; dynamically-linked Guile, hence the duplicate switch-symlinks. (define (switch-symlinks link target) (let ((pivot (string-append link ".new"))) (symlink target pivot) (rename-file pivot link))) (mkdir-p "/var/lib") (switch-symlinks "/var/lib/pcsc" #$(directory-union "pcsc" (map (cut file-append <> "/pcsc") usb-drivers)))))))) (define pcscd-service-type (service-type (name 'pcscd) (description "Run @command{pcscd}, the PC/SC smart card daemon.") (extensions (list (service-extension shepherd-root-service-type (compose list pcscd-shepherd-service)) (service-extension activation-service-type pcscd-activation))) (default-value (pcscd-configuration)))) -avail'>...Thiago Jung Bauermann 2021-05-10.gitignore: Ignore .mo files....Maxim Cournoyer 2021-05-05.gitignore: Ignore .tarball-ignore....Maxim Cournoyer 2021-04-23.gitignore: Ignore release artifacts....Maxim Cournoyer 2021-04-23.gitignore: Ignore generated .pot files....Maxim Cournoyer 2020-10-20gitignore: Ignore generated guile binary and intermediate products....Julien Lepiller 2020-09-17guix-install.sh: Support OpenRC....Morgan Smith 2020-07-17gitignore: Don't ignore daemon source code....Jakub Kądziołka 2020-06-28.gitignore: Ignore 'etc/committer.scm'....Brice Waegeneire 2020-05-16etc: Add a systemd unit to bind-mount @storedir@ read-only....Tobias Geerinckx-Rice 2020-05-14etc: indent-code.el: Use the --quick option....Maxim Cournoyer 2020-03-30.gitignore: Ignore test results in tests/services....Marius Bakke 2020-03-11Add system start-up files for guix-daemon....Danny Milosavljevic