summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-05-05 15:22:01 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-06-19 15:44:36 +0200
commit7b97db1634394f90e653d0cd25bc45ce770b10f3 (patch)
tree49ef000fb158f1087c95bd4a13eea20c3565e137 /guix
parent3f66c5a713694d6acf8ce66319fe9719539d2a37 (diff)
Add a server for an application
Diffstat (limited to 'guix')
-rw-r--r--guix/vkraus/packages/webid-oidc.scm2
-rw-r--r--guix/vkraus/services/webid-oidc.scm81
2 files changed, 81 insertions, 2 deletions
diff --git a/guix/vkraus/packages/webid-oidc.scm b/guix/vkraus/packages/webid-oidc.scm
index f5ef57f..8d80cb5 100644
--- a/guix/vkraus/packages/webid-oidc.scm
+++ b/guix/vkraus/packages/webid-oidc.scm
@@ -79,7 +79,7 @@
(format #f "~a/bin/webid-oidc-~a" out program)
`("GUILE_LOAD_PATH" ":" = ,mod-paths)
`("GUILE_LOAD_COMPILED_PATH" ":" = ,go-paths)))
- '(hello issuer reverse-proxy))))))))
+ '(client-service hello issuer reverse-proxy))))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("guile" ,guile-3.0)
diff --git a/guix/vkraus/services/webid-oidc.scm b/guix/vkraus/services/webid-oidc.scm
index 33b4fae..e510ba9 100644
--- a/guix/vkraus/services/webid-oidc.scm
+++ b/guix/vkraus/services/webid-oidc.scm
@@ -57,6 +57,21 @@
webid-oidc-hello-configuration-extra-options
(default '())))
+(define-record-type* <webid-oidc-client-service-configuration>
+ webid-oidc-client-service-configuration
+ make-webid-oidc-client-service-configuration
+ webid-oidc-client-service-configuration?
+ (webid-oidc webid-oidc-client-service-configuration-webid-oidc
+ (default webid-oidc))
+ (client-id webid-oidc-client-service-configuration-client-id)
+ (redirect-uri webid-oidc-client-service-configuration-redirect-uri)
+ (client-name webid-oidc-client-service-configuration-client-name (default "Example Solid App"))
+ (client-uri webid-oidc-client-service-configuration-client-uri (default "https://webid-oidc.planete-kraus.eu/Running-a-client.html#Running-a-client"))
+ (port webid-oidc-client-service-configuration-port (default 8088))
+ (extra-options
+ webid-oidc-client-service-configuration-extra-options
+ (default '())))
+
(export <webid-oidc-issuer-configuration>
webid-oidc-issuer-configuration
make-webid-oidc-issuer-configuration
@@ -87,7 +102,18 @@
webid-oidc-hello-configuration?
webid-oidc-hello-configuration-webid-oidc
webid-oidc-hello-configuration-port
- webid-oidc-hello-configuration-extra-options)
+ webid-oidc-hello-configuration-extra-options
+ <webid-oidc-client-service-configuration>
+ webid-oidc-client-service-configuration
+ make-webid-oidc-client-service-configuration
+ webid-oidc-client-service-configuration?
+ webid-oidc-client-service-configuration-webid-oidc
+ webid-oidc-client-service-configuration-client-id
+ webid-oidc-client-service-configuration-redirect-uri
+ webid-oidc-client-service-configuration-client-name
+ webid-oidc-client-service-configuration-client-uri
+ webid-oidc-client-service-configuration-port
+ webid-oidc-client-service-configuration-extra-options)
(define webid-oidc-issuer-shepherd-service
(match-lambda
@@ -223,6 +249,48 @@
"LANG=C"))))
(stop #~(make-kill-destructor))))))))
+(define webid-oidc-client-service-shepherd-service
+ (match-lambda
+ (($ <webid-oidc-client-service-configuration>
+ webid-oidc client-id redirect-uri client-name client-uri port
+ extra-options)
+ (with-imported-modules
+ (source-module-closure
+ '((gnu build shepherd)
+ (gnu system file-systems)))
+ (list (shepherd-service
+ (provision '(webid-oidc-client-service))
+ (documentation "Run a server for a Solid application.")
+ (requirement '(user-processes))
+ (modules '((gnu build shepherd)
+ (gnu system file-systems)))
+ (start
+ #~(begin
+ (let* ((user (getpwnam "webid-oidc"))
+ (prepare-directory
+ (lambda (dir)
+ (mkdir-p dir)
+ (chown dir (passwd:uid user) (passwd:gid user))
+ (chmod dir #o700))))
+ (prepare-directory "/var/log/webid-oidc"))
+ (make-forkexec-constructor
+ (list
+ (string-append #$webid-oidc "/bin/webid-oidc-client-service")
+ "--client-id" #$client-id
+ "--redirect-uri" #$redirect-uri
+ "--client-name" #$client-name
+ "--client-uri" #$client-uri
+ "--port" (with-output-to-string (lambda () (display #$port)))
+ "--log-file" "client-service.log"
+ "--error-file" "client-service.err"
+ #$@extra-options)
+ #:user "webid-oidc"
+ #:group "webid-oidc"
+ #:directory "/var/log/webid-oidc"
+ #:environment-variables
+ `("LANG=C"))))
+ (stop #~(make-kill-destructor))))))))
+
(define %webid-oidc-accounts
(list (user-group (name "webid-oidc")
(system? #t))
@@ -266,3 +334,14 @@
(service-extension
shepherd-root-service-type
webid-oidc-hello-shepherd-service)))))
+
+(define-public webid-oidc-client-service-service-type
+ (service-type
+ (name 'webid-oidc-client-service)
+ (extensions
+ (list
+ (service-extension account-service-type
+ (const %webid-oidc-accounts))
+ (service-extension
+ shepherd-root-service-type
+ webid-oidc-client-service-shepherd-service)))))