aboutsummaryrefslogtreecommitdiff
path: root/gnu/services/security-token.scm
blob: 354549b33c5c0f5e49a9e62a9da44884a3d33551 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(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>
  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
    (($ <pcscd-configuration> 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 _
                   (invoke #$(file-append pcsc-lite "/sbin/pcscd"))
                   (call-with-input-file "/var/run/pcscd/pcscd.pid" read)))
        (stop #~(make-kill-destructor)))))))

(define pcscd-activation
  (match-lambda
    (($ <pcscd-configuration> 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))))
.scm: Likewise. * gnu/packages/video.scm: Likewise. * gnu/packages/wm.scm: Likewise. * gnu/packages/emulators.scm: Likewise. Reviewed-by: Ludovic Courtès <ludo@gnu.org> Maxim Cournoyer 2023-09-01gnu: patman: Fix execution....Before this change, patman would fail at run time with "AttributeError: module 'patman.__main__' has no attribute 'run_patman'" since the last U-Boot update. * gnu/packages/bootloaders.scm (patman) [arguments] <phases>: New patch-pyproject.toml phase. Maxim Cournoyer 2023-07-23gnu: fuse@3: Bind to default FUSE variable....* gnu/packages/linux.scm (fuse): Rename this… (fuse-2): …to this, and… (fuse-3): …rename this… (fuse): …to this! (fuse-static): Rename this… (fuse-2-static): …to this. Adjust all users. Tobias Geerinckx-Rice 2023-07-20gnu: bootloaders: Avoid top-level circular references....Fixes <https://issues.guix.gnu.org/64745>. The regression was introduced in ed5dc3a25d858a394bb7db937a51d866c3cdc6ed: at the top level, bootloaders.scm and firmware.scm would depend on each other, leading to unbound variables when loaded, depending on the order in which they got loaded. * gnu/packages/bootloaders.scm (make-u-boot-sunxi64-package): Expect 'scp-firmware' to be a promise; force it in 'native-inputs'. (u-boot-pine64-plus, u-boot-pine64-lts, u-boot-pinebook): Wrap the 3rd argument to 'make-u-boot-sunxi64-package' into 'delay'. Reported-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Ludovic Courtès 2023-07-19gnu: patman: Add python-u-boot-pylib to inputs....* gnu/packages/bootloaders.scm (patman) [inputs]: Add python-u-boot-pylib. [phases]: Remove 'sanity-check. Signed-off-by: Vagrant Cascadian <vagrant@debian.org> Maxim Cournoyer 2023-07-19gnu: Add python-u-boot-pylib....* gnu/packages/bootloaders.scm (python-u-boot-pylib): New variable. * gnu/packages/patches/u-boot-fix-u-boot-lib-build.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it. Signed-off-by: Vagrant Cascadian <vagrant@debian.org> Maxim Cournoyer 2023-07-19gnu: u-boot: Add crust firmware to pinebook, pine64_plus and pine64-lts....* gnu/packages/bootloaders.scm (make-u-boot-sunxi64-package): Take argument for System Control Processor (SCP) firmware. [native-inputs]: Add SCP firmware. [phases]: Adjust 'set-environment to also set SCP variable. (u-boot-pine64-plus, u-boot-pine64-lts, u-boot-pinebook): Pass appropriate crust firmware as the SCP firmware. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Vagrant Cascadian 2023-07-19gnu: u-boot: Update to 2023.07.02....* gnu/packages/patches/u-boot-infodocs-target.patch: Delete file. * gnu/packages/patches/u-boot-patman-guix-integration.patch: Delete file. * gnu/local.mk: De-register patches. * gnu/packages/patches/u-boot-allow-disabling-openssl.patch: Refresh. * gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch: Refresh. * gnu/packages/bootloaders.scm (u-boot): Update to 2023.07.02. [native-inputs]: Add python-pyelftools. [source]: Remove patches. (u-boot-tools)[phases]: Update substitution for python3-coverage. Adjust 'patch to catch more openssl incompatibilities. Split lines in 'patch phase. [native-inputs]: Add python-filelock and python-pytest-xdist. (make-u-boot-sunxi64-package): Set SCP environment variable. (u-boot-sifive-unleashed): Update to use opensbi. (u-boot-puma-rk3399)[inputs]: Add arm-trusted-firmware-rk3399 to package-inputs instead of native-inputs. (u-boot-rockpro64-rk3399): Disable CONFIG_SPL_FIT_SIGNATURE in config. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Vagrant Cascadian 2023-07-07gnu: u-boot-ts7970-q-2g-1000mhz-c: Fix build....* gnu/packages/bootloaders.scm (u-boot-ts-mx6) [arguments]: Replace adjust-for-gcc10 phase with adjust-for-current-gcc. Maxim Cournoyer 2023-07-07gnu: u-boot: Remove extraneous space....* gnu/packages/bootloaders.scm (u-boot) [build-system]: Remove extraneous space. Maxim Cournoyer