aboutsummaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/admin.scm57
-rw-r--r--gnu/services/base.scm5
-rw-r--r--gnu/services/dns.scm183
-rw-r--r--gnu/services/guix.scm12
-rw-r--r--gnu/services/herd.scm48
-rw-r--r--gnu/services/messaging.scm4
-rw-r--r--gnu/services/networking.scm11
-rw-r--r--gnu/services/shepherd.scm68
-rw-r--r--gnu/services/ssh.scm23
-rw-r--r--gnu/services/telephony.scm408
-rw-r--r--gnu/services/xorg.scm3
11 files changed, 558 insertions, 264 deletions
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 043517262f..0b4ecaeb83 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;;
;;; This file is part of GNU Guix.
@@ -46,6 +46,13 @@
rottlog-service
rottlog-service-type
+ log-cleanup-service-type
+ log-cleanup-configuration
+ log-cleanup-configuration?
+ log-cleanup-configuration-directory
+ log-cleanup-configuration-expiry
+ log-cleanup-configuration-schedule
+
unattended-upgrade-service-type
unattended-upgrade-configuration
unattended-upgrade-configuration?
@@ -95,7 +102,9 @@
read)))
(kill pid SIGHUP))))
(log-rotation
- (files '("/var/log/guix-daemon.log")))))
+ (files '("/var/log/guix-daemon.log"))
+ (options '("rotate 4" ;don't keep too many of them
+ "storefile @FILENAME.@COMP_EXT")))))
(define (log-rotation->config rotation)
"Return a string-valued gexp representing the rottlog configuration snippet
@@ -193,6 +202,50 @@ Old log files are removed or compressed according to the configuration.")
;;;
+;;; Build log removal.
+;;;
+
+(define-record-type* <log-cleanup-configuration>
+ log-cleanup-configuration make-log-cleanup-configuration
+ log-cleanup-configuration?
+ (directory log-cleanup-configuration-directory) ;string
+ (expiry log-cleanup-configuration-expiry ;integer (seconds)
+ (default (* 6 30 24 3600)))
+ (schedule log-cleanup-configuration-schedule ;string or gexp
+ (default "30 12 01,08,15,22 * *")))
+
+(define (log-cleanup-program directory expiry)
+ (program-file "delete-old-logs"
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+
+ (let* ((now (car (gettimeofday)))
+ (logs (find-files #$directory
+ (lambda (file stat)
+ (> (- now (stat:mtime stat))
+ #$expiry)))))
+ (format #t "deleting ~a log files from '~a'...~%"
+ (length logs) #$directory)
+ (for-each delete-file logs))))))
+
+(define (log-cleanup-mcron-jobs configuration)
+ (match-record configuration <log-cleanup-configuration>
+ (directory expiry schedule)
+ (list #~(job #$schedule
+ #$(log-cleanup-program directory expiry)))))
+
+(define log-cleanup-service-type
+ (service-type
+ (name 'log-cleanup)
+ (extensions
+ (list (service-extension mcron-service-type
+ log-cleanup-mcron-jobs)))
+ (description
+ "Periodically delete old log files.")))
+
+
+;;;
;;; Unattended upgrade.
;;;
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index f278cb76de..5d7c69a9cd 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -2817,6 +2817,11 @@ to handle."
(service rottlog-service-type)
+ ;; Periodically delete old build logs.
+ (service log-cleanup-service-type
+ (log-cleanup-configuration
+ (directory "/var/log/guix/drvs")))
+
;; The LVM2 rules are needed as soon as LVM2 or the device-mapper is
;; used, so enable them by default. The FUSE and ALSA rules are
;; less critical, but handy.
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index 9b8603cc95..a220b33f15 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -745,6 +746,12 @@ cache.size = 100 * MB
(default "/etc/resolv.conf")) ;string
(no-resolv? dnsmasq-configuration-no-resolv?
(default #f)) ;boolean
+ (forward-private-reverse-lookup?
+ dnsmasq-configuration-forward-private-reverse-lookup?
+ (default #t)) ;boolean
+ (query-servers-in-order?
+ dnsmasq-configuration-query-servers-in-order?
+ (default #f)) ;boolean
(servers dnsmasq-configuration-servers
(default '())) ;list of string
(addresses dnsmasq-configuration-addresses
@@ -752,7 +759,9 @@ cache.size = 100 * MB
(cache-size dnsmasq-configuration-cache-size
(default 150)) ;integer
(negative-cache? dnsmasq-configuration-negative-cache?
- (default #t)) ;boolean
+ (default #t)) ;boolean
+ (cpe-id dnsmasq-configuration-cpe-id
+ (default #t)) ;string
(tftp-enable? dnsmasq-configuration-tftp-enable?
(default #f)) ;boolean
(tftp-no-fail? dnsmasq-configuration-tftp-no-fail?
@@ -776,86 +785,98 @@ cache.size = 100 * MB
(tftp-unique-root dnsmasq-tftp-unique-root
(default #f))) ;"" or "ip" or "mac"
-(define dnsmasq-shepherd-service
- (match-lambda
- (($ <dnsmasq-configuration> package
- no-hosts?
- port local-service? listen-addresses
- resolv-file no-resolv? servers
- addresses cache-size negative-cache?
- tftp-enable? tftp-no-fail?
- tftp-single-port? tftp-secure?
- tftp-max tftp-mtu tftp-no-blocksize?
- tftp-lowercase? tftp-port-range
- tftp-root tftp-unique-root)
- (shepherd-service
- (provision '(dnsmasq))
- (requirement '(networking))
- (documentation "Run the dnsmasq DNS server.")
- (start #~(make-forkexec-constructor
- '(#$(file-append package "/sbin/dnsmasq")
- "--keep-in-foreground"
- "--pid-file=/run/dnsmasq.pid"
- #$@(if no-hosts?
- '("--no-hosts")
- '())
- #$(format #f "--port=~a" port)
- #$@(if local-service?
- '("--local-service")
- '())
- #$@(map (cut format #f "--listen-address=~a" <>)
- listen-addresses)
- #$(format #f "--resolv-file=~a" resolv-file)
- #$@(if no-resolv?
- '("--no-resolv")
- '())
- #$@(map (cut format #f "--server=~a" <>)
- servers)
- #$@(map (cut format #f "--address=~a" <>)
- addresses)
- #$(format #f "--cache-size=~a" cache-size)
- #$@(if negative-cache?
- '()
- '("--no-negcache"))
- #$@(if tftp-enable?
- '("--enable-tftp")
- '())
- #$@(if tftp-no-fail?
- '("--tftp-no-fail")
- '())
- #$@(if tftp-single-port?
- '("--tftp-single-port")
- '())
- #$@(if tftp-secure?
- '("--tftp-secure?")
- '())
- #$@(if tftp-max
- (list (format #f "--tftp-max=~a" tftp-max))
- '())
- #$@(if tftp-mtu
- (list (format #f "--tftp-mtu=~a" tftp-mtu))
- '())
- #$@(if tftp-no-blocksize?
- '("--tftp-no-blocksize")
- '())
- #$@(if tftp-lowercase?
- '("--tftp-lowercase")
- '())
- #$@(if tftp-port-range
- (list (format #f "--tftp-port-range=~a"
- tftp-port-range))
- '())
- #$@(if tftp-root
- (list (format #f "--tftp-root=~a" tftp-root))
- '())
- #$@(if tftp-unique-root
- (list
- (if (> (length tftp-unique-root) 0)
- (format #f "--tftp-unique-root=~a" tftp-unique-root)
- (format #f "--tftp-unique-root")))
- '()))
- #:pid-file "/run/dnsmasq.pid"))
- (stop #~(make-kill-destructor))))))
+(define (dnsmasq-shepherd-service config)
+ (match-record config <dnsmasq-configuration>
+ (package
+ no-hosts?
+ port local-service? listen-addresses
+ resolv-file no-resolv?
+ forward-private-reverse-lookup? query-servers-in-order?
+ servers addresses
+ cache-size negative-cache?
+ cpe-id
+ tftp-enable? tftp-no-fail?
+ tftp-single-port? tftp-secure?
+ tftp-max tftp-mtu tftp-no-blocksize?
+ tftp-lowercase? tftp-port-range
+ tftp-root tftp-unique-root)
+ (shepherd-service
+ (provision '(dnsmasq))
+ (requirement '(networking))
+ (documentation "Run the dnsmasq DNS server.")
+ (start #~(make-forkexec-constructor
+ '(#$(file-append package "/sbin/dnsmasq")
+ "--keep-in-foreground"
+ "--pid-file=/run/dnsmasq.pid"
+ #$@(if no-hosts?
+ '("--no-hosts")
+ '())
+ #$(format #f "--port=~a" port)
+ #$@(if local-service?
+ '("--local-service")
+ '())
+ #$@(map (cut format #f "--listen-address=~a" <>)
+ listen-addresses)
+ #$(format #f "--resolv-file=~a" resolv-file)
+ #$@(if no-resolv?
+ '("--no-resolv")
+ '())
+ #$@(if forward-private-reverse-lookup?
+ '()
+ '("--bogus-priv"))
+ #$@(if query-servers-in-order?
+ '("--strict-order")
+ '())
+ #$@(map (cut format #f "--server=~a" <>)
+ servers)
+ #$@(map (cut format #f "--address=~a" <>)
+ addresses)
+ #$(format #f "--cache-size=~a" cache-size)
+ #$@(if negative-cache?
+ '()
+ '("--no-negcache"))
+ #$@(if cpe-id
+ (list (format #f "--add-cpe-id=~a" cpe-id))
+ '())
+ #$@(if tftp-enable?
+ '("--enable-tftp")
+ '())
+ #$@(if tftp-no-fail?
+ '("--tftp-no-fail")
+ '())
+ #$@(if tftp-single-port?
+ '("--tftp-single-port")
+ '())
+ #$@(if tftp-secure?
+ '("--tftp-secure?")
+ '())
+ #$@(if tftp-max
+ (list (format #f "--tftp-max=~a" tftp-max))
+ '())
+ #$@(if tftp-mtu
+ (list (format #f "--tftp-mtu=~a" tftp-mtu))
+ '())
+ #$@(if tftp-no-blocksize?
+ '("--tftp-no-blocksize")
+ '())
+ #$@(if tftp-lowercase?
+ '("--tftp-lowercase")
+ '())
+ #$@(if tftp-port-range
+ (list (format #f "--tftp-port-range=~a"
+ tftp-port-range))
+ '())
+ #$@(if tftp-root
+ (list (format #f "--tftp-root=~a" tftp-root))
+ '())
+ #$@(if tftp-unique-root
+ (list
+ (if (> (length tftp-unique-root) 0)
+ (format #f "--tftp-unique-root=~a" tftp-unique-root)
+ (format #f "--tftp-unique-root")))
+ '()))
+ #:pid-file "/run/dnsmasq.pid"))
+ (stop #~(make-kill-destructor)))))
(define (dnsmasq-activation config)
#~(begin
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index dc9bd8ad68..83c293bbb5 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -122,7 +122,8 @@
nar-herder-configuration-port
nar-herder-configuration-storage
nar-herder-configuration-storage-limit
- nar-herder-configuration-storage-nar-removal-criteria))
+ nar-herder-configuration-storage-nar-removal-criteria
+ nar-herder-configuration-log-level))
;;;; Commentary:
;;;
@@ -778,7 +779,9 @@ ca-certificates.crt file in the system profile."
(ttl nar-herder-configuration-ttl
(default #f))
(negative-ttl nar-herder-configuration-negative-ttl
- (default #f)))
+ (default #f))
+ (log-level nar-herder-configuration-log-level
+ (default 'DEBUG)))
(define (nar-herder-shepherd-services config)
@@ -788,7 +791,7 @@ ca-certificates.crt file in the system profile."
database database-dump
host port
storage storage-limit storage-nar-removal-criteria
- ttl negative-ttl)
+ ttl negative-ttl log-level)
(unless (or mirror storage)
(error "nar-herder: mirror or storage must be set"))
@@ -829,6 +832,9 @@ ca-certificates.crt file in the system profile."
'())
#$@(if negative-ttl
(list (string-append "--negative-ttl=" negative-ttl))
+ '())
+ #$@(if log-level
+ (list (simple-format #f "--log-level=~A" log-level))
'()))
#:user #$user
#:group #$group
diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm
index 35d69376d0..80d08f849e 100644
--- a/gnu/services/herd.scm
+++ b/gnu/services/herd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016-2019, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -20,6 +20,7 @@
(define-module (gnu services herd)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
@@ -46,6 +47,7 @@
live-service-provision
live-service-requirement
live-service-running
+ live-service-transient?
live-service-canonical-name
with-shepherd-action
@@ -194,10 +196,11 @@ of pairs."
;; Information about live Shepherd services.
(define-record-type <live-service>
- (live-service provision requirement running)
+ (live-service provision requirement transient? running)
live-service?
(provision live-service-provision) ;list of symbols
(requirement live-service-requirement) ;list of symbols
+ (transient? live-service-transient?) ;Boolean
(running live-service-running)) ;#f | object
(define (live-service-canonical-name service)
@@ -215,13 +218,46 @@ obtained."
((services _ ...)
(match services
((('service ('version 0 _ ...) _ ...) ...)
- (map (lambda (service)
- (alist-let* service (provides requires running)
- (live-service provides requires running)))
- services))
+ (resolve-transients
+ (map (lambda (service)
+ (alist-let* service (provides requires running transient?)
+ ;; The Shepherd 0.9.0 would not provide 'transient?' in its
+ ;; status sexp. Thus, when it's missing, query it via an
+ ;; "eval" request.
+ (live-service provides requires
+ (if (sloppy-assq 'transient? service)
+ transient?
+ (and running *unspecified*))
+ running)))
+ services)))
(x
#f))))))
+(define (resolve-transients services)
+ "Resolve the subset of SERVICES whose 'transient?' field is undefined. This
+is necessary to deal with Shepherd 0.9.0, which did not communicate whether a
+service is transient."
+ ;; All the fuss here is to make sure we make a single "eval root" request
+ ;; for all of SERVICES.
+ (let* ((unresolved (filter (compose unspecified? live-service-transient?)
+ services))
+ (values (or (eval-there
+ `(and (defined? 'transient?) ;shepherd >= 0.9.0
+ (map (compose transient? lookup-running)
+ ',(map (compose first
+ live-service-provision)
+ unresolved))))
+ (make-list (length unresolved) #f)))
+ (resolved (map (lambda (unresolved transient?)
+ (cons unresolved
+ (set-field unresolved
+ (live-service-transient?)
+ transient?)))
+ unresolved values)))
+ (map (lambda (service)
+ (or (assq-ref resolved service) service))
+ services)))
+
(define (unload-service service)
"Unload SERVICE, a symbol name; return #t on success."
(with-shepherd-action 'root ('unload (symbol->string service)) result
diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm
index 6ed55453db..4bceb1d37a 100644
--- a/gnu/services/messaging.scm
+++ b/gnu/services/messaging.scm
@@ -180,7 +180,7 @@
(and (list? val) (and-map file-name? val)))
(define (serialize-file-name-list field-name val)
(serialize-string-list field-name val))
-(define-maybe file-name)
+(define-maybe file-name-list)
(define (file-object? val)
(or (file-like? val) (file-name? val)))
@@ -192,7 +192,7 @@
(and (list? val) (and-map file-object? val)))
(define (serialize-file-object-list field-name val)
(serialize-string-list field-name val))
-(define-maybe file-object)
+(define-maybe file-object-list)
(define (raw-content? val)
(not (eq? val 'disabled)))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 5bb8638930..88d45f7c38 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -1978,7 +1978,7 @@ local servers publicly accessible on the web, even behind NATs and firewalls."))
(name 'yggdrasil)
(description
"Connect to the Yggdrasil mesh network.
-See yggdrasil -genconf for config options.")
+See @command{yggdrasil -genconf} for config options.")
(extensions
(list (service-extension shepherd-root-service-type
yggdrasil-shepherd-service)
@@ -2074,12 +2074,19 @@ See yggdrasil -genconf for config options.")
#$@(map (cute apply set-config!-gexp <>) settings)))
(define inner-script
(program-file "ipfs-activation-inner" inner-gexp))
+
+ (define shepherd&co
+ ;; 'make-forkexec-constructor/container' needs version 0.9 for
+ ;; #:supplementary-groups.
+ (cons shepherd-0.9
+ (list (lookup-package-input shepherd-0.9 "guile-fibers"))))
+
;; Run ipfs init and ipfs config from a container,
;; in case the IPFS daemon was compromised at some point
;; and ~/.ipfs is now a symlink to somewhere outside
;; %ipfs-home.
(define container-gexp
- (with-extensions (list shepherd)
+ (with-extensions shepherd&co
(with-imported-modules (source-module-closure
'((gnu build shepherd)
(gnu system file-systems)))
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index b44dbf9d9f..4fd4b2a497 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2016, 2018-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@@ -26,6 +26,7 @@
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix records)
+ #:use-module (guix packages)
#:use-module (guix derivations) ;imported-modules, etc.
#:use-module (guix utils)
#:use-module (gnu services)
@@ -88,7 +89,7 @@
shepherd-configuration make-shepherd-configuration
shepherd-configuration?
(shepherd shepherd-configuration-shepherd
- (default shepherd)) ; file-like
+ (default shepherd-0.9)) ; file-like
(services shepherd-configuration-services
(default '()))) ; list of <shepherd-service>
@@ -304,8 +305,14 @@ stored."
(define (scm->go file shepherd)
"Compile FILE, which contains code to be loaded by shepherd's config file,
and return the resulting '.go' file. SHEPHERD is used as shepherd package."
+ (define shepherd&co
+ (cons shepherd
+ (match (lookup-package-input shepherd "guile-fibers")
+ (#f '())
+ (fibers (list fibers)))))
+
(let-system (system target)
- (with-extensions (list shepherd)
+ (with-extensions shepherd&co
(computed-file (string-append (basename (scheme-file-name file) ".scm")
".go")
#~(begin
@@ -359,29 +366,29 @@ as shepherd package."
(map load-compiled '#$(map scm->go files))))))
(format #t "starting services...~%")
- (for-each (lambda (service)
- ;; In the Shepherd 0.3 the 'start' method can raise
- ;; '&action-runtime-error' if it fails, so protect
- ;; against it. (XXX: 'action-runtime-error?' is not
- ;; exported is 0.3, hence 'service-error?'.)
- (guard (c ((service-error? c)
- (format (current-error-port)
- "failed to start service '~a'~%"
- service)))
- (start service)))
- '#$(append-map shepherd-service-provision
- (filter shepherd-service-auto-start?
- services)))
-
- ;; Hang up stdin. At this point, we assume that 'start' methods
- ;; that required user interaction on the console (e.g.,
- ;; 'cryptsetup open' invocations, post-fsck emergency REPL) have
- ;; completed. User interaction becomes impossible after this
- ;; call; this avoids situations where services wrongfully lead
- ;; PID 1 to read from stdin (the console), which users may not
- ;; have access to (see <https://bugs.gnu.org/23697>).
- (redirect-port (open-input-file "/dev/null")
- (current-input-port))))
+ (let ((services-to-start
+ '#$(append-map shepherd-service-provision
+ (filter shepherd-service-auto-start?
+ services))))
+ (if (defined? 'start-in-the-background)
+ (start-in-the-background services-to-start)
+ (for-each (lambda (service) ;pre-0.9.0 compatibility
+ (guard (c ((service-error? c)
+ (format (current-error-port)
+ "failed to start service '~a'~%"
+ service)))
+ (start service)))
+ services-to-start))
+
+ ;; Hang up stdin. At this point, we assume that 'start' methods
+ ;; that required user interaction on the console (e.g.,
+ ;; 'cryptsetup open' invocations, post-fsck emergency REPL) have
+ ;; completed. User interaction becomes impossible after this
+ ;; call; this avoids situations where services wrongfully lead
+ ;; PID 1 to read from stdin (the console), which users may not
+ ;; have access to (see <https://bugs.gnu.org/23697>).
+ (redirect-port (open-input-file "/dev/null")
+ (current-input-port)))))
(scheme-file "shepherd.conf" config)))
@@ -463,8 +470,13 @@ need to be restarted to complete their upgrade."
(filter running? target))
(define to-unload
- ;; Unload services that are no longer required.
- (remove essential? (filter obsolete? live)))
+ ;; Unload services that are no longer required. Essential services must
+ ;; be kept and transient services such as inetd child services should be
+ ;; kept as well--they'll vanish eventually.
+ (remove (lambda (live)
+ (or (essential? live)
+ (live-service-transient? live)))
+ (filter obsolete? live)))
(values to-unload to-restart))
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 5c8fe4eef4..7fbbe383e5 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -292,6 +292,9 @@ The other options should be self-descriptive."
;; integer
(port-number openssh-configuration-port-number
(default 22))
+ ;; integer
+ (max-connections openssh-configuration-max-connections
+ (default 200))
;; Boolean | 'prohibit-password
(permit-root-login openssh-configuration-permit-root-login
(default #f))
@@ -515,6 +518,12 @@ of user-name/file-like tuples."
(define pid-file
(openssh-configuration-pid-file config))
+ (define port-number
+ (openssh-configuration-port-number config))
+
+ (define max-connections
+ (openssh-configuration-max-connections config))
+
(define openssh-command
#~(list (string-append #$(openssh-configuration-openssh config) "/sbin/sshd")
"-D" "-f" #$(openssh-config-file config)))
@@ -523,9 +532,17 @@ of user-name/file-like tuples."
(documentation "OpenSSH server.")
(requirement '(syslogd loopback))
(provision '(ssh-daemon ssh sshd))
- (start #~(make-forkexec-constructor #$openssh-command
- #:pid-file #$pid-file))
- (stop #~(make-kill-destructor))
+ (start #~(if (defined? 'make-inetd-constructor)
+ (make-inetd-constructor
+ (append #$openssh-command '("-i"))
+ (make-socket-address AF_INET INADDR_ANY
+ #$port-number)
+ #:max-connections #$max-connections)
+ (make-forkexec-constructor #$openssh-command
+ #:pid-file #$pid-file)))
+ (stop #~(if (defined? 'make-inetd-destructor)
+ (make-inetd-destructor)
+ (make-kill-destructor)))
(auto-start? (openssh-auto-start? config)))))
(define (openssh-pam-services config)
diff --git a/gnu/services/telephony.scm b/gnu/services/telephony.scm
index e678bae87c..d8ebc7b39d 100644
--- a/gnu/services/telephony.scm
+++ b/gnu/services/telephony.scm
@@ -28,6 +28,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages jami)
#:use-module (gnu packages telephony)
+ #:use-module (guix deprecation)
#:use-module (guix records)
#:use-module (guix modules)
#:use-module (guix packages)
@@ -56,53 +57,53 @@
jami-service-type
- murmur-configuration
- make-murmur-configuration
- murmur-configuration?
- murmur-configuration-package
- murmur-configuration-user
- murmur-configuration-group
- murmur-configuration-port
- murmur-configuration-welcome-text
- murmur-configuration-server-password
- murmur-configuration-max-users
- murmur-configuration-max-user-bandwidth
- murmur-configuration-database-file
- murmur-configuration-log-file
- murmur-configuration-pid-file
- murmur-configuration-autoban-attempts
- murmur-configuration-autoban-timeframe
- murmur-configuration-autoban-time
- murmur-configuration-opus-threshold
- murmur-configuration-channel-nesting-limit
- murmur-configuration-channelname-regex
- murmur-configuration-username-regex
- murmur-configuration-text-message-length
- murmur-configuration-image-message-length
- murmur-configuration-cert-required?
- murmur-configuration-remember-channel?
- murmur-configuration-allow-html?
- murmur-configuration-allow-ping?
- murmur-configuration-bonjour?
- murmur-configuration-send-version?
- murmur-configuration-log-days
- murmur-configuration-obfuscate-ips?
- murmur-configuration-ssl-cert
- murmur-configuration-ssl-key
- murmur-configuration-ssl-dh-params
- murmur-configuration-ssl-ciphers
- murmur-configuration-public-registration
- murmur-configuration-file
-
- murmur-public-registration-configuration
- make-murmur-public-registration-configuration
- murmur-public-registration-configuration?
- murmur-public-registration-configuration-name
- murmur-public-registration-configuration-url
- murmur-public-registration-configuration-password
- murmur-public-registration-configuration-hostname
-
- murmur-service-type))
+ mumble-server-configuration
+ make-mumble-server-configuration
+ mumble-server-configuration?
+ mumble-server-configuration-package
+ mumble-server-configuration-user
+ mumble-server-configuration-group
+ mumble-server-configuration-port
+ mumble-server-configuration-welcome-text
+ mumble-server-configuration-server-password
+ mumble-server-configuration-max-users
+ mumble-server-configuration-max-user-bandwidth
+ mumble-server-configuration-database-file
+ mumble-server-configuration-log-file
+ mumble-server-configuration-pid-file
+ mumble-server-configuration-autoban-attempts
+ mumble-server-configuration-autoban-timeframe
+ mumble-server-configuration-autoban-time
+ mumble-server-configuration-opus-threshold
+ mumble-server-configuration-channel-nesting-limit
+ mumble-server-configuration-channelname-regex
+ mumble-server-configuration-username-regex
+ mumble-server-configuration-text-message-length
+ mumble-server-configuration-image-message-length
+ mumble-server-configuration-cert-required?
+ mumble-server-configuration-remember-channel?
+ mumble-server-configuration-allow-html?
+ mumble-server-configuration-allow-ping?
+ mumble-server-configuration-bonjour?
+ mumble-server-configuration-send-version?
+ mumble-server-configuration-log-days
+ mumble-server-configuration-obfuscate-ips?
+ mumble-server-configuration-ssl-cert
+ mumble-server-configuration-ssl-key
+ mumble-server-configuration-ssl-dh-params
+ mumble-server-configuration-ssl-ciphers
+ mumble-server-configuration-public-registration
+ mumble-server-configuration-file
+
+ mumble-server-public-registration-configuration
+ make-mumble-server-public-registration-configuration
+ mumble-server-public-registration-configuration?
+ mumble-server-public-registration-configuration-name
+ mumble-server-public-registration-configuration-url
+ mumble-server-public-registration-configuration-password
+ mumble-server-public-registration-configuration-hostname
+
+ mumble-server-service-type))
;;;
@@ -747,91 +748,91 @@ normal user D-Bus session bus.")))
;;;
-;;; Murmur.
+;;; Mumble server.
;;;
;; https://github.com/mumble-voip/mumble/blob/master/scripts/murmur.ini
-(define-record-type* <murmur-configuration> murmur-configuration
- make-murmur-configuration
- murmur-configuration?
- (package murmur-configuration-package ;file-like
+(define-record-type* <mumble-server-configuration> mumble-server-configuration
+ make-mumble-server-configuration
+ mumble-server-configuration?
+ (package mumble-server-configuration-package ;file-like
(default mumble))
- (user murmur-configuration-user
- (default "murmur"))
- (group murmur-configuration-group
- (default "murmur"))
- (port murmur-configuration-port
+ (user mumble-server-configuration-user
+ (default "mumble-server"))
+ (group mumble-server-configuration-group
+ (default "mumble-server"))
+ (port mumble-server-configuration-port
(default 64738))
- (welcome-text murmur-configuration-welcome-text
+ (welcome-text mumble-server-configuration-welcome-text
(default ""))
- (server-password murmur-configuration-server-password
+ (server-password mumble-server-configuration-server-password
(default ""))
- (max-users murmur-configuration-max-users
+ (max-users mumble-server-configuration-max-users
(default 100))
- (max-user-bandwidth murmur-configuration-max-user-bandwidth
+ (max-user-bandwidth mumble-server-configuration-max-user-bandwidth
(default #f))
- (database-file murmur-configuration-database-file
- (default "/var/lib/murmur/db.sqlite"))
- (log-file murmur-configuration-log-file
- (default "/var/log/murmur/murmur.log"))
- (pid-file murmur-configuration-pid-file
- (default "/var/run/murmur/murmur.pid"))
- (autoban-attempts murmur-configuration-autoban-attempts
+ (database-file mumble-server-configuration-database-file
+ (default "/var/lib/mumble-server/db.sqlite"))
+ (log-file mumble-server-configuration-log-file
+ (default "/var/log/mumble-server/mumble-server.log"))
+ (pid-file mumble-server-configuration-pid-file
+ (default "/var/run/mumble-server/mumble-server.pid"))
+ (autoban-attempts mumble-server-configuration-autoban-attempts
(default 10))
- (autoban-timeframe murmur-configuration-autoban-timeframe
+ (autoban-timeframe mumble-server-configuration-autoban-timeframe
(default 120))
- (autoban-time murmur-configuration-autoban-time
+ (autoban-time mumble-server-configuration-autoban-time
(default 300))
- (opus-threshold murmur-configuration-opus-threshold
+ (opus-threshold mumble-server-configuration-opus-threshold
(default 100)) ; integer percent
- (channel-nesting-limit murmur-configuration-channel-nesting-limit
+ (channel-nesting-limit mumble-server-configuration-channel-nesting-limit
(default 10))
- (channelname-regex murmur-configuration-channelname-regex
+ (channelname-regex mumble-server-configuration-channelname-regex
(default #f))
- (username-regex murmur-configuration-username-regex
+ (username-regex mumble-server-configuration-username-regex
(default #f))
- (text-message-length murmur-configuration-text-message-length
+ (text-message-length mumble-server-configuration-text-message-length
(default 5000))
- (image-message-length murmur-configuration-image-message-length
+ (image-message-length mumble-server-configuration-image-message-length
(default (* 128 1024))) ; 128 Kilobytes
- (cert-required? murmur-configuration-cert-required?
+ (cert-required? mumble-server-configuration-cert-required?
(default #f))
- (remember-channel? murmur-configuration-remember-channel?
+ (remember-channel? mumble-server-configuration-remember-channel?
(default #f))
- (allow-html? murmur-configuration-allow-html?
+ (allow-html? mumble-server-configuration-allow-html?
(default #f))
- (allow-ping? murmur-configuration-allow-ping?
+ (allow-ping? mumble-server-configuration-allow-ping?
(default #f))
- (bonjour? murmur-configuration-bonjour?
+ (bonjour? mumble-server-configuration-bonjour?
(default #f))
- (send-version? murmur-configuration-send-version?
+ (send-version? mumble-server-configuration-send-version?
(default #f))
- (log-days murmur-configuration-log-days
+ (log-days mumble-server-configuration-log-days
(default 31))
- (obfuscate-ips? murmur-obfuscate-ips?
+ (obfuscate-ips? mumble-server-obfuscate-ips?
(default #t))
- (ssl-cert murmur-configuration-ssl-cert
+ (ssl-cert mumble-server-configuration-ssl-cert
(default #f))
- (ssl-key murmur-configuration-ssl-key
+ (ssl-key mumble-server-configuration-ssl-key
(default #f))
- (ssl-dh-params murmur-configuration-ssl-dh-params
+ (ssl-dh-params mumble-server-configuration-ssl-dh-params
(default #f))
- (ssl-ciphers murmur-configuration-ssl-ciphers
+ (ssl-ciphers mumble-server-configuration-ssl-ciphers
(default #f))
- (public-registration murmur-configuration-public-registration
- (default #f)) ; <murmur-public-registration-configuration>
- (file murmur-configuration-file
+ (public-registration mumble-server-configuration-public-registration
+ (default #f)) ; <mumble-server-public-registration-configuration>
+ (file mumble-server-configuration-file
(default #f)))
-(define-record-type* <murmur-public-registration-configuration>
- murmur-public-registration-configuration
- make-murmur-public-registration-configuration
- murmur-public-registration-configuration?
- (name murmur-public-registration-configuration-name)
- (password murmur-public-registration-configuration-password)
- (url murmur-public-registration-configuration-url)
- (hostname murmur-public-registration-configuration-hostname
+(define-record-type* <mumble-server-public-registration-configuration>
+ mumble-server-public-registration-configuration
+ make-mumble-server-public-registration-configuration
+ mumble-server-public-registration-configuration?
+ (name mumble-server-public-registration-configuration-name)
+ (password mumble-server-public-registration-configuration-password)
+ (url mumble-server-public-registration-configuration-url)
+ (hostname mumble-server-public-registration-configuration-hostname
(default #f)))
(define (flatten . lst)
@@ -842,10 +843,10 @@ normal user D-Bus session bus.")))
(cons head out)))
(fold-right flatten1 '() lst))
-(define (default-murmur-config config)
+(define (default-mumble-server-config config)
(match-record
config
- <murmur-configuration>
+ <mumble-server-configuration>
(user port welcome-text server-password max-users max-user-bandwidth
database-file log-file pid-file autoban-attempts autoban-timeframe
autoban-time opus-threshold channel-nesting-limit channelname-regex
@@ -853,7 +854,7 @@ normal user D-Bus session bus.")))
remember-channel? allow-html? allow-ping? bonjour? send-version?
log-days obfuscate-ips? ssl-cert ssl-key ssl-dh-params ssl-ciphers
public-registration)
- (apply mixed-text-file "murmur.ini"
+ (apply mixed-text-file "mumble-server.ini"
(flatten
"welcometext=" welcome-text "\n"
"port=" (number->string port) "\n"
@@ -896,7 +897,7 @@ normal user D-Bus session bus.")))
(match public-registration
(#f '())
- (($ <murmur-public-registration-configuration>
+ (($ <mumble-server-public-registration-configuration>
name password url hostname)
(if (and (or (not server-password) (string-null? server-password))
allow-ping?)
@@ -907,41 +908,41 @@ normal user D-Bus session bus.")))
(if hostname
(string-append "registerHostname=" hostname "\n")
""))
- (error "To publicly register your murmur server your server must be publicy visible
+ (error "To publicly register your mumble-server server your server must be publicy visible
and users must be able to join without a password. To fix this set:
(allow-ping? #t)
(server-password \"\")
Or set public-registration to #f"))))))))
-(define (murmur-activation config)
+(define (mumble-server-activation config)
#~(begin
(use-modules (guix build utils))
- (let* ((log-dir (dirname #$(murmur-configuration-log-file config)))
- (pid-dir (dirname #$(murmur-configuration-pid-file config)))
- (db-dir (dirname #$(murmur-configuration-database-file config)))
- (user (getpwnam #$(murmur-configuration-user config)))
+ (let* ((log-dir (dirname #$(mumble-server-configuration-log-file config)))
+ (pid-dir (dirname #$(mumble-server-configuration-pid-file config)))
+ (db-dir (dirname #$(mumble-server-configuration-database-file config)))
+ (user (getpwnam #$(mumble-server-configuration-user config)))
(init-dir
(lambda (name dir)
- (format #t "creating murmur ~a directory '~a'\n" name dir)
+ (format #t "creating mumble-server ~a directory '~a'\n" name dir)
(mkdir-p dir)
(chown dir (passwd:uid user) (passwd:gid user))
(chmod dir #o700)))
- (ini #$(or (murmur-configuration-file config)
- (default-murmur-config config))))
+ (ini #$(or (mumble-server-configuration-file config)
+ (default-mumble-server-config config))))
(init-dir "log" log-dir)
(init-dir "pid" pid-dir)
(init-dir "database" db-dir)
- (format #t "murmur: use config file: ~a~%\n" ini)
- (format #t "murmur: to set the SuperUser password run:
+ (format #t "mumble-server: use config file: ~a~%\n" ini)
+ (format #t "mumble-server: to set the SuperUser password run:
`~a -ini ~a -readsupw`\n"
- #$(file-append (murmur-configuration-package config)
- "/bin/murmurd") ini)
+ #$(file-append (mumble-server-configuration-package config)
+ "/bin/mumble-server") ini)
#t)))
-(define murmur-accounts
+(define mumble-server-accounts
(match-lambda
- (($ <murmur-configuration> _ user group)
+ (($ <mumble-server-configuration> _ user group)
(list
(user-group
(name group)
@@ -950,37 +951,174 @@ Or set public-registration to #f"))))))))
(name user)
(group group)
(system? #t)
- (comment "Murmur Daemon")
+ (comment "Mumble server daemon")
(home-directory "/var/empty")
(shell (file-append shadow "/sbin/nologin")))))))
-(define (murmur-shepherd-service config)
+(define (mumble-server-shepherd-service config)
(list (shepherd-service
- (provision '(murmur))
- (documentation "Run the Murmur Mumble server.")
+ (provision '(mumble-server))
+ (documentation "Run the Mumble server.")
(requirement '(networking))
(start #~(make-forkexec-constructor
- '(#$(file-append (murmur-configuration-package config)
- "/bin/murmurd")
+ '(#$(file-append (mumble-server-configuration-package config)
+ "/bin/mumble-server")
"-ini"
- #$(or (murmur-configuration-file config)
- (default-murmur-config config)))
- #:pid-file #$(murmur-configuration-pid-file config)))
+ #$(or (mumble-server-configuration-file config)
+ (default-mumble-server-config config)))
+ #:pid-file #$(mumble-server-configuration-pid-file config)))
(stop #~(make-kill-destructor)))))
-(define murmur-service-type
- (service-type (name 'murmur)
+(define mumble-server-service-type
+ (service-type (name 'mumble-server)
(description
- "Run the Murmur voice-over-IP (VoIP) server of the Mumble
-suite.")
+ "Run the Mumble voice-over-IP (VoIP) server.")
(extensions
(list (service-extension shepherd-root-service-type
- murmur-shepherd-service)
+ mumble-server-shepherd-service)
(service-extension activation-service-type
- murmur-activation)
+ mumble-server-activation)
(service-extension account-service-type
- murmur-accounts)))
- (default-value (murmur-configuration))))
+ mumble-server-accounts)))
+ (default-value (mumble-server-configuration))))
+
+(define-deprecated/public-alias
+ murmur-configuration
+ mumble-server-configuration)
+(define-deprecated/public-alias
+ make-murmur-configuration
+ make-mumble-server-configuration)
+(define-deprecated/public-alias
+ murmur-configuration?
+ mumble-server-configuration?)
+(define-deprecated/public-alias
+ murmur-configuration-package
+ mumble-server-configuration-package)
+(define-deprecated/public-alias
+ murmur-configuration-user
+ mumble-server-configuration-user)
+(define-deprecated/public-alias
+ murmur-configuration-group
+ mumble-server-configuration-group)
+(define-deprecated/public-alias
+ murmur-configuration-port
+ mumble-server-configuration-port)
+(define-deprecated/public-alias
+ murmur-configuration-welcome-text
+ mumble-server-configuration-welcome-text)
+(define-deprecated/public-alias
+ murmur-configuration-server-password
+ mumble-server-configuration-server-password)
+(define-deprecated/public-alias
+ murmur-configuration-max-users
+ mumble-server-configuration-max-users)
+(define-deprecated/public-alias
+ murmur-configuration-max-user-bandwidth
+ mumble-server-configuration-max-user-bandwidth)
+(define-deprecated/public-alias
+ murmur-configuration-database-file
+ mumble-server-configuration-database-file)
+(define-deprecated/public-alias
+ murmur-configuration-log-file
+ mumble-server-configuration-log-file)
+(define-deprecated/public-alias
+ murmur-configuration-pid-file
+ mumble-server-configuration-pid-file)
+(define-deprecated/public-alias
+ murmur-configuration-autoban-attempts
+ mumble-server-configuration-autoban-attempts)
+(define-deprecated/public-alias
+ murmur-configuration-autoban-timeframe
+ mumble-server-configuration-autoban-timeframe)
+(define-deprecated/public-alias
+ murmur-configuration-autoban-time
+ mumble-server-configuration-autoban-time)
+(define-deprecated/public-alias
+ murmur-configuration-opus-threshold
+ mumble-server-configuration-opus-threshold)
+(define-deprecated/public-alias
+ murmur-configuration-channel-nesting-limit
+ mumble-server-configuration-channel-nesting-limit)
+(define-deprecated/public-alias
+ murmur-configuration-channelname-regex
+ mumble-server-configuration-channelname-regex)
+(define-deprecated/public-alias
+ murmur-configuration-username-regex
+ mumble-server-configuration-username-regex)
+(define-deprecated/public-alias
+ murmur-configuration-text-message-length
+ mumble-server-configuration-text-message-length)
+(define-deprecated/public-alias
+ murmur-configuration-image-message-length
+ mumble-server-configuration-image-message-length)
+(define-deprecated/public-alias
+ murmur-configuration-cert-required?
+ mumble-server-configuration-cert-required?)
+(define-deprecated/public-alias
+ murmur-configuration-remember-channel?
+ mumble-server-configuration-remember-channel?)
+(define-deprecated/public-alias
+ murmur-configuration-allow-html?
+ mumble-server-configuration-allow-html?)
+(define-deprecated/public-alias
+ murmur-configuration-allow-ping?
+ mumble-server-configuration-allow-ping?)
+(define-deprecated/public-alias
+ murmur-configuration-bonjour?
+ mumble-server-configuration-bonjour?)
+(define-deprecated/public-alias
+ murmur-configuration-send-version?
+ mumble-server-configuration-send-version?)
+(define-deprecated/public-alias
+ murmur-configuration-log-days
+ mumble-server-configuration-log-days)
+(define-deprecated/public-alias
+ murmur-configuration-obfuscate-ips?
+ mumble-server-configuration-obfuscate-ips?)
+(define-deprecated/public-alias
+ murmur-configuration-ssl-cert
+ mumble-server-configuration-ssl-cert)
+(define-deprecated/public-alias
+ murmur-configuration-ssl-key
+ mumble-server-configuration-ssl-key)
+(define-deprecated/public-alias
+ murmur-configuration-ssl-dh-params
+ mumble-server-configuration-ssl-dh-params)
+(define-deprecated/public-alias
+ murmur-configuration-ssl-ciphers
+ mumble-server-configuration-ssl-ciphers)
+(define-deprecated/public-alias
+ murmur-configuration-public-registration
+ mumble-server-configuration-public-registration)
+(define-deprecated/public-alias
+ murmur-configuration-file
+ mumble-server-configuration-file)
+
+(define-deprecated/public-alias
+ murmur-public-registration-configuration
+ mumble-server-public-registration-configuration)
+(define-deprecated/public-alias
+ make-murmur-public-registration-configuration
+ make-mumble-server-public-registration-configuration)
+(define-deprecated/public-alias
+ murmur-public-registration-configuration?
+ mumble-server-public-registration-configuration?)
+(define-deprecated/public-alias
+ murmur-public-registration-configuration-name
+ mumble-server-public-registration-configuration-name)
+(define-deprecated/public-alias
+ murmur-public-registration-configuration-url
+ mumble-server-public-registration-configuration-url)
+(define-deprecated/public-alias
+ murmur-public-registration-configuration-password
+ mumble-server-public-registration-configuration-password)
+(define-deprecated/public-alias
+ murmur-public-registration-configuration-hostname
+ mumble-server-public-registration-configuration-hostname)
+
+(define-deprecated/public-alias
+ murmur-service-type
+ mumble-server-service-type)
;; Local Variables:
;; eval: (put 'with-retries 'scheme-indent-function 2)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index d6dfb07425..0cbd9aa53b 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -145,8 +145,7 @@
xf86-input-evdev
xf86-input-keyboard
- xf86-input-mouse
- xf86-input-synaptics))
+ xf86-input-mouse))
(define %default-xorg-fonts
;; Default list of fonts available to the X server.