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
se. * gnu/services/cups.scm (package-list?, cups-configuration): Likewise. * gnu/services/dns.scm (verify-knot-configuration) (ddclient-configuration): Likewise. * gnu/services/docker.scm (docker-configuration): Likewise. * gnu/services/file-sharing.scm (transmission-daemon-configuration): Likewise. * gnu/services/getmail.scm (getmail-configuration): Likewise. * gnu/services/mail.scm (dovecot-configuration) (opaque-dovecot-configuration): Likewise. * gnu/services/messaging.scm (prosody-configuration) (opaque-prosody-configuration): Likewise. * gnu/services/monitoring.scm (zabbix-server-configuration) (zabbix-agent-configuration): Likewise. * gnu/services/networking.scm (opendht-configuration): Likewise. * gnu/services/pm.scm (tlp-configuration): Likewise. * gnu/services/telephony.scm (jami-configuration): Likewise. * gnu/services/virtualization.scm (libvirt-configuration) (qemu-guest-agent-configuration): Likewise. * gnu/services/vpn.scm (openvpn-client-configuration): Likewise. Tobias Geerinckx-Rice 4services: dhcp-client-service-type: Support DDNS....* gnu/services/networking.scm (dhcp-client-shepherd-service): Enable -I flag on dhclient. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Lilah Tascheter 2023-09-22services: nftables: Add 'configuration' action....* gnu/services/networking.scm (nftables-shepherd-service)[actions]: New field. Marius Bakke 2023-09-17services: dhcp-client: Fix name of the provision accessor....This is a followup to 04f71edb73205d0bb82404de28a70ae17b897429. * gnu/services/networking.scm (<dhcp-client-configuration>)[shepherd-provision]: Fix accessor name. Ludovic Courtès 2023-09-17services: dhcp-client-configuration: Allow provision override....* gnu/services/networking.scm (<dhcp-client-configuration>)[shepherd-provision]: New field. (dhcp-client-shepherd-service): Honor it. * doc/guix.texi (Networking Setup): Document it. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Alexey Abramov 2023-09-08services: Open vSwitch: Depend on 'user-processes' target....* gnu/services/networking.scm (openvswitch-shepherd-service)[ovsdb](requirement): Add user-processes. Marius Bakke 2023-05-11services: inetd: Export accessors....* gnu/services/networking.scm: Export inetd-configuration?, inetd-configuration-program, inetd-configuration-entries, inetd-entry?, inetd-entry-node, inetd-entry-name, inetd-entry-socket-type, inetd-entry-protocol, inetd-entry-wait?, inetd-entry-user, inetd-entry-program and inetd-entry-arguments. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-05-11services: dhcp-client-configuration: Add 'shepherd-requirement' field....* gnu/services/networking.scm (<dhcp-client-configuration>) [shepherd-requirement]: New field. (dhcp-client-shepherd-service): Honor it. (dhcp-client-configuration-shepherd-requirement): Export accessor. * doc/guix.texi (Networking Setup): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Sergey Trofimov 2023-04-25services: tor: Deprecate 'tor-hidden-service' procedure....Due to (now renamed) 'hidden-service' record type not being exported, the only way Onion services (formely hidden services) could have worked is through the now deprecated 'tor-hidden-service' procedure. This commit updates the Tor service documentation, corrects some inconsistently named accessors in <tor-configuration> record-type, renames and refactors tor-hidden-service-configuration to tor-onion-service-configuration using define-configuration and also exports it, allowing Onion services to be configured directly within a <tor-configuration> record. Lastly, it also deprecates the 'tor-hidden-service' procedure. * doc/guix.texi (Networking Services): Substitute mentions of “Hidden services” with “Onion Services”. Add a Tor Onion service configuration example. Document <tor-onion-service-configuration>. Remove mention of 'tor-hidden-service' procedure. * gnu/services/networking.scm: Export tor-configuration-tor, tor-configuration-config-file, tor-configuration-hidden-services, tor-configuration-socks-socket-type, tor-configuration-control-socket-path, tor-onion-service-configuration, tor-onion-service-configuration?, tor-onion-service-configuration-name, tor-onion-service-configuration-mapping. (<tor-configuration>)[control-socket?]: Rename accessor. (<hidden-service>): Replace with … (<tor-onion-service-configuration>): … this. (tor-configuration->torrc): Update record-type name. (tor-activation): Ditto. (tor-hidden-service-type): Remove variable. (tor-hidden-service): Deprecate procedure. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-04-07services: ntp-service-type: Remove deprecated server as strings support....* gnu/services/networking.scm (<ntp-configuration>)[servers]: Rename accessor to ntp-configuration-servers. (ntp-configuration-servers): Remove helper procedure. (ntp-shepherd-service): Remove helper procedure usage. * tests/networking.scm: Remove obsolete test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-27services: ntpd: Add 'configuration' action....* gnu/services/networking.scm (ntp-shepherd-service): Add 'actions' field. Ludovic Courtès 2023-03-27services: network-manager: Add 'configuration' action....* gnu/services/networking.scm (network-manager-shepherd-service): Add 'actions' field. Ludovic Courtès 2023-03-23services: network-manager: Set LINUX_MODULE_DIRECTORY environment variable....Fixes <https://issues.guix.gnu.org/62409>. * gnu/services/networking.scm (network-manager-shepherd-service): Set the LINUX_MODULE_DIRECTORY environment variable. Maxim Cournoyer 2023-03-20services: network-manager: Add missing shadowing of 'iwd?' field....* gnu/services/networking.scm (network-manager-shepherd-service): Add missing shadowing of 'iwd?' field by using let* instead of let. Andrew Tropin 2023-03-10services: connman: Set service canonical-name to connman....* gnu/services/networking.scm (connman-shepherd-service): Make 'networking a virtual service and set 'connman as its canonical name. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: network-manager: Set service canonical-name to NetworkManager....According to the semantics in [1], 'networking should be a "virtual service" and NetworkManager its canonical-name. This does not influence existing services and they should continue to use the 'networking symbol. One visible change is that 'herd status' doesn't show 'networking' anymore, instead listing 'NetworkManager' in its place but both symbols are can be used to start and stop the same service. Note: Though the symbol NetworkManager doesn't really conform with the overall kebab-case used throughout Guix, this is intentional as we really want to make it clear that that the symbol NetworkManager really refers to the software called NetworkManager, since it's a canonical name here. (rather than risk misleading the user to interpret the symbol network-manager as a symbol for some unspecific network management software) [1]: https://www.gnu.org/software/shepherd/manual/html_node/Jump-Start.html * gnu/services/networking.scm (network-manager-shepherd-service): Make 'networking a virtual service and set 'NetworkManager as its canonical name. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: network-manager: Await for NetworkManager to finish starting up....This is similar to its NetworkManager-wait-online.service systemd counterpart, with the main difference being that we handle it all in 'networking symbol, rather than introduce a new 'networking-online symbol. (see discussion #47253) As a result of this change, with opensmtpd-service-type as an example, manual 'herd restart smtpd' after system bootups are no longer required when opensmtpd is configured with a smtpd.conf containing non-loopback interfaces. (this issue is described in more detail at #60300) Fixes <https://issues.guix.gnu.org/60300>. * gnu/services/networking.scm (network-manager-shepherd-service): Await for NetworkManager to finish starting up. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: connman: Deprecate 'iwd?' field....* gnu/services/networking.scm (<connman-configuration>) [iwd?]: Use helper to warn deprecated field. (connman-shepherd-service): Make iwd? a local variable independent from the deprecated field. * doc/guix.texi (Networking Setup): Remove mention of iwd? field. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: connman: Add 'shepherd-requirement' field....* gnu/services/networking.scm (<connman-configuration>) [shepherd-requirement]: New field. (connman-shepherd-service): Honor it. (connman-configuration-shepherd-requirement): Export accessor. * doc/guix.texi (Networking Setup): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: connman: Use match-record and export accessors....* gnu/services/networking.scm (connman-shepherd-service): Use match-record. (connman-configuration-connman, connman-configuration-disable-vpn?) (connman-configuration-iwd?): Export accessors. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: network-manager: Deprecate 'iwd?' field....* gnu/services/networking.scm (warn-iwd?-field-deprecation): New procedure, helper for deprecated field. (<network-manager-configuration>)[iwd?]: Use helper to warn deprecated field. (network-manager-shepherd-service): Make iwd? a local variable independent from the deprecated field. * doc/guix.texi (Networking Setup): Remove mention of iwd? field. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-03-10services: network-manager: Add 'shepherd-requirement' field....Note: This also makes wpa-supplicant an optional requirement. * gnu/services/networking.scm (<network-manager-configuration>) [shepherd-requirement]: New field. (network-manager-shepherd-service): Honor it. (network-manager-configuration-shepherd-requirement): Export accessor. * doc/guix.texi (Networking Setup): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-02-09services: Add block-facebook-hosts-service-type....Deprecates %facebook-host-aliases in favour of using hosts-service-type service extensions. * gnu/services/networking.scm (block-facebook-hosts-service-type): New variable. (%facebook-host-aliases): Deprecate variable. * doc/guix.texi: Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Bruno Victal 2023-01-16services: connman: Add iwd backend support....* gnu/services/networking.scm (connman-configuration)[iwd?]: New field. (connman-shepherd-service): Add iwd? logic, remove wpa-supplicant requirement. * doc/guix.texi: Add information about connman-configuration iwd? option. Co-authored-by: Andrew Tropin <andrew@trop.in> Signed-off-by: Andrew Tropin <andrew@trop.in> Declan Tsien 2022-12-02services: networking: Avoid 'match' on records....* gnu/services/networking.scm (dhcp-client-shepherd-service): Use accessors instead of 'match'. (inetd-shepherd-service): Likewise. (tor-shepherd-service): Likewise. (network-manager-service-type): Likewise. (modem-manager-service-type): Likewise. (wpa-supplicant-service-type): Likewise. (openvswitch-activation): Likewise. (openvswitch-shepherd-service): Likewise. (dhcpd-shepherd-service): Use 'match-record' instead of 'match'. (dhcpd-activation): Likewise. (ntp-server->string): Likewise. (ntp-shepherd-service): Likewise. (tor-configuration->torrc): Likewise. (network-manager-activation): Likewise. (network-manager-environment): Likewise. (network-manager-shepherd-service): Likewise. (usb-modeswitch-configuration->udev-rules): Likewise. (wpa-supplicant-shepherd-service): Likewise. (iptables-shepherd-service): Likewise. (nftables-shepherd-service): Likewise. (keepalived-shepherd-service): Likewise. Ludovic Courtès 2022-12-01services: network-manager: Add iwd backend support....* gnu/services/networking.scm (network-manager-configuration)[iwd?]: New field. (network-manager-shepherd-service): Add iwd to requirements if needed. * doc/guix.texi: Add information about iwd? option. Andrew Tropin 2022-11-18services: tor: Remove unnecessary modules from shepherd environment....This is a followup to fb868cd7794f15e21298e5bdea996fbf0dad17ca. * gnu/services/networking.scm (tor-shepherd-service): Remove unused 'with-imported-modules' and 'modules' field. Ludovic Courtès 2022-11-18services: Add Shepherd 'configuration' action to various services....* gnu/services/avahi.scm (avahi-shepherd-service): Add 'actions' field. * gnu/services/base.scm (nscd-actions): Add call to 'shepherd-configuration-action'. * gnu/services/desktop.scm (upower-shepherd-service): Add 'actions' field. (elogind-shepherd-service): Likewise. * gnu/services/dict.scm (dicod-shepherd-service): Likewise. * gnu/services/networking.scm (openntpd-shepherd-service): Likewise. (tor-shepherd-service): Likewise. * gnu/services/ssh.scm (openssh-shepherd-service): Likewise. * gnu/services/web.scm (nginx-shepherd-service): Likewise. * gnu/services/xorg.scm (gdm-shepherd-service): Likewise. * gnu/tests/base.scm (run-basic-test)["nscd configuration action"]: New test. * doc/guix.texi (Services): Document it. Ludovic Courtès