diff options
| author | Sören Tempel <soeren+git@soeren-tempel.net> | 2026-02-08 07:27:24 +0100 |
|---|---|---|
| committer | Danny Milosavljevic <dannym@friendly-machines.com> | 2026-02-08 23:53:58 +0100 |
| commit | 64622248cdc7eae23ff06928f516677b41c4d97d (patch) | |
| tree | cc0c265dfb92005cd63edd27c6f5ff28c716b463 /gnu | |
| parent | daca67c56004bcf2fc7abb038384e2f97215f265 (diff) | |
services: web: Add go-webdav.
* gnu/services/web.scm (go-webdav-service-type): New service.
(go-webdav-account-service): New variable.
(go-webdav-shepherd-service): New procedures.
* gnu/tests/web.scm (%test-go-webdav): Add tests for the service.
* doc/guix.texi (Web Services): Document it.
Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/services/web.scm | 41 | ||||
| -rw-r--r-- | gnu/tests/web.scm | 22 |
2 files changed, 63 insertions, 0 deletions
diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 9d314368ff9..4ba2a2268d8 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -57,6 +57,7 @@ #:use-module (gnu packages python-web) #:use-module (gnu packages rsync) #:use-module (gnu packages gnupg) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages guile) #:use-module (gnu packages logging) #:use-module (gnu packages mail) @@ -255,6 +256,8 @@ whoogle-configuration-port whoogle-configuration-environment-variables + go-webdav-service-type + patchwork-database-configuration patchwork-database-configuration? patchwork-database-configuration-engine @@ -1636,6 +1639,44 @@ Whoogle.")) ;;; +;;; go-webdav +;;; + +(define (go-webdav-shepherd-service args) + (list (shepherd-service + (documentation "go-webdav daemon.") + (provision '(go-webdav)) + ;; go-webdav may be bound to a particular IP address, hence + ;; only start it after the networking service has started. + (requirement '(user-processes networking)) + (start #~(make-forkexec-constructor + (list (string-append #$go-webdav "/bin/webdav-server") + #$@args))) + (stop #~(make-kill-destructor))))) + +(define go-webdav-account-service + (list (user-group (name "go-webdav") (system? #t)) + (user-account + (name "go-webdav") + (group "go-webdav") + (system? #t) + (comment "go-webdav daemon user") + (home-directory "/var/empty") + (shell (file-append shadow "/sbin/nologin"))))) + +(define-public go-webdav-service-type + (service-type (name 'go-webdav) + (description "Run the go-webdav WebDAV server.") + (extensions + (list (service-extension account-service-type + (const go-webdav-account-service)) + (service-extension shepherd-root-service-type + go-webdav-shepherd-service))) + (compose concatenate) + (default-value '("-addr" "127.0.0.1:8080")))) + + +;;; ;;; Patchwork ;;; diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm index 47879aa08f7..4f07eb967a8 100644 --- a/gnu/tests/web.scm +++ b/gnu/tests/web.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages databases) #:use-module (gnu packages guile-xyz) #:use-module (gnu packages gnupg) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages patchutils) #:use-module (gnu packages python) #:use-module (gnu packages tls) @@ -57,6 +58,7 @@ %test-php-fpm %test-hpcguix-web %test-anonip + %test-go-webdav %test-patchwork %test-agate %test-miniflux-admin-string @@ -604,6 +606,26 @@ HTTP-PORT, along with php-fpm." ;;; +;;; go-webdav +;;; + +(define %go-webdav-os + (simple-operating-system + (service dhcpcd-service-type) + (simple-service 'make-http-root activation-service-type + %make-http-root) + (service go-webdav-service-type + ;; run-webserver-test requires :8080 to be used as the port. + '("-addr" ":8080" "/srv/http/")))) + +(define %test-go-webdav + (system-test + (name "go-webdav") + (description "Test that go-webdav can handle HTTP requests.") + (value (run-webserver-test name %go-webdav-os)))) + + +;;; ;;; Patchwork ;;; |
