~ruther/guix-local

ec2e2f6ce2f808de20f4770748db43aefd46f0bf — David Craven 9 years ago f2901d8
services: syslog: Use syslog-configuration.

* gnu/services/base.scm (<syslog-configuration>): New variable.
  (syslog-service-type): Use <syslog-configuration>.
  (syslog-service): Use <syslog-configuration>.
* gnu/tests/base.scm (%avahi-os): Use <syslog-configuration>.
* doc/guix.texi (syslog-configuration-type): Add @deftp.
  (syslog-service): Update @deffn.
3 files changed, 43 insertions(+), 16 deletions(-)

M doc/guix.texi
M gnu/services/base.scm
M gnu/tests/base.scm
M doc/guix.texi => doc/guix.texi +16 -5
@@ 7719,12 7719,23 @@ privacy---often the result of host name lookups is in local cache, so
external name servers do not even need to be queried.
@end defvr

@anchor{syslog-configuration-type}
@deftp {Data Type} syslog-configuration
This data type represents the configuration of the syslog daemon.

@deffn {Scheme Procedure} syslog-service @
             [#:config-file @var{%default-syslog.conf}]
Return a service that runs @command{syslogd}.  If the configuration file
name @var{config-file} is not specified, use some reasonable default
settings.
@table @asis
@item @code{syslogd} (default: @code{#~(string-append #$inetutils "/libexec/syslogd")})
The syslog daemon to use.

@item @code{config-file} (default: @code{%default-syslog.conf})
The syslog configuration file to use.

@end table
@end deftp

@anchor{syslog-service}
@deffn {Scheme Procedure} syslog-service @var{config}
Return a service that runs a syslog daemon according to @var{config}.

@xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more
information on the configuration file syntax.

M gnu/services/base.scm => gnu/services/base.scm +21 -8
@@ 82,6 82,9 @@

            nscd-service-type
            nscd-service

            syslog-configuration
            syslog-configuration?
            syslog-service
            syslog-service-type
            %default-syslog.conf


@@ 885,17 888,27 @@ given @var{config}---an @code{<nscd-configuration>} object.  @xref{Name
Service Switch}, for an example."
  (service nscd-service-type config))


(define-record-type* <syslog-configuration>
  syslog-configuration  make-syslog-configuration
  syslog-configuration?
  (syslogd              syslog-configuration-syslogd
                        (default #~(string-append #$inetutils "/libexec/syslogd")))
  (config-file          syslog-configuration-config-file
                        (default %default-syslog.conf)))

(define syslog-service-type
  (shepherd-service-type
   'syslog
   (lambda (config-file)
   (lambda (config)
     (shepherd-service
      (documentation "Run the syslog daemon (syslogd).")
      (provision '(syslogd))
      (requirement '(user-processes))
      (start #~(make-forkexec-constructor
                (list (string-append #$inetutils "/libexec/syslogd")
                      "--no-detach" "--rcfile" #$config-file)))
                (list #$(syslog-configuration-syslogd config)
                      "--no-detach"
                      "--rcfile" #$(syslog-configuration-config-file config))))
      (stop #~(make-kill-destructor))))))

;; Snippet adapted from the GNU inetutils manual.


@@ 921,14 934,14 @@ Service Switch}, for an example."
     mail.*                                  /var/log/maillog
"))

(define* (syslog-service #:key (config-file %default-syslog.conf))
  "Return a service that runs @command{syslogd}.  If configuration file
name @var{config-file} is not specified, use some reasonable default
settings.
(define* (syslog-service #:optional (config (syslog-configuration)))
  "Return a service that runs @command{syslogd} and takes
@var{<syslog-configuration>} as a parameter.

@xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more
information on the configuration file syntax."
  (service syslog-service-type config-file))
  (service syslog-service-type config))


(define pam-limits-service-type
  (let ((security-limits

M gnu/tests/base.scm => gnu/tests/base.scm +6 -3
@@ 384,9 384,12 @@ functionality tests.")
                                              (log-file "/dev/console")))
                       (syslog-service-type config
                                            =>
                                            (plain-file
                                             "syslog.conf"
                                             "*.* /dev/console\n")))))))
                                            (syslog-configuration
                                             (inherit config)
                                             (config-file
                                              (plain-file
                                               "syslog.conf"
                                               "*.* /dev/console\n")))))))))

(define (run-nss-mdns-test)
  ;; Test resolution of '.local' names via libc.  Start the marionette service