GNU bug report logs -
#75637
[PATCH 0/4] Adding the 'timer' and 'transient' Shepherd services
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Fri, 17 Jan 2025 22:22:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 75637 in the body.
You can then email your comments to 75637 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
andrew <at> trop.in, janneke <at> gnu.org, ludo <at> gnu.org, tanguy <at> bioneland.org, guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Fri, 17 Jan 2025 22:22:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
New bug report received and forwarded. Copy sent to
andrew <at> trop.in, janneke <at> gnu.org, ludo <at> gnu.org, tanguy <at> bioneland.org, guix-patches <at> gnu.org
.
(Fri, 17 Jan 2025 22:22:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hello!
Shepherd party! 🐑🎉
This patch series adds the famous ‘transient’ and ‘timer’ services
from Shepherd 1.0 that everyone has been waiting for.
Thoughts?
Ludo’.
Ludovic Courtès (4):
services: shepherd: Add ‘transient’ and ‘timer’.
services: Add the Shepherd’s ‘transient’ and ‘timer’ to
‘%base-services’.
home: services: shepherd: Add ‘transient’ and ‘timer’ services.
home: services: Add ‘transient’ and ‘timer’ to ‘%base-home-services’.
doc/guix.texi | 45 +++++++++++++++++++++++++++
gnu/home.scm | 7 +++--
gnu/home/services/shepherd.scm | 21 +++++++++++--
gnu/services/base.scm | 4 +++
gnu/services/shepherd.scm | 56 ++++++++++++++++++++++++++++++++--
5 files changed, 127 insertions(+), 6 deletions(-)
base-commit: a42d57a935009e4dd9b9e9464458540def2cb576
--
2.47.1
Information forwarded
to
ludo <at> gnu.org, maxim.cournoyer <at> gmail.com, guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Fri, 17 Jan 2025 22:24:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 75637 <at> debbugs.gnu.org (full text, mbox):
* gnu/services/shepherd.scm (shepherd-timer-service-type)
(shepherd-transient-service-type): New variables.
* doc/guix.texi (Shepherd Services): Document them.
Change-Id: I9b622e7e947e7a6384c2701a313d0c7080a0a5f6
---
doc/guix.texi | 33 ++++++++++++++++++++++++
gnu/services/shepherd.scm | 54 +++++++++++++++++++++++++++++++++++++--
2 files changed, 85 insertions(+), 2 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 0015d739bb..3e377ca9f4 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -45684,6 +45684,39 @@ Shepherd Services
(shepherd my-shepherd))))))
@end lisp
+@cindex @code{transient} service, Shepherd
+@defvar shepherd-transient-service-type
+This service type represents the Shepherd's @code{transient} service,
+which lets you spawn commands in the background and interact with them
+as regular Shepherd service; it is similar to @command{systemd-run}.
+
+For example, the command below spawns @command{rsync} in the background,
+in an environment where the @env{SSH_AUTH_SOCK} environment variable has
+the given value:
+
+@example
+herd spawn transient -E SSH_AUTH_SOCK=$SSH_AUTH_SOCK -- \
+ rsync -e ssh -vur . backup.example.org:
+@end example
+
+@xref{Transient Service Maker,,, shepherd, The GNU Shepherd Manual}, for
+more info on the @code{transient} service.
+@end defvar
+
+@cindex @code{timer} service, Shepherd
+@defvar shepherd-timer-service-type
+This is the service type representing the Shepherd's @code{timer}
+service, which lets you schedule the execution of commands, similar to
+the venerable @command{at} command. Here is an example:
+
+@example
+herd schedule timer at 07:00 -- mpg123 Music/alarm.mp3
+@end example
+
+@xref{Timer Service,,, shepherd, The GNU Shepherd Manual}, for more info
+on the @code{timer} service.
+@end defvar
+
@defvar %shepherd-root-service
This service represents PID <at> tie{}1.
@end defvar
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 0de3c9c55c..5f2625ac20 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2016, 2018-2024 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2013-2016, 2018-2025 Ludovic Courtès <ludo <at> gnu.org>
;;; Copyright © 2017 Clément Lassieur <clement <at> lassieur.org>
;;; Copyright © 2018 Carlo Zancanaro <carlo <at> zancanaro.id.au>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke <at> gnu.org>
@@ -81,6 +81,8 @@ (define-module (gnu services shepherd)
shepherd-service-upgrade
user-processes-service-type
+ shepherd-timer-service-type
+ shepherd-transient-service-type
assert-valid-graph))
@@ -668,4 +670,52 @@ (define user-processes-service-type
seconds after @code{SIGTERM} has been sent are terminated with
@code{SIGKILL}.")))
-;;; shepherd.scm ends here
+
+;;;
+;;; Timer and transient service maker.
+;;;
+
+(define shepherd-timer-service-type
+ (shepherd-service-type
+ 'shepherd-timer
+ (const (shepherd-service
+ (provision '(timer))
+ (requirement '(user-processes))
+ (modules '((shepherd service timer)))
+ (free-form #~(timer-service
+ '#$provision
+ #:requirement '#$requirement))))
+ #t ;ignored
+ (description "The Shepherd @code{timer} service lets you schedule commands
+dynamically, similar to the @code{at} command that your grandparents would use
+on that Slackware they got on a floppy disk. For example, consider this
+command:
+
+@example
+herd schedule timer at 07:00 -- mpg123 Music/alarm.mp3
+@end example
+
+It does exactly what you would expect.")))
+
+(define shepherd-transient-service-type
+ (shepherd-service-type
+ 'shepherd-transient
+ (const (shepherd-service
+ (provision '(transient))
+ (requirement '(user-processes))
+ (modules '((shepherd service transient)))
+ (free-form #~(transient-service
+ '#$provision
+ #:requirement '#$requirement))))
+ #t ;ignored
+ (description "The Shepherd @code{transient} service lets you run commands
+asynchronously, in the background, similar to @command{systemd-run}, as in
+this example:
+
+@example
+herd spawn transient -E SSH_AUTH_SOCK=$SSH_AUTH_SOCK -- \\
+ rsync -e ssh -vur . backup.example.org:
+@end example
+
+This runs @command{rsync} in the background, as a service that you can inspect
+with @command{herd status} and stop with @command{herd stop}.")))
--
2.47.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Fri, 17 Jan 2025 22:24:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 75637 <at> debbugs.gnu.org (full text, mbox):
* gnu/services/base.scm (%base-services): Add instances of
‘shepherd-timer-service-type’ and ‘shepherd-transient-service-type’.
Change-Id: I28a35d0dce40b142ee71b330b1cf7a3d222ef6bd
---
gnu/services/base.scm | 4 ++++
gnu/services/shepherd.scm | 34 ++++++++++++++++++----------------
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 5967457002..7331c030d7 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -3750,6 +3750,10 @@ (define %base-services
(service log-rotation-service-type)
+ ;; Convenient services brought by the Shepherd.
+ (service shepherd-timer-service-type)
+ (service shepherd-transient-service-type)
+
;; Periodically delete old build logs.
(service log-cleanup-service-type
(log-cleanup-configuration
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 5f2625ac20..328bfbedff 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -678,14 +678,15 @@ (define user-processes-service-type
(define shepherd-timer-service-type
(shepherd-service-type
'shepherd-timer
- (const (shepherd-service
- (provision '(timer))
- (requirement '(user-processes))
- (modules '((shepherd service timer)))
- (free-form #~(timer-service
- '#$provision
- #:requirement '#$requirement))))
- #t ;ignored
+ (lambda (requirement)
+ (shepherd-service
+ (provision '(timer))
+ (requirement requirement)
+ (modules '((shepherd service timer)))
+ (free-form #~(timer-service
+ '#$provision
+ #:requirement '#$requirement))))
+ '(user-processes)
(description "The Shepherd @code{timer} service lets you schedule commands
dynamically, similar to the @code{at} command that your grandparents would use
on that Slackware they got on a floppy disk. For example, consider this
@@ -700,14 +701,15 @@ (define shepherd-timer-service-type
(define shepherd-transient-service-type
(shepherd-service-type
'shepherd-transient
- (const (shepherd-service
- (provision '(transient))
- (requirement '(user-processes))
- (modules '((shepherd service transient)))
- (free-form #~(transient-service
- '#$provision
- #:requirement '#$requirement))))
- #t ;ignored
+ (lambda (requirement)
+ (shepherd-service
+ (provision '(transient))
+ (requirement requirement)
+ (modules '((shepherd service transient)))
+ (free-form #~(transient-service
+ '#$provision
+ #:requirement '#$requirement))))
+ '(user-processes)
(description "The Shepherd @code{transient} service lets you run commands
asynchronously, in the background, similar to @command{systemd-run}, as in
this example:
--
2.47.1
Information forwarded
to
andrew <at> trop.in, janneke <at> gnu.org, ludo <at> gnu.org, maxim.cournoyer <at> gmail.com, tanguy <at> bioneland.org, guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Fri, 17 Jan 2025 22:24:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 75637 <at> debbugs.gnu.org (full text, mbox):
* 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(-)
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 <at> trop.in>
;;; Copyright © 2021 Xinglu Chen <public <at> yoctocell.xyz>
-;;; Copyright © 2024 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2024-2025 Ludovic Courtès <ludo <at> 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
--
2.47.1
Information forwarded
to
andrew <at> trop.in, janneke <at> gnu.org, ludo <at> gnu.org, tanguy <at> bioneland.org, guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Fri, 17 Jan 2025 22:24:03 GMT)
Full text and
rfc822 format available.
Message #17 received at 75637 <at> debbugs.gnu.org (full text, mbox):
* gnu/home.scm (%base-home-services): Add
‘home-shepherd-timer-service-type’ and
‘home-shepherd-transient-service-type’.
Change-Id: Ib48744b82c7e4c6ff6b8ac3d669774feda813f4b
---
gnu/home.scm | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/gnu/home.scm b/gnu/home.scm
index 3b479f64f9..1172b1a0ab 100644
--- a/gnu/home.scm
+++ b/gnu/home.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
-;;; Copyright © 2022, 2024 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2022, 2024-2025 Ludovic Courtès <ludo <at> gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +21,7 @@ (define-module (gnu home)
#:use-module (gnu home services)
#:use-module (gnu home services symlink-manager)
#:use-module (gnu home services shells)
+ #:use-module (gnu home services shepherd)
#:use-module (gnu home services xdg)
#:use-module (gnu home services fontutils)
#:use-module (gnu home services admin)
@@ -80,7 +81,9 @@ (define-record-type* <home-environment> home-environment
(define %base-home-services
;; Non-essential but useful services to have by default.
- (list (service home-log-rotation-service-type)))
+ (list (service home-log-rotation-service-type)
+ (service home-shepherd-timer-service-type)
+ (service home-shepherd-transient-service-type)))
(define (home-environment-default-essential-services he)
"Return the list of essential services for home environment."
--
2.47.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Sun, 19 Jan 2025 09:32:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 75637 <at> debbugs.gnu.org (full text, mbox):
Ludovic Courtès <ludo <at> 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 <at> gmail.com>
--
Thanks,
Maxim
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75637
; Package
guix-patches
.
(Sun, 19 Jan 2025 09:33:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 75637 <at> debbugs.gnu.org (full text, mbox):
Ludovic Courtès <ludo <at> gnu.org> writes:
> * gnu/home.scm (%base-home-services): Add
> ‘home-shepherd-timer-service-type’ and
> ‘home-shepherd-transient-service-type’.
>
> Change-Id: Ib48744b82c7e4c6ff6b8ac3d669774feda813f4b
Reviewed-by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
--
Thanks,
Maxim
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Sun, 26 Jan 2025 21:20:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
bug acknowledged by developer.
(Sun, 26 Jan 2025 21:20:01 GMT)
Full text and
rfc822 format available.
Message #28 received at 75637-done <at> debbugs.gnu.org (full text, mbox):
Pushed as 4fa122bc4d3ccdca5b4613c3d700558c4af593fe, thank you!
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 24 Feb 2025 12:24:11 GMT)
Full text and
rfc822 format available.
This bug report was last modified 17 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.