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,27 +79,22 @@
 | 
				
			|||||||
           (program (file-append caddy "/bin/caddy"))
 | 
					           (program (file-append caddy "/bin/caddy"))
 | 
				
			||||||
           (capabilities "cap_net_bind_service=+ep")))))
 | 
					           (capabilities "cap_net_bind_service=+ep")))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define caddy-activation
 | 
					(define (caddy-activation config)
 | 
				
			||||||
 | 
					  (with-imported-modules
 | 
				
			||||||
 | 
					      (source-module-closure '((guix build utils)
 | 
				
			||||||
 | 
					                               (gnu build activation)))
 | 
				
			||||||
 | 
					    #~(begin
 | 
				
			||||||
 | 
					        (use-modules (srfi srfi-26)
 | 
				
			||||||
 | 
					                     (guix build utils)
 | 
				
			||||||
 | 
					                     (gnu build activation))
 | 
				
			||||||
 | 
					        (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>
 | 
					  (match-record-lambda <caddy-configuration>
 | 
				
			||||||
      (caddyfile)
 | 
					      (caddyfile)
 | 
				
			||||||
    (with-imported-modules
 | 
					    `(("caddy/Caddyfile" ,caddyfile))))
 | 
				
			||||||
        (source-module-closure '((guix build utils)
 | 
					 | 
				
			||||||
                                 (gnu build activation)))
 | 
					 | 
				
			||||||
      #~(begin
 | 
					 | 
				
			||||||
          (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)))))))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define caddy-shepherd-services
 | 
					(define caddy-shepherd-services
 | 
				
			||||||
  (match-record-lambda <caddy-configuration>
 | 
					  (match-record-lambda <caddy-configuration>
 | 
				
			||||||
@ -119,6 +114,20 @@
 | 
				
			|||||||
                #:environment-variables '("HOME=/var/lib/caddy")))
 | 
					                #:environment-variables '("HOME=/var/lib/caddy")))
 | 
				
			||||||
            (stop
 | 
					            (stop
 | 
				
			||||||
             #~(make-kill-destructor))
 | 
					             #~(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?)))))
 | 
					            (auto-start? auto-start?)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define caddy-service-type
 | 
					(define caddy-service-type
 | 
				
			||||||
@ -127,10 +136,12 @@
 | 
				
			|||||||
   (extensions
 | 
					   (extensions
 | 
				
			||||||
    (list (service-extension account-service-type
 | 
					    (list (service-extension account-service-type
 | 
				
			||||||
                             caddy-accounts)
 | 
					                             caddy-accounts)
 | 
				
			||||||
          (service-extension privileged-program-service-type
 | 
					 | 
				
			||||||
                             caddy-privileged-programs)
 | 
					 | 
				
			||||||
          (service-extension activation-service-type
 | 
					          (service-extension activation-service-type
 | 
				
			||||||
                             caddy-activation)
 | 
					                             caddy-activation)
 | 
				
			||||||
 | 
					          (service-extension etc-service-type
 | 
				
			||||||
 | 
					                             caddy-etc)
 | 
				
			||||||
 | 
					          (service-extension privileged-program-service-type
 | 
				
			||||||
 | 
					                             caddy-privileged-programs)
 | 
				
			||||||
          (service-extension shepherd-root-service-type
 | 
					          (service-extension shepherd-root-service-type
 | 
				
			||||||
                             caddy-shepherd-services)))
 | 
					                             caddy-shepherd-services)))
 | 
				
			||||||
   (default-value #f)
 | 
					   (default-value #f)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user