(define-module (yamit services vpn) #:use-module (guix gexp) #:use-module (gnu packages bash) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (guix records) #:use-module (gnu system shadow) #:use-module (glicid packages caddy)) (define-record-type* caddy-configuration make-caddy-configuration caddy-configuration? (caddy caddy-configuration-caddy (default caddy-dirty)) (config-file caddy-config-file (default "/etc/caddy/Caddyfile")) (log-file caddy-log-file (default "/var/log/caddy.log")) ) (define (caddy-shepherd-service config) (let* ((caddy (caddy-configuration-caddy config))) (shepherd-service (provision '(caddy)) (documentation "Run caddy daemon.") (requirement '(user-processes)) (start #~(make-forkexec-constructor (list (string-append #$caddy "/sbin/caddy") "run" "--config" #$config-file) #:log-file #$log-file #:environment-variables (list "PATH=/run/current-system/profile/bin:/run/current-system/profile/sbin:/run/current-system/profile/libexec"))) (stop #~(make-kill-destructor))))) (define caddy-service-type (service-type (name 'caddy) (default-value (caddy-configuration)) (extensions (list ;(service-extension activation-service-type (const %caddy-activation)) (service-extension shepherd-root-service-type (compose list caddy-shepherd-service)))) (description "run caddy web server service")))