services: caddy: Use etc-service-type to place configuration file.

* modules/rosenthal/services/web.scm (caddy-etc): New procedure.
(caddy-activation): Create /var/log/caddy.  Remove use of /etc/caddy.
(caddy-shepherd-services): Add "configuration" and "reload" actions.
This commit is contained in:
Hilton Chain 2025-09-03 21:10:31 +08:00
parent 4938fbe373
commit c171b73ae7
No known key found for this signature in database
GPG Key ID: ACC66D09CA528292

View File

@ -79,9 +79,7 @@
(program (file-append caddy "/bin/caddy"))
(capabilities "cap_net_bind_service=+ep")))))
(define caddy-activation
(match-record-lambda <caddy-configuration>
(caddyfile)
(define (caddy-activation config)
(with-imported-modules
(source-module-closure '((guix build utils)
(gnu build activation)))
@ -89,17 +87,14 @@
(use-modules (srfi srfi-26)
(guix build utils)
(gnu build activation))
(let* ((config-dir "/etc/caddy")
(data-dir "/var/lib/caddy")
(config-file (in-vicinity config-dir "Caddyfile"))
(user (getpwnam "caddy")))
(for-each (cut mkdir-p/perms <> user #o750)
(list config-dir data-dir))
(copy-file #$caddyfile config-file)
(for-each
(lambda (file)
(chown file (passwd:uid user) (passwd:gid user)))
(find-files data-dir #:directories? #t)))))))
(let ((user (getpwnam "caddy")))
(mkdir-p/perms "/var/lib/caddy" user #o750)
(mkdir-p/perms "/var/log/caddy" user #o755)))))
(define caddy-etc
(match-record-lambda <caddy-configuration>
(caddyfile)
`(("caddy/Caddyfile" ,caddyfile))))
(define caddy-shepherd-services
(match-record-lambda <caddy-configuration>
@ -119,6 +114,20 @@
#:environment-variables '("HOME=/var/lib/caddy")))
(stop
#~(make-kill-destructor))
(actions
(list (shepherd-configuration-action "/etc/caddy/Caddyfile")
(shepherd-action
(name 'reload)
(documentation "Reload Caddy configuration file.")
(procedure
#~(lambda (pid)
(if pid
(begin
(system* "/run/privileged/bin/caddy" "reload"
"--config" "/etc/caddy/Caddyfile")
(display "Service caddy has been asked to \
reload its configuration file."))
(display "Service caddy is not running.")))))))
(auto-start? auto-start?)))))
(define caddy-service-type
@ -127,10 +136,12 @@
(extensions
(list (service-extension account-service-type
caddy-accounts)
(service-extension privileged-program-service-type
caddy-privileged-programs)
(service-extension activation-service-type
caddy-activation)
(service-extension etc-service-type
caddy-etc)
(service-extension privileged-program-service-type
caddy-privileged-programs)
(service-extension shepherd-root-service-type
caddy-shepherd-services)))
(default-value #f)