GNU bug report logs - #75021
[PATCH] services: Add mosquitto-service-type.

Previous Next

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.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 75021 in the body.
You can then email your comments to 75021 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#75021; Package guix-patches. (Sun, 22 Dec 2024 09:12:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Evgeny Pisemsky <mail <at> pisemsky.site>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 22 Dec 2024 09:12:02 GMT) Full text and rfc822 format available.

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





Information forwarded to guix-patches <at> gnu.org:
bug#75021; Package guix-patches. (Fri, 27 Dec 2024 15:33:02 GMT) Full text and rfc822 format available.

Message #8 received at 75021 <at> debbugs.gnu.org (full text, mbox):

From: Evgeny Pisemsky <mail <at> pisemsky.site>
To: 75021 <at> debbugs.gnu.org
Subject: Re: [PATCH] services: Add mosquitto-service-type.
Date: Fri, 27 Dec 2024 18:30:26 +0300
[Message part 1 (text/plain, inline)]
I have described changes in a commit message.
[0001-services-Add-mosquitto-service-type.patch (text/x-patch, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#75021; Package guix-patches. (Mon, 07 Apr 2025 20:14:01 GMT) Full text and rfc822 format available.

Message #11 received at 75021 <at> debbugs.gnu.org (full text, mbox):

From: Evgeny Pisemsky <mail <at> pisemsky.site>
To: 75021 <at> debbugs.gnu.org
Subject: Re: [PATCH] services: Add mosquitto-service-type.
Date: Mon, 07 Apr 2025 23:13:20 +0300
Ping.




bug closed, send any further explanations to 75021 <at> debbugs.gnu.org and Evgeny Pisemsky <mail <at> pisemsky.site> Request was from Danny Milosavljevic <dannym <at> friendly-machines.com> to control <at> debbugs.gnu.org. (Fri, 09 May 2025 17:54:01 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 07 Jun 2025 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 24 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.