Package: guix-patches;
Reported by: Evgeny Pisemsky <mail <at> pisemsky.site>
Date: Sun, 22 Dec 2024 09:12:01 UTC
Severity: normal
Tags: patch
Done: Danny Milosavljevic <dannym <at> friendly-machines.com>
Bug is archived. No further changes may be made.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Evgeny Pisemsky <mail <at> pisemsky.site> To: guix-patches <at> gnu.org Subject: [PATCH] services: Add mosquitto-service-type. Date: Sun, 22 Dec 2024 12:10:51 +0300
[0001-services-Add-mosquitto-service-type.patch (text/x-patch, inline)]
From b7dce453fc4dd29309687b2eb5bea99663b44212 Mon Sep 17 00:00:00 2001 Message-ID: <b7dce453fc4dd29309687b2eb5bea99663b44212.1734858256.git.mail <at> pisemsky.site> From: Evgeny Pisemsky <mail <at> pisemsky.site> Date: Sun, 22 Dec 2024 12:00:50 +0300 Subject: [PATCH] services: Add mosquitto-service-type. Change-Id: I65c141a1aac4a932a8eead86626e4284346c1d91 --- doc/guix.texi | 32 +++++++++++++++++ gnu/services/messaging.scm | 71 +++++++++++++++++++++++++++++++++++++- 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index f7b7569887..55cfbbceac 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -134,6 +134,7 @@ Copyright @copyright{} 2024 Nigko Yerden@* Copyright @copyright{} 2024 Troy Figiel@* Copyright @copyright{} 2024 Sharlatan Hellseher@* +Copyright @copyright{} 2024 Evgeny Pisemsky@* Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -29403,6 +29404,37 @@ Messaging Services @end table @end deftp +@subsubheading Mosquitto Service + +@url{https://mosquitto.org/,Mosquitto} is a lightweight message broker +that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. It is +suitable for use on all devices from low power single board computers to +full servers. + +@defvar mosquitto-service-type +This is the service type for the @url{https://mosquitto.org/,Mosquitto} +MQTT broker. Its value is a @code{mosquitto-configuration} (see below). +@end defvar + +@deftp {Data Type} mosquitto-configuration +This is the configuration for Mosquitto, with the following fields: + +@table @asis +@item @code{package} (default: @code{mosquitto}) +The Mosquitto package to use. + +@item @code{config-file} (default: @code{#f}) +The Mosquitto configuration file as a file-like object or the value +@code{#f} to use the default configuration. + +@item @code{user} (default: @code{"mosquitto"}) +Owner of the broker process. + +@item @code{group} (default: @code{"mosquitto"}) +Owner's group of the broker process. +@end table +@end deftp + @node Telephony Services @subsection Telephony Services diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm index a914d0f89e..056aa8b207 100644 --- a/gnu/services/messaging.scm +++ b/gnu/services/messaging.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe <at> gmail.com> ;;; Copyright © 2015, 2017-2020, 2022-2024 Ludovic Courtès <ludo <at> gnu.org> ;;; Copyright © 2018 Pierre-Antoine Rouby <contact <at> parouby.fr> +;;; Copyright © 2024 Evgeny Pisemsky <mail <at> pisemsky.site> ;;; ;;; This file is part of GNU Guix. ;;; @@ -59,7 +60,15 @@ (define-module (gnu services messaging) bitlbee-service-type quassel-configuration - quassel-service-type)) + quassel-service-type + + mosquitto-configuration + mosquitto-configuration? + mosquitto-configuration-package + mosquitto-configuration-config-file + mosquitto-configuration-user + mosquitto-configuration-group + mosquitto-service-type)) ;;; Commentary: ;;; @@ -1002,3 +1011,63 @@ (define quassel-service-type "Run @url{https://quassel-irc.org/,quasselcore}, the backend for the distributed IRC client quassel, which allows you to connect from multiple machines simultaneously."))) + +;;; +;;; Mosquitto. +;;; + +(define-record-type* <mosquitto-configuration> + mosquitto-configuration + make-mosquitto-configuration + mosquitto-configuration? + (package mosquitto-configuration-package + (default mosquitto)) + (config-file mosquitto-configuration-config-file + (default #f)) + (user mosquitto-configuration-user + (default "mosquitto")) + (group mosquitto-configuration-group + (default "mosquitto"))) + +(define (mosquitto-accounts config) + (match-record config <mosquitto-configuration> + (user group) + (filter identity + (list + (and (equal? group "mosquitto") + (user-group + (name "mosquitto") + (system? #t))) + (and (equal? user "mosquitto") + (user-account + (name "mosquitto") + (group group) + (system? #t) + (comment "bzzz") + (home-directory "/var/empty") + (shell (file-append shadow "/sbin/nologin")))))))) + +(define (mosquitto-shepherd-service config) + (match-record config <mosquitto-configuration> + (package config-file user group) + (list (shepherd-service + (documentation "Run the Mosquitto MQTT broker.") + (provision '(mosquitto)) + (requirement '(networking syslogd user-processes)) + (start #~(make-forkexec-constructor + (list #$(file-append package "/sbin/mosquitto") + #$@(if config-file + (list "-c" config-file) + '())) + #:user #$user + #:group #$group)) + (stop #~(make-kill-destructor)))))) + +(define mosquitto-service-type + (service-type + (description "Run the Mosquitto MQTT broker.") + (name 'mosquitto) + (extensions + (list (service-extension account-service-type mosquitto-accounts) + (service-extension shepherd-root-service-type mosquitto-shepherd-service))) + (default-value (mosquitto-configuration)))) base-commit: 02e6fa8f923849afa0d46f81262936880000664f -- 2.46.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.