mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-06 21:20:33 +02:00
services: Add mosquitto-service-type.
* gnu/services/messaging.scm (<mosquitto-configuration>): New record type. (mosquitto-accounts): New procedure. (mosquitto-shepherd-service): New procedure. (mosquitto-service-type): New variable. * doc/guix.texi (Messaging Services): Document it. Change-Id: I3500c5b6b69084c1f4a6da66ea45bfd42c871f3f Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
This commit is contained in:
committed by
Danny Milosavljevic
parent
2258b5f5b4
commit
44d178265c
@@ -139,6 +139,7 @@ Copyright @copyright{} 2025 Sören Tempel@*
|
|||||||
Copyright @copyright{} 2025 Rostislav Svoboda@*
|
Copyright @copyright{} 2025 Rostislav Svoboda@*
|
||||||
Copyright @copyright{} 2025 Zacchaeus@*
|
Copyright @copyright{} 2025 Zacchaeus@*
|
||||||
Copyright @copyright{} 2025 Sergio Pastor Pérez@*
|
Copyright @copyright{} 2025 Sergio Pastor Pérez@*
|
||||||
|
Copyright @copyright{} 2024 Evgeny Pisemsky@*
|
||||||
|
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||||
@@ -31303,6 +31304,99 @@ Extra options will be passed to @command{snuik}, please run
|
|||||||
@end table
|
@end table
|
||||||
@end deftp
|
@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
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
@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
|
@node Telephony Services
|
||||||
@subsection Telephony Services
|
@subsection Telephony Services
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
;;; Copyright © 2015, 2017-2020, 2022-2024 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2015, 2017-2020, 2022-2024 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
|
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
|
||||||
;;; Copyright © 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
;;; Copyright © 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
|
;;; Copyright © 2024 Evgeny Pisemsky <mail@pisemsky.site>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
@@ -187,7 +188,15 @@
|
|||||||
quassel-service-type
|
quassel-service-type
|
||||||
|
|
||||||
snuik-configuration
|
snuik-configuration
|
||||||
snuik-service-type))
|
snuik-service-type
|
||||||
|
|
||||||
|
mosquitto-configuration
|
||||||
|
mosquitto-configuration?
|
||||||
|
mosquitto-configuration-package
|
||||||
|
mosquitto-configuration-config-file
|
||||||
|
mosquitto-configuration-user
|
||||||
|
mosquitto-configuration-group
|
||||||
|
mosquitto-service-type))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
@@ -2105,6 +2114,67 @@ the IRC bouncer.")))
|
|||||||
for the distributed IRC client quassel, which allows you to connect from
|
for the distributed IRC client quassel, which allows you to connect from
|
||||||
multiple machines simultaneously.")))
|
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))))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; Snuik.
|
;;; Snuik.
|
||||||
|
|||||||
Reference in New Issue
Block a user