gnu: home: services: Add home-znc-service-type.
* gnu/home/services/messaging.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * po/guix/POTFILES.in: Likewise. * doc/guix.texi (Messaging Home Services): Document it in new subsection.
This commit is contained in:
		
							parent
							
								
									2c2f382e75
								
							
						
					
					
						commit
						193f547ca3
					
				
					 4 changed files with 113 additions and 1 deletions
				
			
		|  | @ -41705,6 +41705,7 @@ services)}. | |||
| * Guix: Guix Home Services.     Services for Guix. | ||||
| * Fonts: Fonts Home Services.   Services for managing User's fonts. | ||||
| * Sound: Sound Home Services.   Dealing with audio. | ||||
| * Messaging: Messaging Home Services.   Services for managing messaging. | ||||
| @end menu | ||||
| @c In addition to that Home Services can provide | ||||
| 
 | ||||
|  | @ -42797,6 +42798,42 @@ Stopping the Shepherd service turns off broadcasting. | |||
| This is the multicast address used by default by the two services above. | ||||
| @end defvar | ||||
| 
 | ||||
| @node Messaging Home Services | ||||
| @subsection Messaging Home Services | ||||
| 
 | ||||
| @cindex znc | ||||
| The @uref{https://znc.in, ZNC bouncer} can be run as a daemon to manage | ||||
| your IRC presence.  With the @code{(gnu home services znc)} service, you | ||||
| can configure ZNC to run upon login. | ||||
| 
 | ||||
| You will have to provide a @file{~/.znc/configs/znc.conf} seperately. | ||||
| 
 | ||||
| Here is an example of a service and its configuration that you could add | ||||
| to the @code{services} field of your @code{home-environment}: | ||||
| 
 | ||||
| @lisp | ||||
| (service home-znc-service-type) | ||||
| @end lisp | ||||
| 
 | ||||
| @defvr {Scheme Variable} home-znc-service-type | ||||
| This is the type of the @code{git daemon} home service, whose value is an | ||||
| @code{home-znc-configuration} object. | ||||
| @end defvr | ||||
| 
 | ||||
| @deftp {Data Type} home-znc-configuration | ||||
| Available @code{home-znc-configuration} fields are: | ||||
| 
 | ||||
| @table @asis | ||||
| @item @code{git} (default: @code{git}) (type: file-like) | ||||
| The git package to use. | ||||
| 
 | ||||
| @item @code{extra-options} (default: @code{'()}) | ||||
| Extra options will be passed to @command{znc}, please run @command{man | ||||
| znc} for more information. | ||||
| 
 | ||||
| @end table | ||||
| @end deftp | ||||
| 
 | ||||
| @node Invoking guix home | ||||
| @section Invoking @command{guix home} | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										73
									
								
								gnu/home/services/messaging.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								gnu/home/services/messaging.scm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu home services messaging) | ||||
|   #:use-module (srfi srfi-26) | ||||
| 
 | ||||
|   #:use-module (ice-9 match) | ||||
| 
 | ||||
|   #:use-module (shepherd support) | ||||
| 
 | ||||
|   #:use-module (gnu home services) | ||||
|   #:use-module (gnu home services shepherd) | ||||
|   #:use-module (gnu packages messaging) | ||||
|   #:use-module (gnu services configuration) | ||||
|   #:use-module (gnu services shepherd) | ||||
|   #:use-module (guix records) | ||||
|   #:use-module (guix gexp) | ||||
| 
 | ||||
|   #:export (home-znc-configuration | ||||
|             home-znc-service-type)) | ||||
| 
 | ||||
| ;;; | ||||
| ;;; Znc. | ||||
| ;;; | ||||
| (define-record-type* <home-znc-configuration> | ||||
|   home-znc-configuration make-home-znc-configuration | ||||
|   home-znc-configuration? | ||||
|   (znc           home-znc-znc           ;string | ||||
|                  (default znc)) | ||||
|   (extra-options home-znc-extra-options ;list of string | ||||
|                  (default '()))) | ||||
| 
 | ||||
| (define (home-znc-services config) | ||||
|   "Return a <shepherd-service> for znc with CONFIG." | ||||
|   (match config | ||||
|     (($ <home-znc-configuration> znc extra-options) | ||||
|      (let* ((znc (file-append znc "/bin/znc")) | ||||
|             (command `(,znc | ||||
|                        "--foreground" | ||||
|                        ,@extra-options)) | ||||
|             (log-file (string-append %user-log-dir "/znc.log"))) | ||||
|        (list (shepherd-service | ||||
|               (documentation "Run the znc IRC bouncer.") | ||||
|               (provision '(znc)) | ||||
|               (start #~(make-forkexec-constructor '#$command | ||||
|                                                   #:log-file #$log-file)) | ||||
|               (stop #~(make-kill-destructor)))))))) | ||||
| 
 | ||||
| (define home-znc-service-type | ||||
|   (service-type | ||||
|    (name 'home-znc) | ||||
|    (default-value (home-znc-configuration)) | ||||
|    (extensions | ||||
|     (list (service-extension home-shepherd-service-type | ||||
|                              home-znc-services))) | ||||
|    (description | ||||
|     "Install and configure @command{znc}, an @acronym{IRC, Internet Relay | ||||
| Chat} bouncer, as a Shepherd service."))) | ||||
|  | @ -11,7 +11,7 @@ | |||
| # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 | ||||
| # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
 | ||||
| # Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 | ||||
| # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 | ||||
| # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 | ||||
| # Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 | ||||
| # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 | ||||
| # Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 | ||||
|  | @ -91,6 +91,7 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/home/services/symlink-manager.scm		\
 | ||||
|   %D%/home/services/fontutils.scm		\
 | ||||
|   %D%/home/services/guix.scm			\
 | ||||
|   %D%/home/services/messaging.scm		\
 | ||||
|   %D%/home/services/pm.scm			\
 | ||||
|   %D%/home/services/shells.scm			\
 | ||||
|   %D%/home/services/shepherd.scm		\
 | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ gnu/services/shepherd.scm | |||
| gnu/services/samba.scm | ||||
| gnu/services/version-control.scm | ||||
| gnu/home/services.scm | ||||
| gnu/home/services/messaging.scm | ||||
| gnu/home/services/ssh.scm | ||||
| gnu/home/services/symlink-manager.scm | ||||
| gnu/system/file-systems.scm | ||||
|  |  | |||
		Reference in a new issue