[bug#74997,3/4] home: services: shepherd: Add ‘transient’ and ‘timer’ services.

Message ID c784469b98168a15bd551aa1b8bbf320cf452f4d.1737152077.git.ludo@gnu.org
State New
Headers
Series Adding the 'timer' and 'transient' Shepherd services |

Commit Message

Ludovic Courtès Jan. 17, 2025, 10:19 p.m. UTC
  * gnu/home/services/shepherd.scm (home-shepherd-timer-service-type)
(home-shepherd-transient-service-type): New variables.
* doc/guix.texi (Shepherd Home Service): Document them.
(Shepherd Services): Add anchor.

Change-Id: Ia4eb7cf043f4661c64f5ca81b8989a451532aa18
---
 doc/guix.texi                  | 12 ++++++++++++
 gnu/home/services/shepherd.scm | 21 +++++++++++++++++++--
 2 files changed, 31 insertions(+), 2 deletions(-)
  

Comments

Maxim Cournoyer Jan. 19, 2025, 9:31 a.m. UTC | #1
Ludovic Courtès <ludo@gnu.org> writes:

> * gnu/home/services/shepherd.scm (home-shepherd-timer-service-type)
> (home-shepherd-transient-service-type): New variables.
> * doc/guix.texi (Shepherd Home Service): Document them.
> (Shepherd Services): Add anchor.
>
> Change-Id: Ia4eb7cf043f4661c64f5ca81b8989a451532aa18

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
  

Patch

diff --git a/doc/guix.texi b/doc/guix.texi
index 3e377ca9f4..a33f2f3083 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -45684,6 +45684,7 @@  Shepherd Services
                                             (shepherd my-shepherd))))))
 @end lisp
 
+@anchor{shepherd-transient-timer-services}
 @cindex @code{transient} service, Shepherd
 @defvar shepherd-transient-service-type
 This service type represents the Shepherd's @code{transient} service,
@@ -47347,6 +47348,17 @@  Shepherd Home Service
 This service is part of @code{%base-home-services}.
 @end defvar
 
+@defvar home-shepherd-transient-service-type
+@defvarx home-shepherd-timer-service-type
+These are the @code{timer} and @code{transient} Shepherd services.  The
+former lets you schedule command execution for later, while the latter
+can run commands in the background as a regular service.
+
+@xref{shepherd-transient-timer-services, the system @code{timer} and
+@code{transient} services}, which are their Guix System counterparts,
+for more info.
+@end defvar
+
 @node Secure Shell
 @subsection Secure Shell
 
diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index 37ad1489d6..b2b141d4de 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -1,7 +1,7 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
-;;; Copyright © 2024 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024-2025 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,7 +34,10 @@  (define-module (gnu home services shepherd)
             home-shepherd-configuration-auto-start?
             home-shepherd-configuration-daemonize?
             home-shepherd-configuration-silent?
-            home-shepherd-configuration-services)
+            home-shepherd-configuration-services
+
+            home-shepherd-transient-service-type
+            home-shepherd-timer-service-type)
   #:re-export (shepherd-service
                shepherd-service?
                shepherd-service-documentation
@@ -181,3 +184,17 @@  (define home-shepherd-service-type
 (define-service-type-mapping
   shepherd-root-service-type => home-shepherd-service-type)
 
+
+;;;
+;;; Timer and transient service maker.
+;;;
+
+(define home-shepherd-timer-service-type
+  (service-type
+   (inherit (system->home-service-type shepherd-timer-service-type))
+   (default-value '())))                          ;requirement
+
+(define home-shepherd-transient-service-type
+  (service-type
+   (inherit (system->home-service-type shepherd-transient-service-type))
+   (default-value '())))                          ;requirement