all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#62102] [PATCH] services: Add whoogle-service-type.
@ 2023-03-10 20:11 conses
  2023-03-31 11:30 ` Bruno Victal
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: conses @ 2023-03-10 20:11 UTC (permalink / raw)
  To: 62102; +Cc: contact, Andrew Tropin

---
 gnu/services/web.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index d56e893527..66cc640a6d 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -35,6 +35,7 @@ (define-module (gnu services web)
   #: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)
@@ -46,6 +47,7 @@ (define-module (gnu services web)
   #: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)
@@ -235,6 +237,9 @@ (define-module (gnu services web)
 
             varnish-service-type
 
+            whoogle-service-type
+            whoogle-configuration
+
             patchwork-database-configuration
             patchwork-database-configuration?
             patchwork-database-configuration-engine
@@ -1575,6 +1580,47 @@ (define varnish-service-type
    (default-value
      (varnish-configuration))))
 
+\f
+;;;
+;;; Whoogle
+;;;
+
+(define-configuration/no-serialization whoogle-configuration
+  (whoogle
+    (package whoogle-search)
+    "The @code{whoogle-search} package to use."))
+
+(define (whoogle-shepherd-service config)
+  (list
+   (shepherd-service
+    (provision '(whoogle-search))
+    (start #~(make-forkexec-constructor
+              (list (string-append #$(whoogle-configuration-whoogle config)
+                                   "/bin/whoogle-search"))
+              #:environment-variables
+              (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
+                      (default-environment-variables))))
+    (stop #~(make-kill-destructor))
+    (documentation "Run a @code{whoogle-search} instance."))))
+
+(define (whoogle-profile-service config)
+  (list
+   (whoogle-configuration-whoogle config)))
+
+(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
+      whoogle-profile-service)))
+   (default-value (whoogle-configuration))
+   (description "Run the @code{whoogle-search} engine.")))
+
 \f
 ;;;
 ;;; Patchwork
-- 
2.39.1



-- 
Best regards,
conses




^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH] services: Add whoogle-service-type.
  2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
@ 2023-03-31 11:30 ` Bruno Victal
  2023-06-09 21:03   ` Ludovic Courtès
  2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
  2024-02-11 20:34 ` [bug#62102] [PATCH] " Miguel Ángel Moreno
  2 siblings, 1 reply; 9+ messages in thread
From: Bruno Victal @ 2023-03-31 11:30 UTC (permalink / raw)
  To: conses; +Cc: 62102, Andrew Tropin

Hi,

On 2023-03-10 20:11, conses wrote:
>  
> +            whoogle-service-type
> +            whoogle-configuration
> +

[...]

>              patchwork-database-configuration
>              patchwork-database-configuration?
>              patchwork-database-configuration-engine
> @@ -1575,6 +1580,47 @@ (define varnish-service-type
>     (default-value
>       (varnish-configuration))))
>  
> +\f

Missing page-break character here?
If you're using Emacs you can insert one with C-q C-l.

> +;;;
> +;;; Whoogle
> +;;;
> +
> +(define-configuration/no-serialization whoogle-configuration
> +  (whoogle
> +    (package whoogle-search)
> +    "The @code{whoogle-search} package to use."))

I prefer this field to be named 'package' instead, to make it less prone
to confusion. The accessor, whoogle-configuration-package, should be exported
as well.

> +(define (whoogle-shepherd-service config)
> +  (list
> +   (shepherd-service
> +    (provision '(whoogle-search))
> +    (start #~(make-forkexec-constructor
> +              (list (string-append #$(whoogle-configuration-whoogle config)
> +                                   "/bin/whoogle-search"))

In general, you may prefer to use match-record instead of using accessors
as it results in much less code to type.

> +              #:environment-variables
> +              (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
> +                      (default-environment-variables))))

Is (default-environment-variables) necessary?

> +    (stop #~(make-kill-destructor))
> +    (documentation "Run a @code{whoogle-search} instance."))))
> +
> +(define (whoogle-profile-service config)
> +  (list
> +   (whoogle-configuration-whoogle config)))

[...]

> +
> +(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
> +      whoogle-profile-service)))

You can use match-record here or use the accessor here instead.
(e.g., (compose list whoogle-configuration-package))


Could you add a system test for this service as well?
It makes things easier to check and maintain.


Cheers,
Bruno




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH] services: Add whoogle-service-type.
  2023-03-31 11:30 ` Bruno Victal
@ 2023-06-09 21:03   ` Ludovic Courtès
  2023-06-09 21:07     ` Miguel Ángel Moreno
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2023-06-09 21:03 UTC (permalink / raw)
  To: conses; +Cc: Bruno Victal, 62102, Andrew Tropin

Hi conses,

Did you have a chance to look into Bruno’s suggestions below?

Please let us know what you think.

Thanks in advance,
Ludo’.

Bruno Victal <mirai@makinata.eu> skribis:

> Hi,
>
> On 2023-03-10 20:11, conses wrote:
>>  
>> +            whoogle-service-type
>> +            whoogle-configuration
>> +
>
> [...]
>
>>              patchwork-database-configuration
>>              patchwork-database-configuration?
>>              patchwork-database-configuration-engine
>> @@ -1575,6 +1580,47 @@ (define varnish-service-type
>>     (default-value
>>       (varnish-configuration))))
>>  
>> +\f
>
> Missing page-break character here?
> If you're using Emacs you can insert one with C-q C-l.
>
>> +;;;
>> +;;; Whoogle
>> +;;;
>> +
>> +(define-configuration/no-serialization whoogle-configuration
>> +  (whoogle
>> +    (package whoogle-search)
>> +    "The @code{whoogle-search} package to use."))
>
> I prefer this field to be named 'package' instead, to make it less prone
> to confusion. The accessor, whoogle-configuration-package, should be exported
> as well.
>
>> +(define (whoogle-shepherd-service config)
>> +  (list
>> +   (shepherd-service
>> +    (provision '(whoogle-search))
>> +    (start #~(make-forkexec-constructor
>> +              (list (string-append #$(whoogle-configuration-whoogle config)
>> +                                   "/bin/whoogle-search"))
>
> In general, you may prefer to use match-record instead of using accessors
> as it results in much less code to type.
>
>> +              #:environment-variables
>> +              (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
>> +                      (default-environment-variables))))
>
> Is (default-environment-variables) necessary?
>
>> +    (stop #~(make-kill-destructor))
>> +    (documentation "Run a @code{whoogle-search} instance."))))
>> +
>> +(define (whoogle-profile-service config)
>> +  (list
>> +   (whoogle-configuration-whoogle config)))
>
> [...]
>
>> +
>> +(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
>> +      whoogle-profile-service)))
>
> You can use match-record here or use the accessor here instead.
> (e.g., (compose list whoogle-configuration-package))
>
>
> Could you add a system test for this service as well?
> It makes things easier to check and maintain.
>
>
> Cheers,
> Bruno




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH] services: Add whoogle-service-type.
  2023-06-09 21:03   ` Ludovic Courtès
@ 2023-06-09 21:07     ` Miguel Ángel Moreno
  2023-08-08 15:26       ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Miguel Ángel Moreno @ 2023-06-09 21:07 UTC (permalink / raw)
  To: 62102

On 2023-06-09 23:03, Ludovic Courtès wrote:

> Hi conses,
>
> Did you have a chance to look into Bruno’s suggestions below?
>
> Please let us know what you think.
>

Hey Ludovic,

Yes, I've noted them but I haven't gotten around to implementing them
yet.  I'll give this a shot soon.

>
> Bruno Victal <mirai@makinata.eu> skribis:
>
>> Hi,
>>
>> On 2023-03-10 20:11, conses wrote:
>>>  
>>> +            whoogle-service-type
>>> +            whoogle-configuration
>>> +
>>
>> [...]
>>
>>>              patchwork-database-configuration
>>>              patchwork-database-configuration?
>>>              patchwork-database-configuration-engine
>>> @@ -1575,6 +1580,47 @@ (define varnish-service-type
>>>     (default-value
>>>       (varnish-configuration))))
>>>  
>>> +\f
>>
>> Missing page-break character here?
>> If you're using Emacs you can insert one with C-q C-l.
>>
>>> +;;;
>>> +;;; Whoogle
>>> +;;;
>>> +
>>> +(define-configuration/no-serialization whoogle-configuration
>>> +  (whoogle
>>> +    (package whoogle-search)
>>> +    "The @code{whoogle-search} package to use."))
>>
>> I prefer this field to be named 'package' instead, to make it less prone
>> to confusion. The accessor, whoogle-configuration-package, should be exported
>> as well.
>>
>>> +(define (whoogle-shepherd-service config)
>>> +  (list
>>> +   (shepherd-service
>>> +    (provision '(whoogle-search))
>>> +    (start #~(make-forkexec-constructor
>>> +              (list (string-append #$(whoogle-configuration-whoogle config)
>>> +                                   "/bin/whoogle-search"))
>>
>> In general, you may prefer to use match-record instead of using accessors
>> as it results in much less code to type.
>>
>>> +              #:environment-variables
>>> +              (append (list "CONFIG_VOLUME=/var/cache/whoogle-search")
>>> +                      (default-environment-variables))))
>>
>> Is (default-environment-variables) necessary?
>>
>>> +    (stop #~(make-kill-destructor))
>>> +    (documentation "Run a @code{whoogle-search} instance."))))
>>> +
>>> +(define (whoogle-profile-service config)
>>> +  (list
>>> +   (whoogle-configuration-whoogle config)))
>>
>> [...]
>>
>>> +
>>> +(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
>>> +      whoogle-profile-service)))
>>
>> You can use match-record here or use the accessor here instead.
>> (e.g., (compose list whoogle-configuration-package))
>>
>>
>> Could you add a system test for this service as well?
>> It makes things easier to check and maintain.
>>
>>
>> Cheers,
>> Bruno

-- 
Best regards,
Miguel Ángel Moreno




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH] services: Add whoogle-service-type.
  2023-06-09 21:07     ` Miguel Ángel Moreno
@ 2023-08-08 15:26       ` Ludovic Courtès
  2023-08-13 10:57         ` Miguel Ángel Moreno
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2023-08-08 15:26 UTC (permalink / raw)
  To: Miguel Ángel Moreno; +Cc: 62102

Hey,

Miguel Ángel Moreno <contact@conses.eu> skribis:

> On 2023-06-09 23:03, Ludovic Courtès wrote:
>
>> Hi conses,
>>
>> Did you have a chance to look into Bruno’s suggestions below?
>>
>> Please let us know what you think.
>>
>
> Hey Ludovic,
>
> Yes, I've noted them but I haven't gotten around to implementing them
> yet.  I'll give this a shot soon.

Friendly ping!  :-)

Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH v2] services: Add whoogle-service-type.
  2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
  2023-03-31 11:30 ` Bruno Victal
@ 2023-08-13 10:37 ` Miguel Ángel Moreno
  2024-02-19 21:25   ` Ludovic Courtès
  2024-02-11 20:34 ` [bug#62102] [PATCH] " Miguel Ángel Moreno
  2 siblings, 1 reply; 9+ messages in thread
From: Miguel Ángel Moreno @ 2023-08-13 10:37 UTC (permalink / raw)
  To: 62102

* gnu/services/web.scm (whoogle-service-type): New variable.
* doc/guix.texi (Web Services): Document it.
---
 doc/guix.texi        | 32 +++++++++++++++++++++++++
 gnu/services/web.scm | 56 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 88 insertions(+)

diff --git a/doc/guix.texi b/doc/guix.texi
index 409ca2ad62..35746ec21e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -31031,6 +31031,38 @@ Web Services
 @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
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 818226a4f7..ed53572eec 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -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 @@ (define-module (gnu services web)
   #: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 @@ (define-module (gnu services web)
   #: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 @@ (define-module (gnu services web)
 
             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
@@ -1604,6 +1614,52 @@ (define varnish-service-type
    (default-value
      (varnish-configuration))))
 
+\f
+;;;
+;;; 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.")))
+
 \f
 ;;;
 ;;; Patchwork
-- 
2.41.0

-- 
Best regards,
Miguel Ángel Moreno




^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH] services: Add whoogle-service-type.
  2023-08-08 15:26       ` Ludovic Courtès
@ 2023-08-13 10:57         ` Miguel Ángel Moreno
  0 siblings, 0 replies; 9+ messages in thread
From: Miguel Ángel Moreno @ 2023-08-13 10:57 UTC (permalink / raw)
  To: 62102

On 2023-08-08 17:26, Ludovic Courtès wrote:

> Hey,
>

Hi Ludovic,

> Miguel Ángel Moreno <contact@conses.eu> skribis:
>
>> On 2023-06-09 23:03, Ludovic Courtès wrote:
>>
>>> Hi conses,
>>>
>>> Did you have a chance to look into Bruno’s suggestions below?
>>>
>>> Please let us know what you think.
>>>

I addressed Bruno's points, added extra fields to configure this service
further, and documented these in the manual.

In regard to tests, I had a glance at ./tests/services/ to see what kind
of tests there were, and most them test serialization or some
service-specific feature.  Since Whoogle is essentially a Flask web
application, I wouldn't know how to go about testing it in the context
of a service.

Other than that, happy to hear your feedback on the new revision :)

>>
>> Hey Ludovic,
>>
>> Yes, I've noted them but I haven't gotten around to implementing them
>> yet.  I'll give this a shot soon.
>
> Friendly ping!  :-)
>
> Ludo’.

-- 
Best regards,
Miguel Ángel Moreno




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH] services: Add whoogle-service-type.
  2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
  2023-03-31 11:30 ` Bruno Victal
  2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
@ 2024-02-11 20:34 ` Miguel Ángel Moreno
  2 siblings, 0 replies; 9+ messages in thread
From: Miguel Ángel Moreno @ 2024-02-11 20:34 UTC (permalink / raw)
  To: 62102; +Cc: mail, Ludovic Courtès, Sharlatan Hellseher

Hi,

Friendly ping on this patch :)

-- 
Best regards,
Miguel Ángel Moreno

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#62102] [PATCH v2] services: Add whoogle-service-type.
  2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
@ 2024-02-19 21:25   ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2024-02-19 21:25 UTC (permalink / raw)
  To: Miguel Ángel Moreno; +Cc: 62102

Hi,

Miguel Ángel Moreno <mail@migalmoreno.com> skribis:

> * gnu/services/web.scm (whoogle-service-type): New variable.
> * doc/guix.texi (Web Services): Document it.

Finally applied!  I followed up by expanding the Whoogle intro in the
manual a bit.

Things nice-to-have that come to mind:

  • A system test.  This is normally required for all new system
    services.  I was willing to make an exception here because it’s
    already taken way too long, but would be nice to have such a test to
    ensure the service actually keeps working.

  • Running the daemon with ‘least-authority-wrapper’.  It’s a good idea
    for all network-facing daemons.

  • Adding a Home service via ‘define-service-type-mapping’.

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-02-19 21:25 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-10 20:11 [bug#62102] [PATCH] services: Add whoogle-service-type conses
2023-03-31 11:30 ` Bruno Victal
2023-06-09 21:03   ` Ludovic Courtès
2023-06-09 21:07     ` Miguel Ángel Moreno
2023-08-08 15:26       ` Ludovic Courtès
2023-08-13 10:57         ` Miguel Ángel Moreno
2023-08-13 10:37 ` [bug#62102] [PATCH v2] " Miguel Ángel Moreno
2024-02-19 21:25   ` Ludovic Courtès
2024-02-11 20:34 ` [bug#62102] [PATCH] " Miguel Ángel Moreno

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.