unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file
@ 2022-11-11 18:11 Ludovic Courtès
  2022-11-11 18:12 ` [bug#59197] [PATCH 1/3] services: shepherd: Define 'shepherd-configuration-action' helper Ludovic Courtès
  2022-11-14  2:16 ` [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file 宋文武 via Guix-patches via
  0 siblings, 2 replies; 6+ messages in thread
From: Ludovic Courtès @ 2022-11-11 18:11 UTC (permalink / raw)
  To: 59197; +Cc: Ludovic Courtès

Hi!

So far, to view the config file of sshd, elogind, etc., you'd have to do:

  cat /proc/PID/cmdline | xargs -0

or sometimes:

  cat /proc/PID/environ | xargs -0

and extract the config file name from there.

With this change, you can do:

  cat $(herd configuration elogind)

or similar.  Simple but convenient.

This patch series adds it to a few core services.  Adding it elsewhere
is left as an exercise to the reader.  :-)

Thoughts?

Ludo’.

Ludovic Courtès (3):
  services: shepherd: Define 'shepherd-configuration-action' helper.
  services: Add Shepherd 'configuration' action to various services.
  home: services: redshift: Add 'configuration' action.

 doc/guix.texi                  | 11 +++++++++++
 gnu/home/services/desktop.scm  |  3 ++-
 gnu/home/services/shepherd.scm |  3 ++-
 gnu/services/avahi.scm         |  5 +++--
 gnu/services/base.scm          |  5 +++--
 gnu/services/desktop.scm       | 12 ++++++++----
 gnu/services/networking.scm    |  4 +++-
 gnu/services/shepherd.scm      | 12 ++++++++++++
 gnu/services/ssh.scm           |  6 +++++-
 gnu/services/web.scm           |  7 +++----
 gnu/services/xorg.scm          | 10 ++++++----
 gnu/tests/base.scm             |  6 ++++++
 12 files changed, 64 insertions(+), 20 deletions(-)


base-commit: 1f5e8ef14ffa385907fc94a754cfff7a45fee50c
prerequisite-patch-id: ee11d213a4ee466dff6379eeaeea292b6ba93fb0
prerequisite-patch-id: 857e9a0f3d1bc9ad5584c44bc767683a53e44972
prerequisite-patch-id: b87a0615ac48fe8950281f797cd2d096a98f4a2c
prerequisite-patch-id: c554e46d5d315cd349df21ba153ef6ed580f0b3c
-- 
2.38.0





^ permalink raw reply	[flat|nested] 6+ messages in thread

* [bug#59197] [PATCH 1/3] services: shepherd: Define 'shepherd-configuration-action' helper.
  2022-11-11 18:11 [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file Ludovic Courtès
@ 2022-11-11 18:12 ` Ludovic Courtès
  2022-11-11 18:12   ` [bug#59197] [PATCH 2/3] services: Add Shepherd 'configuration' action to various services Ludovic Courtès
  2022-11-11 18:12   ` [bug#59197] [PATCH 3/3] home: services: redshift: Add 'configuration' action Ludovic Courtès
  2022-11-14  2:16 ` [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file 宋文武 via Guix-patches via
  1 sibling, 2 replies; 6+ messages in thread
From: Ludovic Courtès @ 2022-11-11 18:12 UTC (permalink / raw)
  To: 59197; +Cc: Ludovic Courtès

* gnu/services/shepherd.scm (shepherd-configuration-action): New
procedure.
---
 gnu/services/shepherd.scm | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 7110e5aa89..b2601c0128 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -66,6 +66,8 @@ (define-module (gnu services shepherd)
             shepherd-action-documentation
             shepherd-action-procedure
 
+            shepherd-configuration-action
+
             %default-modules
 
             shepherd-service-file
@@ -333,6 +335,16 @@ (define shepherd&co
                      #:options '(#:local-build? #t
                                  #:substitutable? #f)))))
 
+(define (shepherd-configuration-action file)
+  "Return a 'configuration' action to display FILE, which should be the name
+of the service's configuration file."
+  (shepherd-action
+   (name 'configuration)
+   (documentation "Display the name of this service's configuration file.")
+   (procedure #~(lambda (_)
+                  (format #t "~a~%" #$file)
+                  #$file))))
+
 (define (shepherd-configuration-file services shepherd)
   "Return the shepherd configuration file for SERVICES.  SHEPHERD is used
 as shepherd package."
-- 
2.38.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [bug#59197] [PATCH 2/3] services: Add Shepherd 'configuration' action to various services.
  2022-11-11 18:12 ` [bug#59197] [PATCH 1/3] services: shepherd: Define 'shepherd-configuration-action' helper Ludovic Courtès
@ 2022-11-11 18:12   ` Ludovic Courtès
  2022-11-11 18:12   ` [bug#59197] [PATCH 3/3] home: services: redshift: Add 'configuration' action Ludovic Courtès
  1 sibling, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2022-11-11 18:12 UTC (permalink / raw)
  To: 59197; +Cc: Ludovic Courtès

* 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/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.
---
 doc/guix.texi               | 11 +++++++++++
 gnu/services/avahi.scm      |  5 +++--
 gnu/services/base.scm       |  5 +++--
 gnu/services/desktop.scm    | 12 ++++++++----
 gnu/services/networking.scm |  4 +++-
 gnu/services/ssh.scm        |  6 +++++-
 gnu/services/web.scm        |  7 +++----
 gnu/services/xorg.scm       | 10 ++++++----
 gnu/tests/base.scm          |  6 ++++++
 9 files changed, 48 insertions(+), 18 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 3f76184495..6955108eed 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17643,6 +17643,17 @@ Service xorg-server has been stopped.
 Service xorg-server has been started.
 @end example
 
+@cindex configuration, action for shepherd services
+@cindex configuration file, of a shepherd service
+For some services, @command{herd configuration} returns the name of the
+service's configuration file, which can be handy to inspect its
+configuration:
+
+@example
+# herd configuration sshd
+/gnu/store/@dots{}-sshd_config
+@end example
+
 The following sections document the available services, starting with
 the core services, that may be used in an @code{operating-system}
 declaration.
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index 3b8d0512c7..1c4220e490 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2020, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -137,7 +137,8 @@ (define (avahi-shepherd-service config)
                            #$@(if debug? #~("--debug") #~())
                            "-f" #$config)
                      #:pid-file "/run/avahi-daemon/pid"))
-           (stop #~(make-kill-destructor))))))
+           (stop #~(make-kill-destructor))
+           (actions (list (shepherd-configuration-action config)))))))
 
 (define avahi-service-type
   (let ((avahi-package (compose list avahi-configuration-avahi)))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 3bf924b8f1..d99548573d 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1327,10 +1327,11 @@ (define (nscd-action-procedure nscd config option)
              (loop)))))))
 
 (define (nscd-actions nscd config)
-  "Return Shepherd actions for NSCD."
+  "Return Shepherd actions for NSCD using CONFIG its config file."
   ;; Make this functionality available as actions because that's a simple way
   ;; to run the right 'nscd' binary with the right config file.
-  (list (shepherd-action
+  (list (shepherd-configuration-action config)
+        (shepherd-action
          (name 'statistics)
          (documentation "Display statistics about nscd usage.")
          (procedure (nscd-action-procedure nscd config "--statistics")))
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 1b087635d1..ac29e8d38a 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -273,7 +273,8 @@ (define (upower-shepherd-service config)
                      #:environment-variables
                      (list (string-append "UPOWER_CONF_FILE_NAME="
                                           #$config))))
-           (stop #~(make-kill-destructor))))))
+           (stop #~(make-kill-destructor))
+           (actions (list (shepherd-configuration-action config)))))))
 
 (define upower-service-type
   (let ((upower-package (compose list upower-configuration-upower)))
@@ -1168,6 +1169,9 @@ (module (file-append (elogind-package config)
 
 (define (elogind-shepherd-service config)
   "Return a Shepherd service to start elogind according to @var{config}."
+  (define config-file
+    (elogind-configuration-file config))
+
   (list (shepherd-service
          (requirement '(dbus-system))
          (provision '(elogind))
@@ -1176,9 +1180,9 @@ (define (elogind-shepherd-service config)
                                         "/libexec/elogind/elogind"))
                    #:environment-variables
                    (list (string-append "ELOGIND_CONF_FILE="
-                                        #$(elogind-configuration-file
-                                           config)))))
-         (stop #~(make-kill-destructor)))))
+                                        #$config-file))))
+         (stop #~(make-kill-destructor))
+         (actions (list (shepherd-configuration-action config-file))))))
 
 (define elogind-service-type
   (service-type (name 'elogind)
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 19aba8c266..18d1eb5b8c 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -652,7 +652,8 @@ (define ntpd.conf
                      ;; while running, leading shepherd to disable it.  To
                      ;; prevent spamming stderr, redirect output to logfile.
                      #:log-file "/var/log/ntpd.log"))
-           (stop #~(make-kill-destructor))))))
+           (stop #~(make-kill-destructor))
+           (actions (list (shepherd-configuration-action ntpd.conf)))))))
 
 (define (openntpd-service-activation config)
   "Return the activation gexp for CONFIG."
@@ -1032,6 +1033,7 @@ (define (tor-shepherd-service config)
                           (list #$tor "-f" #$torrc)
                           #:user "tor" #:group "tor"))
                 (stop #~(make-kill-destructor))
+                (actions (list (shepherd-configuration-action torrc)))
                 (documentation "Run the Tor anonymous network overlay."))))))))
 
 (define (tor-activation config)
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 72e7183590..7b038e6ac6 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -524,9 +524,12 @@ (define port-number
   (define max-connections
     (openssh-configuration-max-connections config))
 
+  (define config-file
+    (openssh-config-file config))
+
   (define openssh-command
     #~(list (string-append #$(openssh-configuration-openssh config) "/sbin/sshd")
-            "-D" "-f" #$(openssh-config-file config)))
+            "-D" "-f" #$config-file))
 
   (define inetd-style?
     ;; Whether to use 'make-inetd-constructor'.  That procedure appeared in
@@ -568,6 +571,7 @@ (define ipv6-support?
          (stop #~(if #$inetd-style?
                      (make-inetd-destructor)
                      (make-kill-destructor)))
+         (actions (list (shepherd-configuration-action config-file)))
          (auto-start? (openssh-auto-start? config)))))
 
 (define (openssh-pam-services config)
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 2023119037..bf321f8f1b 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -790,13 +790,11 @@ (define (nginx-shepherd-service config)
                 (nginx file run-directory shepherd-requirement)
    (let* ((nginx-binary (file-append nginx "/sbin/nginx"))
           (pid-file (in-vicinity run-directory "pid"))
+          (config-file (or file (default-nginx-config config)))
           (nginx-action
            (lambda args
              #~(lambda _
-                 (invoke #$nginx-binary "-c"
-                         #$(or file
-                               (default-nginx-config config))
-                         #$@args)
+                 (invoke #$nginx-binary "-c" #$config-file #$@args)
                  (match '#$args
                    (("-s" . _) #f)
                    (_
@@ -817,6 +815,7 @@ (define (nginx-shepherd-service config)
             (stop (nginx-action "-s" "stop"))
             (actions
               (list
+               (shepherd-configuration-action config-file)
                (shepherd-action
                  (name 'reload)
                  (documentation "Reload nginx configuration file and restart worker processes.
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 7f1f0bb581..5f073d05d3 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2017, 2019-2020, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@@ -1083,6 +1083,9 @@ (module "pam_permit.so")))))
                      (gdm-configuration-allow-empty-passwords? config))))
 
 (define (gdm-shepherd-service config)
+  (define config-file
+    (gdm-configuration-file config))
+
   (list (shepherd-service
          (documentation "Xorg display server (GDM)")
          (provision '(xorg-server))
@@ -1095,9 +1098,7 @@ (define (gdm-shepherd-service config)
                      (list #$@(if (gdm-configuration-auto-suspend? config)
                                   #~()
                                   #~("DCONF_PROFILE=/etc/dconf/profile/gdm"))
-                           (string-append
-                            "GDM_CUSTOM_CONF="
-                            #$(gdm-configuration-file config))
+                           (string-append "GDM_CUSTOM_CONF=" #$config-file)
                            (string-append
                             "GDM_DBUS_DAEMON="
                             #$(gdm-configuration-dbus-daemon config))
@@ -1129,6 +1130,7 @@ (define (gdm-shepherd-service config)
                             "GDM_WAYLAND_SESSION="
                             #$(gdm-configuration-wayland-session config))))))
          (stop #~(make-kill-destructor))
+         (actions (list (shepherd-configuration-action config-file)))
          (respawn? #t))))
 
 (define gdm-polkit-rules
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 64cd6a911a..7200a28606 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -424,6 +424,12 @@ (define (entry->list entry)
               (x
                (pk 'failure x #f))))
 
+          (test-assert "nscd configuration action"
+            (marionette-eval '(with-shepherd-action 'nscd ('configuration)
+                                                    results
+                                (file-exists? (car results)))
+                             marionette))
+
           (test-equal "nscd invalidate action"
             '(#t)                                 ;one value, #t
             (marionette-eval '(with-shepherd-action 'nscd ('invalidate "hosts")
-- 
2.38.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [bug#59197] [PATCH 3/3] home: services: redshift: Add 'configuration' action.
  2022-11-11 18:12 ` [bug#59197] [PATCH 1/3] services: shepherd: Define 'shepherd-configuration-action' helper Ludovic Courtès
  2022-11-11 18:12   ` [bug#59197] [PATCH 2/3] services: Add Shepherd 'configuration' action to various services Ludovic Courtès
@ 2022-11-11 18:12   ` Ludovic Courtès
  1 sibling, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2022-11-11 18:12 UTC (permalink / raw)
  To: 59197; +Cc: Ludovic Courtès

* gnu/home/services/shepherd.scm: Re-export
'shepherd-configuration-action'.
* gnu/home/services/desktop.scm (redshift-shepherd-service): Add
'actions' field.
---
 gnu/home/services/desktop.scm  | 3 ++-
 gnu/home/services/shepherd.scm | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm
index 1ebfb14f3c..cb25b03b64 100644
--- a/gnu/home/services/desktop.scm
+++ b/gnu/home/services/desktop.scm
@@ -165,7 +165,8 @@ (define config-file
          (start #~(make-forkexec-constructor
                    (list #$(file-append redshift "/bin/redshift")
                          "-c" #$config-file)))
-         (stop #~(make-kill-destructor)))))
+         (stop #~(make-kill-destructor))
+         (actions (list (shepherd-configuration-action config-file))))))
 
 (define home-redshift-service-type
   (service-type
diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index d2a803279f..1a70a220f0 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -45,7 +45,8 @@ (define-module (gnu home services shepherd)
                shepherd-service-auto-start?
                shepherd-service-modules
 
-               shepherd-action))
+               shepherd-action
+               shepherd-configuration-action))
 
 (define-record-type* <home-shepherd-configuration>
   home-shepherd-configuration make-home-shepherd-configuration
-- 
2.38.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file
  2022-11-11 18:11 [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file Ludovic Courtès
  2022-11-11 18:12 ` [bug#59197] [PATCH 1/3] services: shepherd: Define 'shepherd-configuration-action' helper Ludovic Courtès
@ 2022-11-14  2:16 ` 宋文武 via Guix-patches via
  2022-11-18 14:52   ` bug#59197: " Ludovic Courtès
  1 sibling, 1 reply; 6+ messages in thread
From: 宋文武 via Guix-patches via @ 2022-11-14  2:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 59197

Ludovic Courtès <ludo@gnu.org> writes:

> Hi!
>
> So far, to view the config file of sshd, elogind, etc., you'd have to do:
>
>   cat /proc/PID/cmdline | xargs -0
>
> or sometimes:
>
>   cat /proc/PID/environ | xargs -0
>
> and extract the config file name from there.
>
> With this change, you can do:
>
>   cat $(herd configuration elogind)
>
> or similar.  Simple but convenient.
>
> This patch series adds it to a few core services.  Adding it elsewhere
> is left as an exercise to the reader.  :-)

Look great to me, thank you!




^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#59197: [PATCH 0/3] Support 'herd configuration SERVICE' to view config file
  2022-11-14  2:16 ` [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file 宋文武 via Guix-patches via
@ 2022-11-18 14:52   ` Ludovic Courtès
  0 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2022-11-18 14:52 UTC (permalink / raw)
  To: 宋文武; +Cc: 59197-done

Hi,

宋文武 <iyzsong@envs.net> skribis:

> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Hi!
>>
>> So far, to view the config file of sshd, elogind, etc., you'd have to do:
>>
>>   cat /proc/PID/cmdline | xargs -0
>>
>> or sometimes:
>>
>>   cat /proc/PID/environ | xargs -0
>>
>> and extract the config file name from there.
>>
>> With this change, you can do:
>>
>>   cat $(herd configuration elogind)
>>
>> or similar.  Simple but convenient.
>>
>> This patch series adds it to a few core services.  Adding it elsewhere
>> is left as an exercise to the reader.  :-)
>
> Look great to me, thank you!

Thanks for taking a look!

I pushed these patches with two minor changes: added the ‘configuration’
action to dicod, and documented ‘shepherd-configuration-action’.

  8b56983999 home: services: redshift: Add 'configuration' action.
  8d9647d8a7 services: Add Shepherd 'configuration' action to various services.
  ebc7de6a1e services: shepherd: Define 'shepherd-configuration-action' helper.

Ludo’.




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-11-18 14:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-11 18:11 [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file Ludovic Courtès
2022-11-11 18:12 ` [bug#59197] [PATCH 1/3] services: shepherd: Define 'shepherd-configuration-action' helper Ludovic Courtès
2022-11-11 18:12   ` [bug#59197] [PATCH 2/3] services: Add Shepherd 'configuration' action to various services Ludovic Courtès
2022-11-11 18:12   ` [bug#59197] [PATCH 3/3] home: services: redshift: Add 'configuration' action Ludovic Courtès
2022-11-14  2:16 ` [bug#59197] [PATCH 0/3] Support 'herd configuration SERVICE' to view config file 宋文武 via Guix-patches via
2022-11-18 14:52   ` bug#59197: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).