(define-module (vkraus services h4sp) #:use-module ((gnu services) #:select (service-type service-extension)) #:use-module ((gnu services web) #:select (nginx-service-type nginx-server-configuration nginx-location-configuration)) #:use-module ((gnu services certbot) #:select (certbot-service-type certificate-configuration)) #:use-module ((vkraus services simple-firewall) #:select (simple-firewall-configuration simple-firewall-service-type)) #:use-module ((vkraus packages h4sp) #:select (h4sp:website)) #:use-module ((guix gexp) #:select (file-append program-file gexp)) #:export (h4sp-service-type) #:duplicates (merge-generics) #:declarative? #t) (define (nginx-extension _) (list h4sp:website)) (define (certbot-extension _) (list (certificate-configuration (domains (list "h4sp.planete-kraus.eu")) (deploy-hook (program-file "refresh-nginx" #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read))) (kill pid SIGHUP))))))) (define (simple-firewall-extension _) (list (simple-firewall-configuration #f '(http https) '(http https)))) (define h4sp-service-type (service-type (name 'h4sp) (description "Serve the web pages for H4SP.") (extensions (list (service-extension nginx-service-type nginx-extension) (service-extension certbot-service-type certbot-extension) (service-extension simple-firewall-service-type simple-firewall-extension)))))