summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2024-01-04 19:50:17 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2024-01-04 19:50:17 +0100
commit92b5a4ee63b452b4db90808d214508236a37c6ac (patch)
treea913cb2f70e0742eef92da4ddfd16e2147cc5a5a
parent7fea2340625dabfdddbe23d7c46391311100ebd0 (diff)
Add a H4SP serviceHEADmaster
-rw-r--r--.guix-channel6
-rw-r--r--guix/vkraus/services/h4sp.scm49
2 files changed, 54 insertions, 1 deletions
diff --git a/.guix-channel b/.guix-channel
index 8e7197b..06e659f 100644
--- a/.guix-channel
+++ b/.guix-channel
@@ -1,6 +1,10 @@
(channel
(version 0)
- (directory "guix"))
+ (directory "guix")
+ (dependencies
+ (channel
+ (name guix-extra-services)
+ (url "https://labo.planete-kraus.eu/guix-extra-services.git"))))
;; Local Variables:
;; mode: scheme
;; End:
diff --git a/guix/vkraus/services/h4sp.scm b/guix/vkraus/services/h4sp.scm
new file mode 100644
index 0000000..b2da50d
--- /dev/null
+++ b/guix/vkraus/services/h4sp.scm
@@ -0,0 +1,49 @@
+(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)))))