;;; 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)))) ry, python-coverage, python2-coverage, python-cov-core, python2-cov-core, python-testpath, python2-testpath, python-testlib, python2-testlib, python-pytest-cache, python2-pytest-cache, python-pytest-localserver, python-pytest-xprocess, python-pytest-subtesthack, python2-pytest-subtesthack, python-hypothesis, python2-hypothesis, python-lit, python2-lit, python-pytest-pep8, python2-pytest-pep8, python-pytest-flakes, python2-pytest-flakes, python2-coverage-test-runner, python-pylint, python2-pylint, python-paramunittest, python2-python-paramunittest, python-pytest-warnings, python2-pytest-warnings, python-pytest-capturelog, python2-pytest-capturelog, python-pytest-catchlog, python2-pytest-catchlog, python-nosexcover, python2-nosexcover, python-discover, python2-discover, behave, python-rednose, python2-rednose, python-nose-randomly, python2-nose-randomly, python-nose-timer, python2-nose-timer): Move from here... * gnu/packages/check.scm: ...to here. * gnu/packages/admin.scm, gnu/packages/android.scm, gnu/packages/backup.scm, gnu/packages/bioinformatics.scm, gnu/packages/calendar.scm, gnu/packages/dav.scm, gnu/packages/django.scm, gnu/packages/freedesktop.scm, gnu/packages/haskell.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/jrnl.scm, gnu/packages/ldc.scm, gnu/packages/libffi.scm, gnu/packages/mail.scm, gnu/packages/mpd.scm, gnu/packages/openstack.scm, gnu/packages/package-management.scm, gnu/packages/password-utils.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/rdf.scm, gnu/packages/statistics.scm, gnu/packages/storage.scm, gnu/packages/time.scm, gnu/packages/tls.scm, gnu/packages/tor.scm, gnu/packages/tryton.scm: Adjust accordingly.