mirror of
				https://codeberg.org/hako/Rosenthal.git
				synced 2025-11-04 03:34:37 +00:00 
			
		
		
		
	services: Migrate for oci-container-service-type deprecation.
* modules/rosenthal/services/mail.scm (docker-mailserver-service-type) [extensions]: Use oci-service-type. * modules/rosenthal/services/web.scm (jellyfin-service-type) (misskey-service-type, vaultwarden-service-type) [extensions]: Likewise.
This commit is contained in:
		
							parent
							
								
									2e8fd96f92
								
							
						
					
					
						commit
						eaa1d09454
					
				@ -3,18 +3,19 @@
 | 
			
		||||
;;; SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
(define-module (rosenthal services mail)
 | 
			
		||||
  #:use-module (srfi srfi-26)
 | 
			
		||||
  #:use-module (gnu home services shepherd)
 | 
			
		||||
  #:use-module (gnu home services)
 | 
			
		||||
  #:use-module (gnu packages mail)
 | 
			
		||||
  #:use-module (gnu services admin)
 | 
			
		||||
  #:use-module (gnu services configuration)
 | 
			
		||||
  #:use-module (gnu services containers)
 | 
			
		||||
  #:use-module (gnu services docker)
 | 
			
		||||
  #:use-module (gnu services shepherd)
 | 
			
		||||
  #:use-module (gnu services)
 | 
			
		||||
  #:use-module (guix gexp)
 | 
			
		||||
  #:use-module (guix records)
 | 
			
		||||
  #:use-module (rosenthal utils serializers yaml)
 | 
			
		||||
  #:use-module (gnu services)
 | 
			
		||||
  #:use-module (gnu services admin)
 | 
			
		||||
  #:use-module (gnu services configuration)
 | 
			
		||||
  #:use-module (gnu services docker)
 | 
			
		||||
  #:use-module (gnu services shepherd)
 | 
			
		||||
  #:use-module (gnu home services)
 | 
			
		||||
  #:use-module (gnu home services shepherd)
 | 
			
		||||
  #:use-module (gnu packages mail)
 | 
			
		||||
  #:use-module (srfi srfi-26)
 | 
			
		||||
  #:export (docker-mailserver-configuration
 | 
			
		||||
            docker-mailserver-service-type
 | 
			
		||||
 | 
			
		||||
@ -45,32 +46,34 @@
 | 
			
		||||
   "List of extra Docker arguments.")
 | 
			
		||||
  (no-serialization))
 | 
			
		||||
 | 
			
		||||
(define docker-mailserver-oci-containers
 | 
			
		||||
(define docker-mailserver-oci
 | 
			
		||||
  (match-record-lambda <docker-mailserver-configuration>
 | 
			
		||||
      (data-directory log-file shepherd-requirement options extra-arguments)
 | 
			
		||||
    (let ((docker-mailserver-path
 | 
			
		||||
           (cut string-append data-directory <>)))
 | 
			
		||||
      (list (oci-container-configuration
 | 
			
		||||
             (environment options)
 | 
			
		||||
             (image "ghcr.io/docker-mailserver/docker-mailserver:latest")
 | 
			
		||||
             (provision "docker-mailserver")
 | 
			
		||||
             (requirement shepherd-requirement)
 | 
			
		||||
             (log-file log-file)
 | 
			
		||||
             (network "host")
 | 
			
		||||
             (volumes
 | 
			
		||||
              `((,(docker-mailserver-path "/data") . "/var/mail")
 | 
			
		||||
                (,(docker-mailserver-path "/state") . "/var/mail-state")
 | 
			
		||||
                (,(docker-mailserver-path "/logs") . "/var/log/mail")
 | 
			
		||||
                (,(docker-mailserver-path "/config") . "/tmp/docker-mailserver")
 | 
			
		||||
                ("/etc/localtime" . "/etc/localtime:ro")))
 | 
			
		||||
             (extra-arguments extra-arguments))))))
 | 
			
		||||
      (oci-extension
 | 
			
		||||
        (containers
 | 
			
		||||
         (list (oci-container-configuration
 | 
			
		||||
                 (environment options)
 | 
			
		||||
                 (image "ghcr.io/docker-mailserver/docker-mailserver:latest")
 | 
			
		||||
                 (provision "docker-mailserver")
 | 
			
		||||
                 (requirement shepherd-requirement)
 | 
			
		||||
                 (log-file log-file)
 | 
			
		||||
                 (network "host")
 | 
			
		||||
                 (volumes
 | 
			
		||||
                  `((,(docker-mailserver-path "/data") . "/var/mail")
 | 
			
		||||
                    (,(docker-mailserver-path "/state") . "/var/mail-state")
 | 
			
		||||
                    (,(docker-mailserver-path "/logs") . "/var/log/mail")
 | 
			
		||||
                    (,(docker-mailserver-path "/config") . "/tmp/docker-mailserver")
 | 
			
		||||
                    ("/etc/localtime" . "/etc/localtime:ro")))
 | 
			
		||||
                 (extra-arguments extra-arguments))))))))
 | 
			
		||||
 | 
			
		||||
(define docker-mailserver-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
   (name 'docker-mailserver)
 | 
			
		||||
   (extensions
 | 
			
		||||
    (list (service-extension oci-container-service-type
 | 
			
		||||
                             docker-mailserver-oci-containers)
 | 
			
		||||
    (list (service-extension oci-service-type
 | 
			
		||||
                             docker-mailserver-oci)
 | 
			
		||||
          (service-extension log-rotation-service-type
 | 
			
		||||
                             (compose list docker-mailserver-configuration-log-file))))
 | 
			
		||||
   (default-value (docker-mailserver-configuration))
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@
 | 
			
		||||
  #:use-module (gnu packages web)
 | 
			
		||||
  #:use-module (gnu services admin)
 | 
			
		||||
  #:use-module (gnu services configuration)
 | 
			
		||||
  #:use-module (gnu services containers)
 | 
			
		||||
  #:use-module (gnu services databases)
 | 
			
		||||
  #:use-module (gnu services docker)
 | 
			
		||||
  #:use-module (gnu services shepherd)
 | 
			
		||||
@ -394,28 +395,30 @@ test its configuration file."))
 | 
			
		||||
             (chown directory (passwd:uid user) (passwd:gid user))))
 | 
			
		||||
         '#$(list cache-directory config-directory)))))
 | 
			
		||||
 | 
			
		||||
(define jellyfin-oci-containers
 | 
			
		||||
(define jellyfin-oci
 | 
			
		||||
  (match-record-lambda <jellyfin-configuration>
 | 
			
		||||
      (cache-directory config-directory
 | 
			
		||||
                       proxy-url log-file auto-start? extra-options)
 | 
			
		||||
    (list (oci-container-configuration
 | 
			
		||||
           (user "jellyfin")
 | 
			
		||||
           (group "docker")
 | 
			
		||||
           (environment
 | 
			
		||||
            (if (maybe-value-set? proxy-url)
 | 
			
		||||
                `(("http_proxy" . ,proxy-url)
 | 
			
		||||
                  ("https_proxy" . ,proxy-url))
 | 
			
		||||
                '()))
 | 
			
		||||
           (image "jellyfin/jellyfin:latest")
 | 
			
		||||
           (provision "jellyfin")
 | 
			
		||||
           (log-file log-file)
 | 
			
		||||
           (auto-start? auto-start?)
 | 
			
		||||
           (respawn? #t)
 | 
			
		||||
           (network "host")
 | 
			
		||||
           (volumes
 | 
			
		||||
            `((,cache-directory . "/cache")
 | 
			
		||||
              (,config-directory . "/config")))
 | 
			
		||||
           (extra-arguments extra-options)))))
 | 
			
		||||
    (oci-extension
 | 
			
		||||
      (containers
 | 
			
		||||
       (list (oci-container-configuration
 | 
			
		||||
               (user "jellyfin")
 | 
			
		||||
               (group "docker")
 | 
			
		||||
               (environment
 | 
			
		||||
                (if (maybe-value-set? proxy-url)
 | 
			
		||||
                    `(("http_proxy" . ,proxy-url)
 | 
			
		||||
                      ("https_proxy" . ,proxy-url))
 | 
			
		||||
                    '()))
 | 
			
		||||
               (image "jellyfin/jellyfin:latest")
 | 
			
		||||
               (provision "jellyfin")
 | 
			
		||||
               (log-file log-file)
 | 
			
		||||
               (auto-start? auto-start?)
 | 
			
		||||
               (respawn? #t)
 | 
			
		||||
               (network "host")
 | 
			
		||||
               (volumes
 | 
			
		||||
                `((,cache-directory . "/cache")
 | 
			
		||||
                  (,config-directory . "/config")))
 | 
			
		||||
               (extra-arguments extra-options)))))))
 | 
			
		||||
 | 
			
		||||
(define jellyfin-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
@ -427,8 +430,8 @@ test its configuration file."))
 | 
			
		||||
                             jellyfin-activation)
 | 
			
		||||
          (service-extension log-rotation-service-type
 | 
			
		||||
                             (compose list jellyfin-configuration-log-file))
 | 
			
		||||
          (service-extension oci-container-service-type
 | 
			
		||||
                             jellyfin-oci-containers)))
 | 
			
		||||
          (service-extension oci-service-type
 | 
			
		||||
                             jellyfin-oci)))
 | 
			
		||||
   (default-value (jellyfin-configuration))
 | 
			
		||||
   (description "Run Jellyfin, a media system.")))
 | 
			
		||||
 | 
			
		||||
@ -540,7 +543,7 @@ test its configuration file."))
 | 
			
		||||
            (mkdir-p #$data-directory)
 | 
			
		||||
            (chown #$data-directory (passwd:uid user) (passwd:gid user)))))))
 | 
			
		||||
 | 
			
		||||
(define misskey-oci-containers
 | 
			
		||||
(define misskey-oci
 | 
			
		||||
  (match-record-lambda <misskey-configuration>
 | 
			
		||||
      (image config data-directory log-file )
 | 
			
		||||
    (let ((config-file
 | 
			
		||||
@ -553,18 +556,20 @@ test its configuration file."))
 | 
			
		||||
                       (let ((emitter (make-yaml-emitter)))
 | 
			
		||||
                         (yaml-emit! emitter '#$config)
 | 
			
		||||
                         (display (yaml-emitter-string emitter) port)))))))))
 | 
			
		||||
      (list (oci-container-configuration
 | 
			
		||||
             (user "misskey")
 | 
			
		||||
             (group "docker")
 | 
			
		||||
             (image image)
 | 
			
		||||
             (provision "misskey")
 | 
			
		||||
             (requirement '(postgresql redis))
 | 
			
		||||
             (log-file log-file)
 | 
			
		||||
             (respawn? #t)
 | 
			
		||||
             (network "host")
 | 
			
		||||
             (volumes
 | 
			
		||||
              `((,(string-append data-directory "/files") . "/misskey/files")
 | 
			
		||||
                (,config-file . "/misskey/.config/default.yml"))))))))
 | 
			
		||||
      (oci-extension
 | 
			
		||||
        (containers
 | 
			
		||||
         (list (oci-container-configuration
 | 
			
		||||
                 (user "misskey")
 | 
			
		||||
                 (group "docker")
 | 
			
		||||
                 (image image)
 | 
			
		||||
                 (provision "misskey")
 | 
			
		||||
                 (requirement '(postgresql redis))
 | 
			
		||||
                 (log-file log-file)
 | 
			
		||||
                 (respawn? #t)
 | 
			
		||||
                 (network "host")
 | 
			
		||||
                 (volumes
 | 
			
		||||
                  `((,(string-append data-directory "/files") . "/misskey/files")
 | 
			
		||||
                    (,config-file . "/misskey/.config/default.yml"))))))))))
 | 
			
		||||
 | 
			
		||||
(define misskey-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
@ -578,8 +583,8 @@ test its configuration file."))
 | 
			
		||||
                             (compose list misskey-configuration-log-file))
 | 
			
		||||
          (service-extension activation-service-type
 | 
			
		||||
                             misskey-activation)
 | 
			
		||||
          (service-extension oci-container-service-type
 | 
			
		||||
                             misskey-oci-containers)))
 | 
			
		||||
          (service-extension oci-service-type
 | 
			
		||||
                             misskey-oci)))
 | 
			
		||||
   (description "Run Misskey, an interplanetary microblogging platform.")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -718,38 +723,40 @@ test its configuration file."))
 | 
			
		||||
                (write-char #\newline port)))
 | 
			
		||||
            (chown #$log-file (passwd:uid user) (passwd:gid user)))))))
 | 
			
		||||
 | 
			
		||||
(define vaultwarden-oci-containers
 | 
			
		||||
(define vaultwarden-oci
 | 
			
		||||
  (match-record-lambda <vaultwarden-configuration>
 | 
			
		||||
      (admin-token database-url port data-directory log-file proxy-url extra-options)
 | 
			
		||||
    (list (oci-container-configuration
 | 
			
		||||
           (user "vaultwarden")
 | 
			
		||||
           (group "docker")
 | 
			
		||||
           (host-environment
 | 
			
		||||
            `(,@(if (maybe-value-set? admin-token)
 | 
			
		||||
                    `(("ADMIN_TOKEN" . ,admin-token))
 | 
			
		||||
                    '())
 | 
			
		||||
              ("DATABASE_URL" . ,database-url)))
 | 
			
		||||
           (environment
 | 
			
		||||
            `(,@(if (maybe-value-set? proxy-url)
 | 
			
		||||
                    `(("HTTP_PROXY" . ,proxy-url))
 | 
			
		||||
                    '())
 | 
			
		||||
              ("LOG_FILE" . "vaultwarden.log")
 | 
			
		||||
              ("ROCKET_PORT" . ,(number->string port))
 | 
			
		||||
              ("USE_SYSLOG" . "True")
 | 
			
		||||
              ,@extra-options))
 | 
			
		||||
           (image "vaultwarden/server:latest-alpine")
 | 
			
		||||
           (provision "vaultwarden")
 | 
			
		||||
           (requirement '(postgresql))
 | 
			
		||||
           (respawn? #t)
 | 
			
		||||
           (network "host")
 | 
			
		||||
           (volumes
 | 
			
		||||
            `((,data-directory . "/data")
 | 
			
		||||
              (,log-file . "/vaultwarden.log")))
 | 
			
		||||
           (extra-arguments
 | 
			
		||||
            `(,@(if (maybe-value-set? admin-token)
 | 
			
		||||
                    '("--env" "ADMIN_TOKEN")
 | 
			
		||||
                    '())
 | 
			
		||||
              "--env" "DATABASE_URL"))))))
 | 
			
		||||
    (oci-extension
 | 
			
		||||
      (containers
 | 
			
		||||
       (list (oci-container-configuration
 | 
			
		||||
               (user "vaultwarden")
 | 
			
		||||
               (group "docker")
 | 
			
		||||
               (host-environment
 | 
			
		||||
                `(,@(if (maybe-value-set? admin-token)
 | 
			
		||||
                        `(("ADMIN_TOKEN" . ,admin-token))
 | 
			
		||||
                        '())
 | 
			
		||||
                  ("DATABASE_URL" . ,database-url)))
 | 
			
		||||
               (environment
 | 
			
		||||
                `(,@(if (maybe-value-set? proxy-url)
 | 
			
		||||
                        `(("HTTP_PROXY" . ,proxy-url))
 | 
			
		||||
                        '())
 | 
			
		||||
                  ("LOG_FILE" . "vaultwarden.log")
 | 
			
		||||
                  ("ROCKET_PORT" . ,(number->string port))
 | 
			
		||||
                  ("USE_SYSLOG" . "True")
 | 
			
		||||
                  ,@extra-options))
 | 
			
		||||
               (image "vaultwarden/server:latest-alpine")
 | 
			
		||||
               (provision "vaultwarden")
 | 
			
		||||
               (requirement '(postgresql))
 | 
			
		||||
               (respawn? #t)
 | 
			
		||||
               (network "host")
 | 
			
		||||
               (volumes
 | 
			
		||||
                `((,data-directory . "/data")
 | 
			
		||||
                  (,log-file . "/vaultwarden.log")))
 | 
			
		||||
               (extra-arguments
 | 
			
		||||
                `(,@(if (maybe-value-set? admin-token)
 | 
			
		||||
                        '("--env" "ADMIN_TOKEN")
 | 
			
		||||
                        '())
 | 
			
		||||
                  "--env" "DATABASE_URL"))))))))
 | 
			
		||||
 | 
			
		||||
(define vaultwarden-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
@ -763,6 +770,6 @@ test its configuration file."))
 | 
			
		||||
                             vaultwarden-activation)
 | 
			
		||||
          (service-extension log-rotation-service-type
 | 
			
		||||
                             (compose list vaultwarden-configuration-log-file))
 | 
			
		||||
          (service-extension oci-container-service-type
 | 
			
		||||
                             vaultwarden-oci-containers)))
 | 
			
		||||
          (service-extension oci-service-type
 | 
			
		||||
                             vaultwarden-oci)))
 | 
			
		||||
   (description "Run Vaultwarden, a Bitwarden compatible server.")))
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user