From 3d3c56500843b5573ba6419db5e66075fb8ac8ef Mon Sep 17 00:00:00 2001
From: Ludovic Courtès <ludo@gnu.org>
Date: Sun, 16 Apr 2017 00:06:43 +0200
Subject: services: Add a default value to various service types.

* gnu/services/admin.scm (rottlog-service-type)[default-value]: New
field.
* gnu/services/base.scm (guix-service-type)[default-value]: New field.
(guix-publish-service-type)[default-value]: New field.
* gnu/services/cups.scm (cups-service-type)[default-value]: New field.
* gnu/services/dict.scm (dicod-service-type)[default-value]: New field.
* gnu/services/mcron.scm (mcron-service-type)[default-value]: New field.
* gnu/services/networking.scm (<tor-configuration>)[config-file]: Add
default value.
(tor-service-type)[default-value]: New field.
(<bitlbee-configuration>)[interface, port, extra-settings]: Add default
values.
(bitlbee-service-type)[default-value]: New field.
(wpa-supplicant-service-type)[default-value]: New field.
(tlp-service-type)[default-value]: New field.
(openssh-service-type)[default-value]: New field.
* doc/guix.texi (Base Services, Log Rotation)
(Networking Services, Printing Services):
(Power management Services): Adjust examples accordingly.
---
 doc/guix.texi               | 21 +++++++++++----------
 gnu/services/admin.scm      |  5 +++--
 gnu/services/base.scm       |  6 ++++--
 gnu/services/cups.scm       |  4 +++-
 gnu/services/dict.scm       |  3 ++-
 gnu/services/mcron.scm      |  5 +++--
 gnu/services/networking.scm | 21 ++++++++++++++-------
 gnu/services/pm.scm         |  3 ++-
 gnu/services/ssh.scm        |  5 +++--
 9 files changed, 45 insertions(+), 28 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index fdd71141f0..810139dbc1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -9066,9 +9066,9 @@ This service is not part of @var{%base-services}.
 @end deffn
 
 @anchor{guix-publish-service-type}
-@deffn {Scheme Variable} guix-publish-service-type @var{config}
+@deffn {Scheme Variable} guix-publish-service-type
 This is the service type for @command{guix publish} (@pxref{Invoking
-guix publish}).  @var{config} must be a @code{guix-configuration}
+guix publish}).  Its value must be a @code{guix-configuration}
 object, as described below.
 
 This assumes that @file{/etc/guix} already contains a signing key pair as
@@ -9256,7 +9256,7 @@ with the default settings.
 (operating-system
   ;; @dots{}
   (services (cons* (mcron-service)
-                   (service rottlog-service-type (rottlog-configuration)) 
+                   (service rottlog-service-type)
                    %base-services)))
 @end lisp
 
@@ -9433,10 +9433,9 @@ The value of this service is the @code{wpa-supplicant} package to use.
 Thus, it can be instantiated like this:
 
 @lisp
-(use-modules (gnu services networking)
-             (gnu packages admin))
+(use-modules (gnu services networking))
 
-(service wpa-supplicant-service-type wpa-supplicant)
+(service wpa-supplicant-service-type)
 @end lisp
 @end defvr
 
@@ -10044,9 +10043,10 @@ system, add a @code{cups-service} to the operating system definition:
 
 @deffn {Scheme Variable} cups-service-type
 The service type for the CUPS print server.  Its value should be a valid
-CUPS configuration (see below).  For example:
+CUPS configuration (see below).  To use the default settings, simply
+write:
 @example
-(service cups-service-type (cups-configuration))
+(service cups-service-type)
 @end example
 @end deffn
 
@@ -13874,9 +13874,10 @@ source is detected.  More information can be found at
 
 @deffn {Scheme Variable} tlp-service-type
 The service type for the TLP tool.  Its value should be a valid
-TLP configuration (see below).  For example:
+TLP configuration (see below).  To use the default settings, simply
+write:
 @example
-(service tlp-service-type (tlp-configuration))
+(service tlp-service-type)
 @end example
 @end deffn
 
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index deaf677bd9..6ac24e32b0 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 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -115,6 +115,7 @@
                      ;; Add Rottlog to the global profile so users can access
                      ;; the documentation.
                      (service-extension profile-service-type
-                                        (compose list rottlog-rottlog))))))
+                                        (compose list rottlog-rottlog))))
+   (default-value (rottlog-configuration))))
 
 ;;; admin.scm ends here
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 95a1ba2a6c..79ba205c54 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1424,7 +1424,8 @@ failed to register hydra.gnu.org public key: ~a~%" status))))))))
           (service-extension account-service-type guix-accounts)
           (service-extension activation-service-type guix-activation)
           (service-extension profile-service-type
-                             (compose list guix-configuration-guix))))))
+                             (compose list guix-configuration-guix))))
+   (default-value (guix-configuration))))
 
 (define* (guix-service #:optional (config %default-guix-configuration))
   "Return a service that runs the Guix build daemon according to
@@ -1477,7 +1478,8 @@ failed to register hydra.gnu.org public key: ~a~%" status))))))))
                  (list (service-extension shepherd-root-service-type
                                           guix-publish-shepherd-service)
                        (service-extension account-service-type
-                                          (const %guix-publish-accounts))))))
+                                          (const %guix-publish-accounts))))
+                (default-value (guix-publish-configuration))))
 
 (define* (guix-publish-service #:key (guix guix) (port 80) (host "localhost"))
   "Return a service that runs @command{guix publish} listening on @var{host}
diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm
index 70a71eff0a..4c62e6a6f7 100644
--- a/gnu/services/cups.scm
+++ b/gnu/services/cups.scm
@@ -1022,7 +1022,9 @@ extensions that it uses."
                       (inherit config)
                       (extensions
                        (append (opaque-cups-configuration-extensions config)
-                               extensions)))))))))
+                               extensions)))))))
+
+                (default-value (cups-configuration))))
 
 ;; A little helper to make it easier to document all those fields.
 (define (generate-cups-documentation)
diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm
index 64de111511..69eadafd2e 100644
--- a/gnu/services/dict.scm
+++ b/gnu/services/dict.scm
@@ -162,7 +162,8 @@ database {
           (service-extension activation-service-type
                              (const %dicod-activation))
           (service-extension shepherd-root-service-type
-                             dicod-shepherd-service)))))
+                             dicod-shepherd-service)))
+   (default-value (dicod-configuration))))
 
 (define* (dicod-service #:key (config (dicod-configuration)))
   "Return a service that runs the @command{dicod} daemon, an implementation
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index 313c8364f8..b6cb8bc726 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -97,7 +97,8 @@
                           (mcron-configuration
                            (inherit config)
                            (jobs (append (mcron-configuration-jobs config)
-                                         jobs)))))))
+                                         jobs)))))
+                (default-value (mcron-configuration)))) ;empty job list
 
 (define* (mcron-service jobs #:optional (mcron mcron2))
   "Return an mcron service running @var{mcron} that schedules @var{jobs}, a
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index ae9b8f87cc..99a3d493c5 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -529,7 +529,8 @@ make an initial adjustment of more than 1,000 seconds."
   tor-configuration?
   (tor              tor-configuration-tor
                     (default tor))
-  (config-file      tor-configuration-config-file)
+  (config-file      tor-configuration-config-file
+                    (default (plain-file "empty" "")))
   (hidden-services  tor-configuration-hidden-services
                     (default '())))
 
@@ -666,7 +667,8 @@ HiddenServicePort ~a ~a~%"
                            (inherit config)
                            (hidden-services
                             (append (tor-configuration-hidden-services config)
-                                    services)))))))
+                                    services)))))
+                (default-value (tor-configuration))))
 
 (define* (tor-service #:optional
                       (config-file (plain-file "empty" ""))
@@ -719,9 +721,12 @@ project's documentation} for more information."
   bitlbee-configuration?
   (bitlbee bitlbee-configuration-bitlbee
            (default bitlbee))
-  (interface bitlbee-configuration-interface)
-  (port bitlbee-configuration-port)
-  (extra-settings bitlbee-configuration-extra-settings))
+  (interface bitlbee-configuration-interface
+             (default "127.0.0.1"))
+  (port bitlbee-configuration-port
+        (default 6667))
+  (extra-settings bitlbee-configuration-extra-settings
+                  (default "")))
 
 (define bitlbee-shepherd-service
   (match-lambda
@@ -789,7 +794,8 @@ project's documentation} for more information."
                        (service-extension account-service-type
                                           (const %bitlbee-accounts))
                        (service-extension activation-service-type
-                                          (const %bitlbee-activation))))))
+                                          (const %bitlbee-activation))))
+                (default-value (bitlbee-configuration))))
 
 (define* (bitlbee-service #:key (bitlbee bitlbee)
                           (interface "127.0.0.1") (port 6667)
@@ -1002,7 +1008,8 @@ dns=" dns "
                  (list (service-extension shepherd-root-service-type
                                           wpa-supplicant-shepherd-service)
                        (service-extension dbus-root-service-type list)
-                       (service-extension profile-service-type list)))))
+                       (service-extension profile-service-type list)))
+                (default-value wpa-supplicant)))
 
 
 ;;;
diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm
index fe55647eef..3cefe1874a 100644
--- a/gnu/services/pm.scm
+++ b/gnu/services/pm.scm
@@ -396,7 +396,8 @@ shutdown on system startup."))
      (service-extension udev-service-type
                         (compose list tlp-configuration-tlp))
      (service-extension activation-service-type
-                        tlp-activation)))))
+                        tlp-activation)))
+   (default-value (tlp-configuration))))
 
 (define (generate-tlp-documentation)
   (generate-documentation
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index b7f9887b30..9917c311c7 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
@@ -408,7 +408,8 @@ The other options should be self-descriptive."
                        (service-extension activation-service-type
                                           openssh-activation)
                        (service-extension account-service-type
-                                          (const %openssh-accounts))))))
+                                          (const %openssh-accounts))))
+                (default-value (openssh-configuration))))
 
 
 ;;;
-- 
cgit v1.2.3