mirror of
				https://codeberg.org/hako/Rosenthal.git
				synced 2025-11-04 11:44:48 +00:00 
			
		
		
		
	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:
		
							parent
							
								
									4938fbe373
								
							
						
					
					
						commit
						c171b73ae7
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user