summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-06-29 09:04:15 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-07-02 14:49:13 +0200
commite0e3bbbe6d78fc7a7f54325471af5d0e5c498471 (patch)
tree9d65b78927449d8c7f18ef91b5b5eef7090247bf
parent1834bd8137ab2f50faf9cf763218dd4f628526f2 (diff)
Add a guix definition for the server
-rw-r--r--guix/vkraus/services/webid-oidc.scm99
1 files changed, 98 insertions, 1 deletions
diff --git a/guix/vkraus/services/webid-oidc.scm b/guix/vkraus/services/webid-oidc.scm
index 2100c30..984eced 100644
--- a/guix/vkraus/services/webid-oidc.scm
+++ b/guix/vkraus/services/webid-oidc.scm
@@ -72,6 +72,27 @@
webid-oidc-client-service-configuration-extra-options
(default '())))
+(define-record-type* <webid-oidc-server-configuration>
+ webid-oidc-server-configuration
+ make-webid-oidc-server-configuration
+ webid-oidc-server-configuration?
+ (webid-oidc webid-oidc-server-configuration-webid-oidc
+ (default webid-oidc))
+ (server-name webid-oidc-server-configuration-server-name)
+ (key-file webid-oidc-server-configuration-key-file
+ (default "/var/lib/webid-oidc/server/key.jwk"))
+ (subject webid-oidc-server-configuration-subject)
+ (password webid-oidc-server-configuration-password)
+ (jwks-uri webid-oidc-server-configuration-jwks-uri)
+ (authorization-endpoint-uri
+ webid-oidc-server-configuration-authorization-endpoint-uri)
+ (token-endpoint-uri
+ webid-oidc-server-configuration-token-endpoint-uri)
+ (port webid-oidc-server-configuration-port (default 8088))
+ (extra-options
+ webid-oidc-issuer-configuration-extra-options
+ (default '())))
+
(export <webid-oidc-issuer-configuration>
webid-oidc-issuer-configuration
make-webid-oidc-issuer-configuration
@@ -113,7 +134,21 @@
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)
+ webid-oidc-client-service-configuration-extra-options
+ <webid-oidc-server-configuration>
+ webid-oidc-server-configuration
+ make-webid-oidc-server-configuration
+ webid-oidc-server-configuration?
+ webid-oidc-server-configuration-webid-oidc
+ webid-oidc-server-configuration-server-name
+ webid-oidc-server-configuration-key-file
+ webid-oidc-server-configuration-subject
+ webid-oidc-server-configuration-password
+ webid-oidc-server-configuration-jwks-uri
+ webid-oidc-server-configuration-authorization-endpoint-uri
+ webid-oidc-server-configuration-token-endpoint-uri
+ webid-oidc-server-configuration-port
+ webid-oidc-server-configuration-extra-options)
(define webid-oidc-issuer-shepherd-service
(match-lambda
@@ -294,6 +329,57 @@
`("LANG=C"))))
(stop #~(make-kill-destructor))))))))
+(define webid-oidc-server-shepherd-service
+ (match-lambda
+ (($ <webid-oidc-server-configuration>
+ webid-oidc server-name key-file subject password jwks-uri
+ authorization-endpoint-uri token-endpoint-uri port
+ extra-options)
+ (with-imported-modules
+ (source-module-closure
+ '((gnu build shepherd)
+ (gnu system file-systems)))
+ (list (shepherd-service
+ (provision '(webid-oidc-server))
+ (documentation "Run the full Solid server.")
+ (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")
+ (prepare-directory "/var/lib/webid-oidc")
+ (prepare-directory "/var/cache/webid-oidc"))
+ (make-forkexec-constructor
+ (list
+ (string-append #$webid-oidc "/bin/webid-oidc")
+ "server"
+ "--server-name" #$server-name
+ "--key-file" #$key-file
+ "--subject" #$subject
+ "--password" #$password
+ "--jwks-uri" #$jwks-uri
+ "--authorization-endpoint-uri" #$authorization-endpoint-uri
+ "--token-endpoint-uri" #$token-endpoint-uri
+ "--port" (with-output-to-string (lambda () (display #$port)))
+ "--log-file" "server.log"
+ "--error-file" "server.err"
+ #$@extra-options)
+ #:user "webid-oidc"
+ #:group "webid-oidc"
+ #:directory "/var/log/webid-oidc"
+ #:environment-variables
+ `("XDG_DATA_HOME=/var/lib"
+ "XDG_CACHE_HOME=/var/cache"
+ "LANG=C"))))
+ (stop #~(make-kill-destructor))))))))
+
(define %webid-oidc-accounts
(list (user-group (name "webid-oidc")
(system? #t))
@@ -348,3 +434,14 @@
(service-extension
shepherd-root-service-type
webid-oidc-client-service-shepherd-service)))))
+
+(define-public webid-oidc-server-service-type
+ (service-type
+ (name 'webid-oidc-server)
+ (extensions
+ (list
+ (service-extension account-service-type
+ (const %webid-oidc-accounts))
+ (service-extension
+ shepherd-root-service-type
+ webid-oidc-server-shepherd-service)))))