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 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 | ||||
| @cindex Patchwork | ||||
| 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 © 2022 Simen Endsjø <simendsjo@gmail.com> | ||||
| ;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu> | ||||
| ;;; Copyright © 2023 Miguel Ángel Moreno <mail@migalmoreno.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -36,6 +37,7 @@ | |||
|   #:use-module (gnu services) | ||||
|   #:use-module (gnu services shepherd) | ||||
|   #:use-module (gnu services admin) | ||||
|   #:use-module (gnu services configuration) | ||||
|   #:use-module (gnu services getmail) | ||||
|   #:use-module (gnu services mail) | ||||
|   #:use-module (gnu system pam) | ||||
|  | @ -47,6 +49,7 @@ | |||
|   #:use-module (gnu packages patchutils) | ||||
|   #:use-module (gnu packages php) | ||||
|   #:use-module (gnu packages python) | ||||
|   #:use-module (gnu packages python-web) | ||||
|   #:use-module (gnu packages gnupg) | ||||
|   #:use-module (gnu packages guile) | ||||
|   #:use-module (gnu packages logging) | ||||
|  | @ -240,6 +243,13 @@ | |||
| 
 | ||||
|             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-engine | ||||
|  | @ -1603,6 +1613,52 @@ files.") | |||
|    (default-value | ||||
|      (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 | ||||
|  |  | |||
		Reference in a new issue