From f2bee4210ff7da38696d8e49999282e27b4a6364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 15 Jan 2018 22:04:55 +0100 Subject: [PATCH] services: bitlbee: Move to (gnu services messaging). * gnu/services/networking.scm () (bitlbee-shepherd-service, %bitlbee-accounts, %bitlbee-activation) (bitlbee-service-type, bitlbee-service): Move to... * gnu/services/messaging.scm: ... here. * doc/guix.texi (Networking Services): Move 'bitlbee-service' doc to... (Messaging Services): ... here. --- doc/guix.texi | 34 ++++++----- gnu/services/messaging.scm | 117 +++++++++++++++++++++++++++++++++++- gnu/services/networking.scm | 113 ---------------------------------- 3 files changed, 135 insertions(+), 129 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 59c354bb06..be5577c20f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -10701,21 +10701,6 @@ See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} for more information. @end deffn -@deffn {Scheme Procedure} bitlbee-service [#:bitlbee bitlbee] @ - [#:interface "127.0.0.1"] [#:port 6667] @ - [#:extra-settings ""] -Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that -acts as a gateway between IRC and chat networks. - -The daemon will listen to the interface corresponding to the IP address -specified in @var{interface}, on @var{port}. @code{127.0.0.1} means that only -local clients can connect, whereas @code{0.0.0.0} means that connections can -come from any networking interface. - -In addition, @var{extra-settings} specifies a string to append to the -configuration file. -@end deffn - The @code{(gnu services rsync)} module provides the following services: You might want an rsync daemon if you have files that you want available @@ -14437,6 +14422,25 @@ string, you could instantiate a prosody service like this: (prosody.cfg.lua ""))) @end example +@subsubheading BitlBee Service + +@url{http://bitlbee.org,BitlBee} is a gateway that provides an IRC +interface to a variety of messaging protocols such as XMPP. + +@deffn {Scheme Procedure} bitlbee-service [#:bitlbee bitlbee] @ + [#:interface "127.0.0.1"] [#:port 6667] @ + [#:extra-settings ""] +Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that +acts as a gateway between IRC and chat networks. + +The daemon will listen to the interface corresponding to the IP address +specified in @var{interface}, on @var{port}. @code{127.0.0.1} means that only +local clients can connect, whereas @code{0.0.0.0} means that connections can +come from any networking interface. + +In addition, @var{extra-settings} specifies a string to append to the +configuration file. +@end deffn @node Telephony Services @subsubsection Telephony Services diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm index a9820ed21f..c0ccdbad33 100644 --- a/gnu/services/messaging.scm +++ b/gnu/services/messaging.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2017 Mathieu Othacehe +;;; Copyright © 2015, 2017, 2018 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ #:use-module (gnu services configuration) #:use-module (gnu system shadow) #:use-module (guix gexp) + #:use-module (guix modules) #:use-module (guix records) #:use-module (guix packages) #:use-module (srfi srfi-1) @@ -42,7 +44,12 @@ ssl-configuration %default-modules-enabled - prosody-configuration-pidfile)) + prosody-configuration-pidfile + + bitlbee-configuration + bitlbee-configuration? + bitlbee-service + bitlbee-service-type)) ;;; Commentary: ;;; @@ -751,3 +758,111 @@ string, you could instantiate a prosody service like this: (opaque-prosody-configuration (prosody.cfg.lua \"\"))) @end example")) + + +;;; +;;; BitlBee. +;;; + +(define-record-type* + bitlbee-configuration make-bitlbee-configuration + bitlbee-configuration? + (bitlbee bitlbee-configuration-bitlbee + (default bitlbee)) + (interface bitlbee-configuration-interface + (default "127.0.0.1")) + (port bitlbee-configuration-port + (default 6667)) + (extra-settings bitlbee-configuration-extra-settings + (default ""))) + +(define bitlbee-shepherd-service + (match-lambda + (($ bitlbee interface port extra-settings) + (let ((conf (plain-file "bitlbee.conf" + (string-append " + [settings] + User = bitlbee + ConfigDir = /var/lib/bitlbee + DaemonInterface = " interface " + DaemonPort = " (number->string port) " +" extra-settings)))) + + (with-imported-modules (source-module-closure + '((gnu build shepherd) + (gnu system file-systems))) + (list (shepherd-service + (provision '(bitlbee)) + + ;; Note: If networking is not up, then /etc/resolv.conf + ;; doesn't get mapped in the container, hence the dependency + ;; on 'networking'. + (requirement '(user-processes networking)) + + (modules '((gnu build shepherd) + (gnu system file-systems))) + (start #~(make-forkexec-constructor/container + (list #$(file-append bitlbee "/sbin/bitlbee") + "-n" "-F" "-u" "bitlbee" "-c" #$conf) + + #:pid-file "/var/run/bitlbee.pid" + #:mappings (list (file-system-mapping + (source "/var/lib/bitlbee") + (target source) + (writable? #t))))) + (stop #~(make-kill-destructor))))))))) + +(define %bitlbee-accounts + ;; User group and account to run BitlBee. + (list (user-group (name "bitlbee") (system? #t)) + (user-account + (name "bitlbee") + (group "bitlbee") + (system? #t) + (comment "BitlBee daemon user") + (home-directory "/var/empty") + (shell (file-append shadow "/sbin/nologin"))))) + +(define %bitlbee-activation + ;; Activation gexp for BitlBee. + #~(begin + (use-modules (guix build utils)) + + ;; This directory is used to store OTR data. + (mkdir-p "/var/lib/bitlbee") + (let ((user (getpwnam "bitlbee"))) + (chown "/var/lib/bitlbee" + (passwd:uid user) (passwd:gid user))))) + +(define bitlbee-service-type + (service-type (name 'bitlbee) + (extensions + (list (service-extension shepherd-root-service-type + bitlbee-shepherd-service) + (service-extension account-service-type + (const %bitlbee-accounts)) + (service-extension activation-service-type + (const %bitlbee-activation)))) + (default-value (bitlbee-configuration)) + (description + "Run @url{http://bitlbee.org,BitlBee}, a daemon that acts as +a gateway between IRC and chat networks."))) + +(define* (bitlbee-service #:key (bitlbee bitlbee) + (interface "127.0.0.1") (port 6667) + (extra-settings "")) + "Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that +acts as a gateway between IRC and chat networks. + +The daemon will listen to the interface corresponding to the IP address +specified in @var{interface}, on @var{port}. @code{127.0.0.1} means that only +local clients can connect, whereas @code{0.0.0.0} means that connections can +come from any networking interface. + +In addition, @var{extra-settings} specifies a string to append to the +configuration file." + (service bitlbee-service-type + (bitlbee-configuration + (bitlbee bitlbee) + (interface interface) (port port) + (extra-settings extra-settings)))) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index c3ba0787c0..5ba3c5eed6 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -74,11 +74,6 @@ tor-service tor-service-type - bitlbee-configuration - bitlbee-configuration? - bitlbee-service - bitlbee-service-type - wicd-service-type wicd-service @@ -736,114 +731,6 @@ project's documentation} for more information." (service tor-hidden-service-type (hidden-service name mapping))) - -;;; -;;; BitlBee. -;;; - -(define-record-type* - bitlbee-configuration make-bitlbee-configuration - bitlbee-configuration? - (bitlbee bitlbee-configuration-bitlbee - (default bitlbee)) - (interface bitlbee-configuration-interface - (default "127.0.0.1")) - (port bitlbee-configuration-port - (default 6667)) - (extra-settings bitlbee-configuration-extra-settings - (default ""))) - -(define bitlbee-shepherd-service - (match-lambda - (($ bitlbee interface port extra-settings) - (let ((conf (plain-file "bitlbee.conf" - (string-append " - [settings] - User = bitlbee - ConfigDir = /var/lib/bitlbee - DaemonInterface = " interface " - DaemonPort = " (number->string port) " -" extra-settings)))) - - (with-imported-modules (source-module-closure - '((gnu build shepherd) - (gnu system file-systems))) - (list (shepherd-service - (provision '(bitlbee)) - - ;; Note: If networking is not up, then /etc/resolv.conf - ;; doesn't get mapped in the container, hence the dependency - ;; on 'networking'. - (requirement '(user-processes networking)) - - (modules '((gnu build shepherd) - (gnu system file-systems))) - (start #~(make-forkexec-constructor/container - (list #$(file-append bitlbee "/sbin/bitlbee") - "-n" "-F" "-u" "bitlbee" "-c" #$conf) - - #:pid-file "/var/run/bitlbee.pid" - #:mappings (list (file-system-mapping - (source "/var/lib/bitlbee") - (target source) - (writable? #t))))) - (stop #~(make-kill-destructor))))))))) - -(define %bitlbee-accounts - ;; User group and account to run BitlBee. - (list (user-group (name "bitlbee") (system? #t)) - (user-account - (name "bitlbee") - (group "bitlbee") - (system? #t) - (comment "BitlBee daemon user") - (home-directory "/var/empty") - (shell (file-append shadow "/sbin/nologin"))))) - -(define %bitlbee-activation - ;; Activation gexp for BitlBee. - #~(begin - (use-modules (guix build utils)) - - ;; This directory is used to store OTR data. - (mkdir-p "/var/lib/bitlbee") - (let ((user (getpwnam "bitlbee"))) - (chown "/var/lib/bitlbee" - (passwd:uid user) (passwd:gid user))))) - -(define bitlbee-service-type - (service-type (name 'bitlbee) - (extensions - (list (service-extension shepherd-root-service-type - bitlbee-shepherd-service) - (service-extension account-service-type - (const %bitlbee-accounts)) - (service-extension activation-service-type - (const %bitlbee-activation)))) - (default-value (bitlbee-configuration)) - (description - "Run @url{http://bitlbee.org,BitlBee}, a daemon that acts as -a gateway between IRC and chat networks."))) - -(define* (bitlbee-service #:key (bitlbee bitlbee) - (interface "127.0.0.1") (port 6667) - (extra-settings "")) - "Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that -acts as a gateway between IRC and chat networks. - -The daemon will listen to the interface corresponding to the IP address -specified in @var{interface}, on @var{port}. @code{127.0.0.1} means that only -local clients can connect, whereas @code{0.0.0.0} means that connections can -come from any networking interface. - -In addition, @var{extra-settings} specifies a string to append to the -configuration file." - (service bitlbee-service-type - (bitlbee-configuration - (bitlbee bitlbee) - (interface interface) (port port) - (extra-settings extra-settings)))) - ;;; ;;; Wicd.