From dcad57d5fca43a111e1b314264171c80d4d9a75b Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 12 Dec 2018 10:15:08 +0200 Subject: services: Add quassel. * gnu/services/messaging.scm (): New record type. (%quassel-account, %quassel-activation): New procedures. (quassel-service-type): New variable. * gnu/tests/messaging.scm (%test-quassel): New variable. (run-quassel-test): New procedure. * doc/guix.texi (Messaging): Document quassel service. --- gnu/services/messaging.scm | 90 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) (limited to 'gnu/services/messaging.scm') diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm index 1108006411..92f86a1b83 100644 --- a/gnu/services/messaging.scm +++ b/gnu/services/messaging.scm @@ -22,6 +22,8 @@ (define-module (gnu services messaging) #:use-module (gnu packages messaging) #:use-module (gnu packages admin) + #:use-module (gnu packages irc) + #:use-module (gnu packages tls) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu services configuration) @@ -50,7 +52,10 @@ (define-module (gnu services messaging) bitlbee-configuration bitlbee-configuration? bitlbee-service - bitlbee-service-type)) + bitlbee-service-type + + quassel-configuration + quassel-service-type)) ;;; Commentary: ;;; @@ -895,3 +900,86 @@ (define* (bitlbee-service #:key (bitlbee bitlbee) ;deprecated (bitlbee bitlbee) (interface interface) (port port) (extra-settings extra-settings)))) + + +;;; +;;; Quassel. +;;; + +(define-record-type* + quassel-configuration make-quassel-configuration + quassel-configuration? + (quassel quassel-configuration-quassel + (default quassel)) + (interface quassel-configuration-interface + (default "::,0.0.0.0")) + (port quassel-configuration-port + (default 4242)) + (loglevel quassel-configuration-loglevel + (default "Info"))) + +(define quassel-shepherd-service + (match-lambda + (($ quassel interface port loglevel) + (with-imported-modules (source-module-closure + '((gnu build shepherd) + (gnu system file-systems))) + (list (shepherd-service + (provision '(quassel)) + (requirement '(user-processes networking)) + (modules '((gnu build shepherd) + (gnu system file-systems))) + (start #~(make-forkexec-constructor/container + (list #$(file-append quassel "/bin/quasselcore") + "--configdir=/var/lib/quassel" + "--logfile=/var/log/quassel/core.log" + (string-append "--loglevel=" #$loglevel) + (string-append "--port=" (number->string #$port)) + (string-append "--listen=" #$interface)) + #:mappings (list (file-system-mapping + (source "/var/lib/quassel") + (target source) + (writable? #t)) + (file-system-mapping + (source "/var/log/quassel") + (target source) + (writable? #t))))) + (stop #~(make-kill-destructor)))))))) + +(define %quassel-account + (list (user-group (name "quassel") (system? #t)) + (user-account + (name "quasselcore") + (group "quassel") + (system? #t) + (comment "Quassel daemon user") + (home-directory "/var/lib/quassel") + (shell (file-append shadow "/sbin/nologin"))))) + +(define %quassel-activation + #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/lib/quassel") + (mkdir-p "/var/log/quassel") + (let ((cert "/var/lib/quassel/quasselCert.pem")) + (unless (file-exists? cert) + (invoke #$(file-append openssl "/bin/openssl") + "req" "-x509" "-nodes" "-batch" "-days" "680" "-newkey" + "rsa" "-keyout" cert "-out" cert))))) + +(define quassel-service-type + (service-type (name 'quassel) + (extensions + (list (service-extension shepherd-root-service-type + quassel-shepherd-service) + (service-extension profile-service-type + (compose list quassel-configuration-quassel)) + (service-extension account-service-type + (const %quassel-account)) + (service-extension activation-service-type + (const %quassel-activation)))) + (default-value (quassel-configuration)) + (description + "Run @url{https://quassel-irc.org/,quasselcore}, the backend +for the distributed IRC client quassel, which allows you to connect from +multiple machines simultaneously."))) -- cgit v1.2.3 From 65a67bf711b14bc7200f6730c0f173375ca12974 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 10 Jan 2019 14:50:09 +0100 Subject: services: Use 'define-deprecated' for service procedures. * gnu/services/base.scm (urandom-seed-service, gpm-service): Define using 'define-deprecated'. * gnu/services/messaging.scm (bitlbee-service): Likewise. * gnu/services/networking.scm (dhcp-client-service): Likewise. (ntp-service): Likewise. * gnu/services/xorg.scm (slim-service): Likewise. (gdm-service): Likewise. --- gnu/services/base.scm | 13 ++++++++----- gnu/services/messaging.scm | 10 ++++++---- gnu/services/networking.scm | 13 ++++++++----- gnu/services/xorg.scm | 25 ++++++++++++++----------- 4 files changed, 36 insertions(+), 25 deletions(-) (limited to 'gnu/services/messaging.scm') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 67bdaef18c..6e99cbfec4 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2015, 2016 Alex Kost ;;; Copyright © 2015, 2016 Mark H Weaver ;;; Copyright © 2015 Sou Bunnbu @@ -25,6 +25,7 @@ (define-module (gnu services base) #:use-module (guix store) + #:use-module (guix deprecation) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu system pam) @@ -614,8 +615,9 @@ (define urandom-seed-service-type generator (RNG) with the value recorded when the system was last shut down."))) -(define (urandom-seed-service) ;deprecated - (service urandom-seed-service-type #f)) +(define-deprecated (urandom-seed-service) + urandom-seed-service-type + (service urandom-seed-service-type)) ;;; @@ -2078,8 +2080,9 @@ (define gpm-service-type notably to select, copy, and paste text. The default options use the @code{ps2} protocol, which works for both USB and PS/2 mice."))) -(define* (gpm-service #:key (gpm gpm) ;deprecated - (options %default-gpm-options)) +(define-deprecated (gpm-service #:key (gpm gpm) + (options %default-gpm-options)) + gpm-service-type "Run @var{gpm}, the general-purpose mouse daemon, with the given command-line @var{options}. GPM allows users to use the mouse in the console, notably to select, copy, and paste text. The default value of @var{options} diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm index 92f86a1b83..e70f1b70ef 100644 --- a/gnu/services/messaging.scm +++ b/gnu/services/messaging.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2018 Clément Lassieur ;;; Copyright © 2017 Mathieu Othacehe -;;; Copyright © 2015, 2017, 2018 Ludovic Courtès +;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2018 Pierre-Antoine Rouby ;;; ;;; This file is part of GNU Guix. @@ -32,6 +32,7 @@ (define-module (gnu services messaging) #:use-module (guix modules) #:use-module (guix records) #:use-module (guix packages) + #:use-module (guix deprecation) #:use-module (srfi srfi-1) #:use-module (srfi srfi-35) #:use-module (ice-9 match) @@ -882,9 +883,10 @@ (define bitlbee-service-type "Run @url{http://bitlbee.org,BitlBee}, a daemon that acts as a gateway between IRC and chat networks."))) -(define* (bitlbee-service #:key (bitlbee bitlbee) ;deprecated - (interface "127.0.0.1") (port 6667) - (extra-settings "")) +(define-deprecated (bitlbee-service #:key (bitlbee bitlbee) + (interface "127.0.0.1") (port 6667) + (extra-settings "")) + bitlbee-service-type "Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that acts as a gateway between IRC and chat networks. diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index bfa6e297e6..2f49bf28dd 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016, 2018 Efraim Flashner ;;; Copyright © 2016 John Darrington @@ -45,6 +45,7 @@ (define-module (gnu services networking) #:use-module (guix gexp) #:use-module (guix records) #:use-module (guix modules) + #:use-module (guix deprecation) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) @@ -206,7 +207,8 @@ (define ifaces (stop #~(make-kill-destructor)))) isc-dhcp)) -(define* (dhcp-client-service #:key (dhcp isc-dhcp)) ;deprecated +(define-deprecated (dhcp-client-service #:key (dhcp isc-dhcp)) + dhcp-client-service-type "Return a service that runs @var{dhcp}, a Dynamic Host Configuration Protocol (DHCP) client, on all the non-loopback network interfaces." (service dhcp-client-service-type dhcp)) @@ -374,9 +376,10 @@ (define ntp-service-type will keep the system clock synchronized with that of the given servers.") (default-value (ntp-configuration)))) -(define* (ntp-service #:key (ntp ntp) ;deprecated - (servers %ntp-servers) - allow-large-adjustment?) +(define-deprecated (ntp-service #:key (ntp ntp) + (servers %ntp-servers) + allow-large-adjustment?) + ntp-service-type "Return a service that runs the daemon from @var{ntp}, the @uref{http://www.ntp.org, Network Time Protocol package}. The daemon will keep the system clock synchronized with that of @var{servers}. diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 4d1674f063..2f91619219 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -40,6 +40,7 @@ (define-module (gnu services xorg) #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix records) + #:use-module (guix deprecation) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) @@ -521,14 +522,15 @@ (define slim-service-type (const (list xterm))))) (default-value (slim-configuration)))) -(define* (slim-service #:key (slim slim) ;deprecated - (allow-empty-passwords? #t) auto-login? - (default-user "") - (theme %default-slim-theme) - (theme-name %default-slim-theme-name) - (xauth xauth) (shepherd shepherd) - (auto-login-session #f) - (startx (xorg-start-command))) +(define-deprecated (slim-service #:key (slim slim) + (allow-empty-passwords? #t) auto-login? + (default-user "") + (theme %default-slim-theme) + (theme-name %default-slim-theme-name) + (xauth xauth) (shepherd shepherd) + (auto-login-session #f) + (startx (xorg-start-command))) + slim-service-type "Return a service that spawns the SLiM graphical login manager, which in turn starts the X display server with @var{startx}, a command as returned by @code{xorg-start-command}. @@ -730,9 +732,10 @@ (define gdm-service-type ;; This service isn't working yet; it gets as far as starting to run the ;; greeter from gnome-shell but doesn't get any further. It is here because ;; it doesn't hurt anyone and perhaps it inspires someone to fix it :) -(define* (gdm-service #:key (gdm gdm) ;deprecated - (allow-empty-passwords? #t) - (x-server (xorg-wrapper))) +(define-deprecated (gdm-service #:key (gdm gdm) + (allow-empty-passwords? #t) + (x-server (xorg-wrapper))) + gdm-service-type "Return a service that spawns the GDM graphical login manager, which in turn starts the X display server with @var{X}, a command as returned by @code{xorg-wrapper}. -- cgit v1.2.3