Hi Arun,

Arun Isaac <arunis...@systemreboot.net> writes:

> I would like to have the a service (specifically the tor service) listed
> in my config.scm and configured using `guix system reconfigure
> config.scm'. But, I do not want the service to start up at boot time. I
> want to start/stop it using `herd' later as and when I require it. How
> do I achieve this?
>
> Thanks!

Attached is a hack I did a while ago.

Hope it helps,
Clément
commit 5ebc46a52e543c316924ac936bb65c3ae7f113bb
Author: Clément Lassieur <clem...@lassieur.org>
Date:   Fri May 5 15:11:37 2017 +0200

    guix: don't auto-start nginx

diff --git a/guix/configs/modules/rodion/web.scm b/guix/configs/modules/rodion/web.scm
index 5c26651..35fe3d3 100644
--- a/guix/configs/modules/rodion/web.scm
+++ b/guix/configs/modules/rodion/web.scm
@@ -1,6 +1,8 @@
 (define-module (rodion web)
   #:use-module (gnu services)
   #:use-module (gnu services web)
+  #:use-module (srfi srfi-1) ; find
+  #:use-module (gnu services shepherd) ; shepherd-root-service-type
   #:export (%my-nginx-service))
 
 (define my-nginx-configuration
@@ -18,5 +20,29 @@
          (uri "/")
          (body (list "index index.html;"))))))))))
 
+(define (my-nginx-shepherd-service nginx-conf)
+  (let ((nginx-shepherd-service
+         (service-extension-compute
+          (find (lambda (ext)
+                  (eq? (service-extension-target ext)
+                       shepherd-root-service-type))
+                (service-type-extensions nginx-service-type)))))
+    (list
+     (shepherd-service
+      (inherit (car (nginx-shepherd-service nginx-conf)))
+      (auto-start? #f)))))
+
+(define my-nginx-service-type
+  (service-type
+   (inherit nginx-service-type)
+   (extensions
+    (cons
+     (service-extension shepherd-root-service-type
+                        my-nginx-shepherd-service)
+     (remove (lambda (ext)
+               (eq? (service-extension-target ext)
+                    shepherd-root-service-type))
+             (service-type-extensions nginx-service-type))))))
+
 (define %my-nginx-service
-  (service nginx-service-type my-nginx-configuration))
+  (service my-nginx-service-type my-nginx-configuration))

Reply via email to