aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2022 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;;
;;; 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)
     (shepherd-service
      (documentation "PC/SC Smart Card Daemon")
      (provision '(pcscd))
      (requirement '(syslogd))
      (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
    (($ <pcscd-configuration> pcsc-lite usb-drivers)
     (with-imported-modules (source-module-closure
                             '((guix build utils)))
       #~(begin
           (use-modules (guix build utils))

           (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))))
00'>2024-10-12home: services: Add 'home-sway-service-type'....* gnu/home/services/sway.scm: New file. (home-sway-service-type): New variable. (sway-configuration->file): New procedure. (sway-configuration): New configuration record. (sway-bar): New configuration record. (sway-output): New configuration record. (sway-input): New configuration record. (point): New configuration record. (sway-color): New configuration record. (sway-border-color): New configuration record. (sway-mode): New configuration record. (flatmap): New procedure. * gnu/local.mk: Add gnu/home/services/sway.scm. * doc/guix.texi (Sway window manager): New node to document the above changes. Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de> Change-Id: I880261570c5afdb795f2ce18bac2b9a5c898677f Arnaud Daby-Seesaram 2024-09-29home: xdg-mime-applications: Fix file name spelling....* gnu/home/services/xdg.scm (home-xdg-mime-applications-xdg-files): Fix spelling mistake. Signed-off-by: Hilton Chain <hako@ultrarare.space> Change-Id: Ibd0f68a857dc78b66db8b0a16bd418ee787fa467 Nicolas Graves 2024-09-16home: services: shepherd: Replace use of deprecated ‘action’ procedure....This is a followup to 1964531ce5365d6744e3909960e9d608be624228. * gnu/home/services/shepherd.scm (home-shepherd-configuration-file): Use ‘perform-service-action’ rather than ‘action’. Change-Id: I669750c319083836416c3e093c112ebfeba32e64 Ludovic Courtès 2024-09-04home: services: channels: Remove duplicate channels....* gnu/home/services/guix.scm (extend-channel-list): Add function. (home-channels-service-type)[extend]: Use extend-channel-list. Change-Id: I587207b86216f075a54b6ed0b8fa998896bbed74 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Nicolas Graves 2024-08-28home: services: Add home-beets-service-type....* gnu/home/services/music.scm: New file. * gnu/local.mk: Add this. * doc/guix.texi: Document this. Change-Id: Idc23a68276cb3fb07733bb38bc38b1c5a63c1d6a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Fabio Natali 2024-08-18home: Fix typo in parcimonie configuration....* gnu/home/services/gnupg.scm (<home-parcimonie-configuration>) [gnupg-aleady-torified?]: Rename to ‘gnupg-already-torified?’. Change-Id: I0687f67a5cef410b8b1d579c57b318b9d269e0d0 Tobias Geerinckx-Rice 2024-07-26home: Set 700 permissions on .gnupg with home-gpg-agent-service...* gnu/home/services/gnupg.scm (gpg-agent-activation): New variable. (home-gpg-agent-service-type) [extensions]: Extend home-activation-service-type. Change-Id: If3365c6cade2b03ee53a466ce1d63a5cdf654d6c Signed-off-by: Ludovic Courtès <ludo@gnu.org> Richard Sent 2024-05-30home: services: Add home-startx-command-service-type....* gnu/home/services/desktop.scm (home-startx-command-service-type): New variable. (startx-command-service-type): New service-type mapping. * doc/guix.texi (Guix Home Services): Document home-startx-command-service-type. Change-Id: Id38b5dc7b9235e04e3a9a1b70a35b02e8fae95f0 Signed-off-by: Arun Isaac <arunisaac@systemreboot.net> Tomas Volf 2024-04-29home: services: bash: Move default PS1 prompt to bashrc...Fixes <https://issues.guix.gnu.org/70164>. * home/services/shells.scm (add-bash-configuration): Move default PS1 prompt from .bash_profile to .bashrc. Change-Id: Ic437458ee362cc4aa803a71c9962af866749f59a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Richard Sent 2024-04-17services: Add the Guix Home service....This patch adds a Guix Home service, which allows for configuring/deploying an operating-system declaration with an associated home-environment. * gnu/services/guix.scm: Add guix-home-service and guix-home-shepherd-service * gnu/home/services/shepherd.scm: Don't attempt to launch user shepherd when the system shepherd runs guix-home-<user> * doc/guix.texi: Add documentation for guix-home-service * gnu/tests/guix.scm: Add a test to verify guix-home-service-type is able to activate a home environment Change-Id: Ifbcc0878d934aa4abe34bb2123b5081fb432aa8e Signed-off-by: Ludovic Courtès <ludo@gnu.org> Richard Sent 2024-03-27home: services: bash: Reorder aliases....Reported in <https://issues.guix.gnu.org/67652>. * home/services/shells.scm (add-bash-configuration): Reorder aliases. Change-Id: I288856bb6befe378ca60ef78578acc069cb18532 Reported-by: Atte Torri <atte.torri@universite-paris-saclay.fr> Signed-off-by: Hilton Chain <hako@ultrarare.space> Jason Darby 2024-03-21services: shepherd: Load each service file in a fresh module....Fixes <https://issues.guix.gnu.org/67649>. * gnu/home/services/shepherd.scm (home-shepherd-configuration-file)[config]: Define ‘make-user-module’. Call ‘load’ in ‘save-module-excursion’. * gnu/services/shepherd.scm (shepherd-configuration-file): Likewise. Reported-by: Attila Lendvai <attila@lendvai.name> Change-Id: I7df11c81b5bbbf2b24a8daa02502a000e0826fe0 Ludovic Courtès 2024-03-06gnu: home: dotfiles: Properly support both plain and Stow directory layouts....Fixes <https://issues.guix.gnu.org/68848>. The current implementation of the home-dotfiles-service-type contradicts the Guix manual. This patch properly implements both the plain and Stow dotfiles directory layouts. It does so by refactoring home-dotfiles-configuration adding a new packages field to support GNU Stow's users workflow and introducing a new layout field to switch between the two directory layouts. * gnu/home/services/dotfiles (home-dotfiles-configuration): Migrate to (gnu services configuration); [packages]: new field; [layout]: new field; (strip-stow-dotfile): new variable; (strip-plain-dotfile): new variable; (home-dotfiles-configuration->files): use the new fields; [directory-contents]: allow for selecting a subset of application dotfile directories; * doc/guix.texi: document the new layouts. Change-Id: I2e96037608353e360828290f055ec5271cfdfd48 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Giacomo Leidi 2024-02-19home: symlink-manager: Allow busy device skip....* gnu/home/services/symlink-manager.scm (update-symlinks-script): Allow busy device skip. Change-Id: Iff91c8a30309d25c02a8311d8d5ddbf54e90f5ad Signed-off-by: Ludovic Courtès <ludo@gnu.org> Nicolas Graves 2024-01-28home: Add home-dotfiles-service....* gnu/home/service/dotfiles.scm: New file; * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * po/guix/POTFILES.in: Add it. * doc/guix.texi (Essential Home Services): Document it. Change-Id: I6769169cfacefc3842faa5b31bee081c56c28743 Co-authored-by: Ludovic Courtès <ludo@gnu.org> Giacomo Leidi