help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Defining custom services in /etc/config.scm


From: Sergiu Ivanov
Subject: Defining custom services in /etc/config.scm
Date: Sun, 24 Jan 2021 20:09:07 +0100
User-agent: mu4e 1.4.13; emacs 27.1

Hello,

I'm trying to start redshift [0] as a shepherd service, and this is how
I defined the redshift service in my /etc/config.scm:

(define evry-geolocation "48.63681:2.42777")
(define redshift-service
  (shepherd-service
   (provision '(redshift))
   (requirement '(xorg-server))
   (documentation "Start Redshift as a service")
   (start #~(make-forkexec-constructor
             `("redshift" "-l" ,evry-geolocation)))
   (stop #~(make-kill-destructor))))

However, I can't find a way to add this to the services field of the
operating-system declaration.

When I try:

 (services (append
            (list redshift-service
                  (service xfce-desktop-service-type)
                  (set-xorg-configuration
                   (xorg-configuration (keyboard-layout keyboard-layout))))
            %desktop-services))

I get the message "Wrong type argument #<<shepherd-service> ...".

I understand that I should somehow construct a <service> (?) from my
<shepherd-service>, but I don't see a way to do it.

I've also seen a couple mailing list discussions [1,2] and a blog post
[3] about doing what I want in "pure shepherd", i.e. independently of
Guix, but these solutions seem to be doing more than what I need.

How can I add a custom shepherd service to the operating-system
definition in /etc/config.scm?

-
Sergiu

[0] http://jonls.dk/redshift/
[1] https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00047.html
[2] https://www.mail-archive.com/guix-devel@gnu.org/msg46278.html
[3] https://guix.gnu.org/blog/2020/gnu-shepherd-user-services/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]