;;; 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)))) Likewise. * gnu/packages/emacs.scm (emacs): Likewise. * gnu/packages/gnome.scm (network-manager): Likewise. * gnu/packages/julia.scm (julia): Likewise. * gnu/packages/linux.scm (alsa-plugins): Likewise. (powertop, wireless-regdb): Likewise. * gnu/packages/package-management.scm (guix): Likewise. * gnu/packages/polkit.scm (polkit): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/services/base.scm (file-systems->fstab): Likewise. * gnu/services/cups.scm (%cups-activation): Likewise. * gnu/services/mail.scm (%dovecot-activation): Likewise. * gnu/services/messaging.scm (prosody-configuration)[log]: Likewise. * gnu/system/examples/vm-image.tmpl (vm-image-motd): Likewise. * gnu/system/install.scm (installation-os)[file-systems]: Change root file system label to "Guix_image". * gnu/system/mapped-devices.scm (check-device-initrd-modules): Remove "GuixSD". * gnu/system/vm.scm (system-docker-image): Likewise. (system-disk-image)[root-label]: Change to "Guix_image". * gnu/tests/install.scm (run-install): Remove "GuixSD". * guix/modules.scm (guix-module-name?): Likewise. * nix/libstore/optimise-store.cc: Likewise. Ludovic Courtès 2019-01-10services: Use 'define-deprecated' for service procedures....* gnu/services/base.scm (urandom-seed-service, gpm-service): Define using 'define-deprecated'. * gnu/services/messaging.scm (bitlbee-service): Likewise. * gnu/services/networking.scm (dhcp-client-service): Likewise. (ntp-service): Likewise. * gnu/services/xorg.scm (slim-service): Likewise. (gdm-service): Likewise. Ludovic Courtès 2018-12-24services: Add quassel....* gnu/services/messaging.scm (<quassel-configuration>): New record type. (%quassel-account, %quassel-activation): New procedures. (quassel-service-type): New variable. * gnu/tests/messaging.scm (%test-quassel): New variable. (run-quassel-test): New procedure. * doc/guix.texi (Messaging): Document quassel service. Efraim Flashner