~ruther/guix-local

106660e3ff4f111bc9779193376a53beee4585b5 — Maxim Cournoyer 3 years ago 3ba8c2b
services: elogind-configuration-file: Do not serialize unspecified items.

This a followup to 59ee837d8b11d7d688045b601e8b240ccbdbe7c7, which changed the
default value of the HandleLidSwitchExternalPower to the empty string.
Unfortunately this causes elogind to print a warning (although it otherwise
works as intended).  This change fixes that.

* gnu/services/desktop.scm (elogind-configuration-file)<handle-action>: Let
the unspecified value go through.
<ini-file-clause>: When an unspecified file is encountered, do not produce any
text to serialize.
1 files changed, 11 insertions(+), 3 deletions(-)

M gnu/services/desktop.scm
M gnu/services/desktop.scm => gnu/services/desktop.scm +11 -3
@@ 1034,7 1034,7 @@ include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
    '(ignore poweroff reboot halt kexec suspend hibernate hybrid-sleep lock))
  (define (handle-action x)
    (if (unspecified? x)
        ""                              ;empty serializer
        x                               ;let the unspecified value go through
        (enum x handle-actions)))
  (define (sleep-list tokens)
    (unless (valid-list? tokens char-set:user-name)


@@ 1042,10 1042,18 @@ include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
    (string-join tokens " "))
  (define-syntax ini-file-clause
    (syntax-rules ()
      ;; Produce an empty line when encountering an unspecified value.  This
      ;; is better than an empty string value, which can, in some cases, cause
      ;; warnings such as "Failed to parse handle action setting".
      ((_ config (prop (parser getter)))
       (string-append prop "=" (parser (getter config)) "\n"))
       (let ((value (parser (getter config))))
         (if (unspecified? value)
             ""
             (string-append prop "=" value "\n"))))
      ((_ config str)
       (string-append str "\n"))))
       (if (unspecified? str)
           ""
           (string-append str "\n")))))
  (define-syntax-rule (ini-file config file clause ...)
    (plain-file file (string-append (ini-file-clause config clause) ...)))
  (ini-file