guix-devel
[Top][All Lists]
Advanced

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

Re: how to write services (was: Re: Teams)


From: Ricardo Wurmus
Subject: Re: how to write services (was: Re: Teams)
Date: Wed, 15 Jun 2022 15:53:31 +0200
User-agent: mu4e 1.6.10; emacs 28.1

catonano@gmail.com writes:

> Il giorno mer, 15/06/2022 alle 01.52 +0700, Blake Shaw ha scritto:
>> 
>> I found the documentation to be a bit confusing (understandably, as
>> its new), but once the workflow snapped together its been amazing to
>> see how easy it is to create new services. 
>
> This is something I'm specifically interested in
>
> In fact, I wrote this toot that got several boosts and likes but NO
> answer
> https://floss.social/web/@abbienormal/108378060174601402

I don’t know Odoo, but the general process is this:

- look up the relevant documentation of your application to figure out
  what commands must be executed.  Take note of any way to pass a
  configuration file.

- copy an existing shepherd service.  Maybe start with
  gnu/services/audio.scm, because it’s pretty simple while not completely
  trivial.

- adjust the commands and names.

In gnu/services/audio.scm you see the definition of mpd-service-type,
which is a *system* service that 1) adds a user account, 2) does some
one-shot preparation work, and 3) registers the mpd-shepherd-service.

mpd-shepherd-service is a procedure returning a shepherd service.  The
service has a start and stop command.  Adjust this for your service.

mpd-shepherd-service refers to its argument “config”, which is supposed
to be a Scheme configuration value.  It’s just a record defined higher
up as <mpd-configuration>.  mpd-config->file turns that Scheme value
into a string that can live in a file as the mpd configuration file.

This is pretty much all there is to it.  Some services are simpler and
don’t need any one-shot setup, nor do they need system user accounts, so
they would just boil down to a shepherd service definition.

-- 
Ricardo



reply via email to

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