services: Add whoogle-service-type.
* gnu/services/web.scm (whoogle-service-type): New variable. * doc/guix.texi (Web Services): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
		
							parent
							
								
									0497b1696f
								
							
						
					
					
						commit
						0a7bf792c8
					
				
					 2 changed files with 88 additions and 0 deletions
				
			
		|  | @ -31863,6 +31863,38 @@ Additional arguments to pass to the @command{varnishd} process. | ||||||
| @end table | @end table | ||||||
| @end deftp | @end deftp | ||||||
| 
 | 
 | ||||||
|  | @subheading Whoogle Search | ||||||
|  | @cindex Whoogle Search | ||||||
|  | @uref{https://github.com/benbusby/whoogle-search, Whoogle Search} is a | ||||||
|  | self-hosted, ad-free, privacy-respecting metasearch engine that collects | ||||||
|  | and displays Google search results. | ||||||
|  | 
 | ||||||
|  | @defvar whoogle-service-type | ||||||
|  | Service type for Whoogle Search. | ||||||
|  | @end defvar | ||||||
|  | 
 | ||||||
|  | @deftp {Data Type} whoogle-configuration | ||||||
|  | Data type representing Whoogle Search service configuration. | ||||||
|  | 
 | ||||||
|  | @table @asis | ||||||
|  | @item @code{package} (default: @code{whoogle-search}) | ||||||
|  | The Whoogle Search package to use. | ||||||
|  | 
 | ||||||
|  | @item @code{host} (default: @code{"127.0.0.1"}) | ||||||
|  | The host address to run Whoogle on. | ||||||
|  | 
 | ||||||
|  | @item @code{port} (default: @code{5000}) | ||||||
|  | The port where Whoogle will be exposed. | ||||||
|  | 
 | ||||||
|  | @item @code{environment-variables} (default: @code{'()}) | ||||||
|  | A list of strings with the environment variables to configure Whoogle. | ||||||
|  | You can consult | ||||||
|  | @uref{https://github.com/benbusby/whoogle-search/blob/main/whoogle.template.env, | ||||||
|  | its environment variables template} for the list of available options. | ||||||
|  | 
 | ||||||
|  | @end table | ||||||
|  | @end deftp | ||||||
|  | 
 | ||||||
| @subsubheading Patchwork | @subsubheading Patchwork | ||||||
| @cindex Patchwork | @cindex Patchwork | ||||||
| Patchwork is a patch tracking system.  It can collect patches sent to a | Patchwork is a patch tracking system.  It can collect patches sent to a | ||||||
|  |  | ||||||
|  | @ -16,6 +16,7 @@ | ||||||
| ;;; Copyright © 2020, 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> | ;;; Copyright © 2020, 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> | ||||||
| ;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com> | ;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com> | ||||||
| ;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu> | ;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu> | ||||||
|  | ;;; Copyright © 2023 Miguel Ángel Moreno <mail@migalmoreno.com> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -36,6 +37,7 @@ | ||||||
|   #:use-module (gnu services) |   #:use-module (gnu services) | ||||||
|   #:use-module (gnu services shepherd) |   #:use-module (gnu services shepherd) | ||||||
|   #:use-module (gnu services admin) |   #:use-module (gnu services admin) | ||||||
|  |   #:use-module (gnu services configuration) | ||||||
|   #:use-module (gnu services getmail) |   #:use-module (gnu services getmail) | ||||||
|   #:use-module (gnu services mail) |   #:use-module (gnu services mail) | ||||||
|   #:use-module (gnu system pam) |   #:use-module (gnu system pam) | ||||||
|  | @ -47,6 +49,7 @@ | ||||||
|   #:use-module (gnu packages patchutils) |   #:use-module (gnu packages patchutils) | ||||||
|   #:use-module (gnu packages php) |   #:use-module (gnu packages php) | ||||||
|   #:use-module (gnu packages python) |   #:use-module (gnu packages python) | ||||||
|  |   #:use-module (gnu packages python-web) | ||||||
|   #:use-module (gnu packages gnupg) |   #:use-module (gnu packages gnupg) | ||||||
|   #:use-module (gnu packages guile) |   #:use-module (gnu packages guile) | ||||||
|   #:use-module (gnu packages logging) |   #:use-module (gnu packages logging) | ||||||
|  | @ -240,6 +243,13 @@ | ||||||
| 
 | 
 | ||||||
|             varnish-service-type |             varnish-service-type | ||||||
| 
 | 
 | ||||||
|  |             whoogle-service-type | ||||||
|  |             whoogle-configuration | ||||||
|  |             whoogle-configuration-package | ||||||
|  |             whoogle-configuration-host | ||||||
|  |             whoogle-configuration-port | ||||||
|  |             whoogle-configuration-environment-variables | ||||||
|  | 
 | ||||||
|             patchwork-database-configuration |             patchwork-database-configuration | ||||||
|             patchwork-database-configuration? |             patchwork-database-configuration? | ||||||
|             patchwork-database-configuration-engine |             patchwork-database-configuration-engine | ||||||
|  | @ -1603,6 +1613,52 @@ files.") | ||||||
|    (default-value |    (default-value | ||||||
|      (varnish-configuration)))) |      (varnish-configuration)))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | ;;; | ||||||
|  | ;;; Whoogle | ||||||
|  | ;;; | ||||||
|  | 
 | ||||||
|  | (define-configuration/no-serialization whoogle-configuration | ||||||
|  |   (package | ||||||
|  |     (package whoogle-search) | ||||||
|  |     "The @code{whoogle-search} package to use.") | ||||||
|  |   (host | ||||||
|  |    (string "127.0.0.1") | ||||||
|  |    "The host address to run Whoogle on.") | ||||||
|  |   (port | ||||||
|  |    (integer 5000) | ||||||
|  |    "The port to run Whoogle on.") | ||||||
|  |   (environment-variables | ||||||
|  |    (list-of-strings '()) | ||||||
|  |    "A list of strings specifying environment variables used to configure | ||||||
|  | Whoogle.")) | ||||||
|  | 
 | ||||||
|  | (define (whoogle-shepherd-service config) | ||||||
|  |   (match-record config <whoogle-configuration> | ||||||
|  |     (package host port environment-variables) | ||||||
|  |     (list | ||||||
|  |      (shepherd-service | ||||||
|  |       (provision '(whoogle-search)) | ||||||
|  |       (start #~(make-forkexec-constructor | ||||||
|  |                 (list (string-append #$package "/bin/whoogle-search") | ||||||
|  |                       "--host" #$host "--port" #$(number->string port)) | ||||||
|  |                 #:environment-variables | ||||||
|  |                 (append (list "CONFIG_VOLUME=/var/cache/whoogle-search") | ||||||
|  |                         '#$environment-variables))) | ||||||
|  |       (stop #~(make-kill-destructor)) | ||||||
|  |       (documentation "Run a @code{whoogle-search} instance."))))) | ||||||
|  | 
 | ||||||
|  | (define whoogle-service-type | ||||||
|  |   (service-type | ||||||
|  |    (name 'whoogle-search) | ||||||
|  |    (extensions | ||||||
|  |     (list (service-extension shepherd-root-service-type | ||||||
|  |                              whoogle-shepherd-service) | ||||||
|  |           (service-extension profile-service-type | ||||||
|  |                              (compose list whoogle-configuration-package)))) | ||||||
|  |    (default-value (whoogle-configuration)) | ||||||
|  |    (description "Set up the @code{whoogle-search} metasearch engine."))) | ||||||
|  | 
 | ||||||
|  |  | ||||||
| ;;; | ;;; | ||||||
| ;;; Patchwork | ;;; Patchwork | ||||||
|  |  | ||||||
		Reference in a new issue