Compare commits

..

2 Commits

Author SHA1 Message Date
Hilton Chain
9e2dc3254d
services: home-goimapnotify-service-type: Add wait option.
* modules/rosenthal/services/mail.scm (home-goimapnotify-configuration): Add
wait option.
(home-goimapnotify-shepherd): Use it.
2025-10-20 00:49:05 +08:00
Hilton Chain
677b4962a0
service: Add home-goimapnotify-service-type.
* modules/rosenthal/services/mail.scm (<home-goimapnotify-configuration>): New
data type.
(home-goimapnotify-shepherd): New procedure.
(home-goimapnotify-service-type): New variable.
2025-10-20 00:39:13 +08:00

View File

@ -1,16 +1,25 @@
;;; SPDX-FileCopyrightText: 2024 Hilton Chain <hako@ultrarare.space> ;;; SPDX-FileCopyrightText: 2024, 2025 Hilton Chain <hako@ultrarare.space>
;;; ;;;
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
(define-module (rosenthal services mail) (define-module (rosenthal services mail)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (guix gexp)
#:use-module (guix records) #:use-module (guix records)
#:use-module (rosenthal utils serializers yaml)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services admin) #:use-module (gnu services admin)
#:use-module (gnu services configuration) #:use-module (gnu services configuration)
#:use-module (gnu services docker) #: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)
#:export (docker-mailserver-configuration #:export (docker-mailserver-configuration
docker-mailserver-service-type)) docker-mailserver-service-type
home-goimapnotify-service-type
home-goimapnotify-configuration))
;;; ;;;
;;; Docker Mailserver ;;; Docker Mailserver
@ -66,3 +75,52 @@
(compose list docker-mailserver-configuration-log-file)))) (compose list docker-mailserver-configuration-log-file))))
(default-value (docker-mailserver-configuration)) (default-value (docker-mailserver-configuration))
(description "Run Docker Mailserver."))) (description "Run Docker Mailserver.")))
;;;
;;; goimapnotify
;;;
(define-configuration/no-serialization home-goimapnotify-configuration
(goimapnotify
(file-like goimapnotify)
"")
(config
yaml-config
"")
(wait
(integer 1)
"")
(shepherd-provision
(list-of-symbols '(goimapnotify))
"")
(shepherd-requirement
(list-of-symbols '())
"")
(auto-start?
(boolean #t)
""))
(define home-goimapnotify-shepherd
(match-record-lambda <home-goimapnotify-configuration>
(goimapnotify config wait shepherd-provision shepherd-requirement auto-start?)
(let ((config-file
(mixed-text-file "goimapnotify.yaml" (yaml-serialize config))))
(list (shepherd-service
(provision shepherd-provision)
(requirement shepherd-requirement)
(start
#~(make-forkexec-constructor
(list #$(file-append goimapnotify "/bin/goimapnotify")
"-conf" #$config-file
"-wait" (number->string #$wait))))
(stop #~(make-kill-destructor))
(auto-start? auto-start?))))))
(define home-goimapnotify-service-type
(service-type
(name 'home-goimapnotify)
(extensions
(list (service-extension home-shepherd-service-type
home-goimapnotify-shepherd)))
(description "")))