GNU bug report logs -
#76963
[PATCH] home: Add home-snuik-service.
Previous Next
Reported by: Janneke Nieuwenhuizen <janneke <at> gnu.org>
Date: Tue, 11 Mar 2025 21:56:01 UTC
Severity: normal
Tags: patch
Done: Janneke Nieuwenhuizen <janneke <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi Janneke!
Janneke Nieuwenhuizen <janneke <at> gnu.org> writes:
> * gnu/home/services/messaging.scm (<home-snuik-configuration>): New type.
> (home-snuik-services, home-snuik-service-type): New procedures.
> * doc/guix.texi (Messaging Home Services): Document it.
>
> Change-Id: I1e278e7d8ed04efcb1a2ce9e12e69cb6a31a9fa4
> ---
> doc/guix.texi | 58 ++++++++++++++++++++++++-
> gnu/home/services/messaging.scm | 77 ++++++++++++++++++++++++++++++++-
Wouldn't such a service be a more natural match for a system service?
It seems like something I'd like running on a headless server.
> 2 files changed, 132 insertions(+), 3 deletions(-)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index d109877a32..f35e156376 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -36,7 +36,7 @@
> Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Efraim Flashner@*
> Copyright @copyright{} 2016 John Darrington@*
> Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
> -Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Janneke Nieuwenhuizen@*
> +Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 Janneke Nieuwenhuizen@*
Maybe use 2016-2025 :-).
> Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller@*
> Copyright @copyright{} 2016 Alex ter Weele@*
> Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines@*
> @@ -49714,6 +49714,62 @@ Messaging Home Services
> @end table
> @end deftp
>
> +@cindex snuik
> +The @uref{https://gitlab.com/janneke/snuik, Snuik IRC bot} can be run as
> +a daemon to aid talking to users that are currently off-line. With the
> +@code{(gnu home services messaging)} service, you can configure Snuik to
> +run upon login.
nitpick: I've only ever seen 'offline' spelled as a single word.
[...]
> +
> +;;;
> +;;; Snuik.
> +;;;
> +(define-record-type* <home-snuik-configuration>
> + home-snuik-configuration make-home-snuik-configuration
> + home-snuik-configuration?
> + (snuik home-snuik-snuik ;file-like
> + (default snuik))
> + (server home-snuik-server ;string
> + (default #f))
> + (port home-snuik-port ;integer
> + (default #f))
> + (nick home-snuik-nick ;string
> + (default #f))
> + (password home-snuik-password ;string
> + (default #f))
> + (password-file home-snuik-password-file ;string
> + (default #f))
> + (channels home-snuik-channels ;list of string
> + (default '()))
> + (extra-options home-snuik-extra-options ;list of string
> + (default '())))
I'd use define-configuration/no-serialization from (gnu services configuration), which
will type-check the field values and produce useful errors in case of a
mistake, which is more useful than a comment in the source file :-).
> +(define (home-snuik-services config)
> + "Return a <shepherd-service> for snuik with CONFIG."
> + (match-record config
> + <home-snuik-configuration>
> + (snuik server port nick password password-file channels extra-options)
> + (let* ((snuik (file-append snuik "/bin/snuik"))
> + (command #~'(#$snuik
> + #$@(if server
> + #~("--server" #$server)
> + #~())
> + #$@(if port
> + #~("--port" (number->string port))
> + #~())
> + #$@(if nick
> + #~("--nick" nick)
> + #~())
> + #$@(if password
> + #~("--password" password)
> + #~())
> + #$@(if password-file
> + #~("--password-file" password-file)
> + #~())
> + #$@(if (pair? channels)
> + #~("--channels" (string-join channels ","))
> + #~())
> + #$@extra-options))
> + (log-file #~(string-append %user-log-dir "/snuik.log")))
> + (list (shepherd-service
> + (documentation "Run the snuik IRC bot.")
> + (provision '(snuik))
> + (modules '((shepherd support))) ;for '%user-log-dir'
> + (start #~(make-forkexec-constructor #$command
> + #:log-file #$log-file))
> + (stop #~(make-kill-destructor)))))))
Can home services use the least-authority-wrapper to containerize the
processes? If yes, that'd be nice to use it.
--
Thanks,
Maxim
This bug report was last modified 121 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.