diff options
| author | Ashvith Shetty <ashvith@noreply.codeberg.org> | 2025-06-28 22:23:05 +0530 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2025-12-22 15:42:39 +0100 |
| commit | 4b25873c123da8d835e2c2078f1ed3d07023666f (patch) | |
| tree | b4093b6651422fccb401cd21c27d2bcbb3e629b9 /gnu/services | |
| parent | b00a27c42742037ba66759bfaad89c001c46d8b3 (diff) | |
services: Modernize redis service.
* gnu/services/databases.scm
(redis-configuration): Rewrite using `define-configuration'.
(redis-shepherd-service): Honor it.
* doc/guix.texi (Database Services) <redis>: Regenerate
documentation.
Change-Id: I5b99822ca3d8d23fb5133497d00eada0336d0c65
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #2158
Diffstat (limited to 'gnu/services')
| -rw-r--r-- | gnu/services/databases.scm | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index f507727e5c3..f9820c37d56 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -28,6 +28,7 @@ (define-module (gnu services databases) #:use-module (gnu services) + #:use-module (gnu services configuration) #:use-module (gnu services shepherd) #:use-module (gnu system shadow) #:autoload (gnu system accounts) (default-shell) @@ -786,19 +787,29 @@ port=" (number->string port) " ;;; Redis ;;; -(define-record-type* <redis-configuration> - redis-configuration make-redis-configuration - redis-configuration? - (redis redis-configuration-redis ;file-like - (default redis)) - (bind redis-configuration-bind - (default "127.0.0.1")) - (port redis-configuration-port - (default 6379)) - (working-directory redis-configuration-working-directory - (default "/var/lib/redis")) - (config-file redis-configuration-config-file - (default #f))) +(define-maybe string) + +(define (uglify-field-name field-name) + (string-delete #\? (symbol->string field-name))) + +(define (serialize-field field-name val) + #~(format #f "~a=~a\n" #$(uglify-field-name field-name) #$val)) + +(define serialize-string serialize-field) +(define serialize-number serialize-field) + +(define-configuration redis-configuration + (redis (package redis) + "The Redis package to use.") + (bind (string "127.0.0.1") + "Network interface on which to listen.") + (port (number 6379) + "Port on which to accept connections on, +a value of 0 will disable listening on a TCP socket.") + (working-directory (string "/var/lib/redis") + "Directory in which to store the +database and related files.") + (config-file maybe-string "Default location for config file.")) (define (default-redis.conf bind port working-directory) (mixed-text-file "redis.conf" @@ -832,7 +843,8 @@ port=" (number->string port) " (match-lambda (($ <redis-configuration> redis bind port working-directory config-file) (let ((config-file - (or config-file + (if (maybe-value-set? config-file) + config-file (default-redis.conf bind port working-directory)))) (list (shepherd-service (provision '(redis)) @@ -857,3 +869,9 @@ port=" (number->string port) " (const %redis-accounts)))) (default-value (redis-configuration)) (description "Run Redis, a caching key/value store."))) + +;;; +;;; Generate documentation. +;;; +(define (redis-generate-doc) + (configuration->documentation 'redis-configuration)) |
