aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015, 2016, 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 lirc)
  #:use-module (gnu services)
  #:use-module (gnu services shepherd)
  #:use-module (gnu packages lirc)
  #:use-module (guix deprecation)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (ice-9 match)
  #:export (lirc-configuration
            lirc-configuation?
            lirc-service  ; deprecated
            lirc-service-type))

;;; Commentary:
;;;
;;; LIRC service.
;;;
;;; Code:

(define-record-type* <lirc-configuration>
  lirc-configuration make-lirc-configuration
  lirc-configuation?
  (lirc          lirc-configuration-lirc          ;file-like
                 (default lirc))
  (device        lirc-configuration-device        ;string
                 (default #f))
  (driver        lirc-configuration-driver        ;string
                 (default #f))
  (config-file   lirc-configuration-file          ;string | file-like object
                 (default #f))
  (extra-options lirc-configuration-options       ;list of strings
                 (default '())))

(define %lirc-activation
  #~(begin
      (use-modules (guix build utils))
      (mkdir-p "/var/run/lirc")))

(define lirc-shepherd-service
  (match-lambda
    (($ <lirc-configuration> lirc device driver config-file options)
     (list (shepherd-service
            (provision '(lircd))
            (documentation "Run the LIRC daemon.")
            (requirement '(user-processes))
            (start #~(make-forkexec-constructor
                      (list (string-append #$lirc "/sbin/lircd")
                            "--nodaemon"
                            #$@(if device
                                   #~("--device" #$device)
                                   #~())
                            #$@(if driver
                                   #~("--driver" #$driver)
                                   #~())
                            #$@(if config-file
                                   #~(#$config-file)
                                   #~())
                            #$@options)))
            (stop #~(make-kill-destructor)))))))

(define lirc-service-type
  (service-type (name 'lirc)
                (extensions
                 (list (service-extension shepherd-root-service-type
                                          lirc-shepherd-service)
                       (service-extension activation-service-type
                                          (const %lirc-activation))))
                (description "Run LIRC, a daemon that decodes infrared signals
from remote controls.")
                (default-value (lirc-configuration))))

(define-deprecated (lirc-service #:key (lirc lirc)
                       device driver config-file
                       (extra-options '()))
  lirc-service-type
  "Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that
decodes infrared signals from remote controls.

The daemon will use specified @var{device}, @var{driver} and
@var{config-file} (configuration file name).

Finally, @var{extra-options} is a list of additional command-line options
passed to @command{lircd}."
  (service lirc-service-type
           (lirc-configuration
            (lirc lirc)
            (device device) (driver driver)
            (config-file config-file)
            (extra-options extra-options))))

;;; lirc.scm ends here
3-12-18Update cookbook Texinfo menus....Automated via C-c C-u C-a with Emacs. Change-Id: I9e595430529f8f994988c1ac3c919bdaef930dc1 Maxim Cournoyer 2023-10-25doc: cookbook: Fix a broken cross-reference....* doc/guix-cookbook.texi (Building with Guix): Adjust xref target. Change-Id: I87d6dc2648ff8898e3dd3b5ffca748193f14751e Florian Pelz 2023-10-24doc: cookbook: Add cross references to the manual regarding manifests....* doc/guix-cookbook.texi (The benefits of manifests) (Reproducible profiles): Add cross-references. Ludovic Courtès 2023-10-24doc: cookbook: Suggest ‘guix shell’ as an alternative to multiple profiles....Multiple profiles are relatively hard to set up and maintain, especially for newcomers. Thus, suggest ‘guix shell’ as an alternative. * doc/guix-cookbook.texi (Guix Profiles in Practice): Add note linking to ‘guix shell’. (The benefits of manifests): Remove outdated info about ‘guix environment’ and profiles that may be GC’d. Update. Ludovic Courtès 2023-10-11doc: cookbook: Add “Software Development” chapter....* doc/guix-cookbook.texi (Software Development): New chapter. Ludovic Courtès 2023-09-01cookbook: Add a recipe for running Guix System on a Kimsufi server....* doc/guix-cookbook.texi (Running Guix on a Kimsufi Server): New section. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Thomas Ieong 2023-09-01doc: cookbook: Document the configuration of a Yubikey with KeePassXC....* doc/guix-cookbook.texi (Using security keys) [Requiring a Yubikey to open a KeePassXC database]: New subsection. Series-to: 65354@debbugs.gnu.org Maxim Cournoyer 2023-08-25image: Add mbr-raw-image-type and use by default....* gnu/system/image.scm (mbr-disk-image, mbr-raw-image-type): New variables. (qcow2-image-type): Inherit mbr-disk-image. * guix/scripts/system.scm (%default-options): Use mbr-raw-image-type by default. * gnu/tests/install.scm (run-install): Use mbr-raw in the tests. * doc/guix-cookbook.texi (Guix System Image API): Update the list of image types. * doc/guix.texi (Invoking guix system, System Images, image-type Reference): Add mbr-raw and switch documented default to it. Josselin Poiret 2023-08-17doc: cookbook: Document how to disable the Yubikey OTP application....* doc/guix-cookbook.texi (Using security keys) <Disabling OTP code generation for a Yubikey>: New subsection. Reviewed-by: John Kehayias <john.kehayias@protonmail.com> Maxim Cournoyer 2023-08-16doc: cookbook: Document a dynamic DNS update mcron job....* doc/guix-cookbook.texi (System Configuration) <Dynamic DNS mcron job>: New subsection. Reviewed-by: Ludovic Courtès <ludo@gnu.org> Maxim Cournoyer 2023-08-16doc: Update Cookbook Texinfo menus....Automated via C-c C-u C-a (M-x texinfo-all-menus-update) in Emacs. Maxim Cournoyer 2023-08-15doc: cookbook: Mention common SRFI-1 procedures....* doc/guix-cookbook.texi (A Scheme Crash Course): Add item about SRFI-1. Ludovic Courtès 2023-08-15doc: cookbook: Add 'use-modules' in gexp example....* doc/guix-cookbook.texi (A Scheme Crash Course): Add 'use-modules' line in gexp example. Ludovic Courtès 2023-08-15doc: cookbook: Link to "Package Modules"....* doc/guix-cookbook.texi (A Scheme Crash Course): Add link to "Package Modules". Ludovic Courtès 2023-07-14doc: Mention gexps in the "Scheme Crash Course"....* doc/guix-cookbook.texi (A Scheme Crash Course): Add note on gexps. Ludovic Courtès 2023-06-05doc: cookbook: Update example my-libgit2 package....* doc/guix-cookbook.texi (Packaging Tutorial): Improve the code quality of the example my-libgit2 package. Efraim Flashner 2023-06-04services: screen-locker-service-type: Configurable PAM and setuid....screen-locker-service-type by default does both define PAM entry and make program setuid binary. Normally both methods are mutually exclusive, if binary has setuid set it does not really needs PAM, otherway around also similar, if PAM is enabled binary should not relay on setuid. Recent swaylock package now compiled with PAM support. When PAM support is compiled in, swaylock rejects executing if binary is also setuid program. This change turns screen-locker-configuration from strict PAM AND setuid to more flexible PAM AND/OR setuid. Allowing swaylock to be configured properly while supporting other screen locker preferences. * gnu/services/xorg.scm (screen-locker-configuration): Switch from define-record-type to define-configuration. [using-pam?]: New field to control PAM entry existence. [using-setuid?]: New field to control setuid binary existence. (screen-locker-pam-services): Should not make unix-pam-service if using-pam? is set to #f. (screen-locker-setuid-programs): Should not make program setuid program if using-setuid? is set to #f. (screen-locker-generate-doc): Internal function to generate configuration documentation. (screen-locker-service): Adapt to new screen-locker-configuration. * gnu/services/desktop.scm (desktop-services-for-system): Adapt to new screen-locker-configuration. * doc/guix.texi: Reflect new changes to screen-locker-configuration. Signed-off-by: Josselin Poiret <dev@jpoiret.xyz> muradm 2023-05-31nls: Update translations....* doc/guix-cookbook.texi (Top): Mention Slovak. Florian Pelz 2023-05-06doc: cookbook: Remove outdated section about GUIX_PACKAGE_PATH....The section insisted on GUIX_PACKAGE_PATH, mentioned version 0.16, and didn't say much about channels, which made it look obsolete. * doc/guix-cookbook.texi (GUIX_PACKAGE_PATH): Remove section. (Guix channels): Rename to... (Channels): ... this. Merge most of the explanations previously in the GUIX_PACKAGE_PATH section. Say more about channels and add cross-references. Ludovic Courtès 2023-01-09doc: cookbook: Add "Installing Guix on a Cluster" chapter....This is derived from the article at <https://hpc.guix.info/blog/2017/11/installing-guix-on-a-cluster/>, with clarifications and updates. * doc/guix-cookbook.texi (Installing Guix on a Cluster): New chapter. Ludovic Courtès 2023-01-06doc: cookbook: Remove 404 link to mitpress.mit.edu....* doc/guix-cookbook.texi (A Scheme Crash Course): Remove 404 link to mitpress.mit.edu. Ludovic Courtès 2022-11-27doc: cookbook: Fix commands in example....Fixes <https://issues.guix.gnu.org/59463>. Reported by Luca Cirrottola <luca.cirrottola@inria.fr>. * doc/guix-cookbook.texi (Reproducible profiles): Make it work. Florian Pelz 2022-11-24doc: Add a security keys section to the cookbook....* doc/guix-cookbook.texi (Top): Register new menu. (System Configuration): Likewise. (Using security keys): New section. Maxim Cournoyer 2022-11-06doc: cookbook: Add section on MPD with bluealsa....* doc/guix-cookbook.texi (Music Server with Bluetooth Audio): New section under System Configuration. Ricardo Wurmus 2022-11-06doc: cookbook: Update detailed menu for "System Configuration"....* doc/guix-cookbook.texi: Update menu. Ricardo Wurmus 2022-10-13doc: Add chapter on containers to Cookbook....* doc/guix-cookbook.texi (Containers): New chapter. Ricardo Wurmus 2022-07-08doc: cookbook: Link to "A Scheme Primer"....* doc/guix-cookbook.texi (A Scheme Crash Course): Link to "A Scheme Primer". Group references in @quotation for clarity. Ludovic Courtès 2022-07-08doc: cookbook: Suggest 'guix shell'....* doc/guix-cookbook.texi (A Scheme Crash Course): Suggest 'guix shell' instead of 'guix environment'. (Customizing the Kernel, The benefits of manifests): Likewise. Ludovic Courtès 2022-06-01doc: cookbook: Refer to the "Writing Manifests" manual node....* doc/guix-cookbook.texi (Basic setup with manifests): Tweak introductory paragraph. Refer to the new "Writing Manifests" node of the manual. Ludovic Courtès 2022-04-08doc: cookbook: Fix cross-reference to SICP....Reported by Greg Hogan <code@greghogan.com>. * doc/guix-cookbook.texi (A Scheme Crash Course): Fix xref to SICP. Ludovic Courtès 2022-04-08doc: cookbook: Fix cross-reference to the manual....Reported by Greg Hogan <code@greghogan.com>. * doc/guix-cookbook.texi (Extended example): Fix node name in xref to "package Reference". Ludovic Courtès 2022-03-18doc: cookbook: Update Tor onion service name....* doc/guix-cookbook.texi: New variable. (Getting substitutes from Tor): Use it. Ludovic Courtès