[PATCH 0/2] Add service for radicale.

  • Done
  • quality assurance status badge
Details
3 participants
  • Jonathan Brielmaier
  • jonathan
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Jonathan Brielmaier
Severity
normal

Debbugs page

J
J
Jonathan Brielmaier wrote on 4 Dec 2020 16:26
(address . guix-patches@gnu.org)(name . Jonathan Brielmaier)(address . jonathan.brielmaier@web.de)
20201205002607.22785-1-jonathan.brielmaier@web.de
Hi,

this is a simple version of a service for radicale, a CalDAV/CardDAV server.
Password encryption with bcrypt is not working yet.
For the future I want to add the plugin for auth via dovecot. That's for another
patch series...

With the default configuration I confirmed that the service work as expected...

Jonathan Brielmaier (2):
gnu: radicale: Update to 3.0.6.
services: Add radicale-service-type.

doc/guix.texi | 25 +++++++++++++
gnu/packages/dav.scm | 4 +--
gnu/services/mail.scm | 81 ++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 107 insertions(+), 3 deletions(-)

--
2.29.2
J
J
Jonathan Brielmaier wrote on 4 Dec 2020 16:27
[PATCH 1/2] gnu: radicale: Update to 3.0.6.
(address . 45047@debbugs.gnu.org)(name . Jonathan Brielmaier)(address . jonathan.brielmaier@web.de)
20201205002755.23215-1-jonathan.brielmaier@web.de
* gnu/packages/dav.scm (radicale): Update to 3.0.6.
---
gnu/packages/dav.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 8692a49c50..9d18d94996 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -39,7 +39,7 @@
(define-public radicale
(package
(name "radicale")
- (version "3.0.4")
+ (version "3.0.6")
(source
(origin
;; There are no tests in the PyPI tarball.
@@ -49,7 +49,7 @@
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0hj9mmhrj32mzhxlnjcfijb7768cyjsn603nalp54clgb2gkmvw8"))))
+ (base32 "1xlsvrmx6jhi71j6j8z9sli5vwxasivzjyqf8zq8r0l5p7350clf"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)
--
2.29.2
J
J
Jonathan Brielmaier wrote on 4 Dec 2020 16:27
[PATCH 2/2] services: Add radicale-service-type.
(address . 45047@debbugs.gnu.org)(name . Jonathan Brielmaier)(address . jonathan.brielmaier@web.de)
20201205002755.23215-2-jonathan.brielmaier@web.de
* gnu/services/mail.scm (radicale-configuration)
(radicale-configuration?): New procedures.
(%default-radicale-config-file)
(radicale-service-type): New variables.
* doc/guix.texi: Document it.
---
doc/guix.texi | 25 +++++++++++++
gnu/services/mail.scm | 81 ++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 105 insertions(+), 1 deletion(-)

Toggle diff (153 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index a5c9779c86..38fd468ebf 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -85,6 +85,7 @@ Copyright @copyright{} 2020 Alexandru-Sergiu Marton@*
Copyright @copyright{} 2020 raingloom@*
Copyright @copyright{} 2020 Daniel Brooks@*
Copyright @copyright{} 2020 John Soo@*
+Copyright @copyright{} 2020 Jonathan Brielmaier@*

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21150,6 +21151,30 @@ Mailutils Manual}, for details.
@end table
@end deftp

+@subsubheading Radicale Service
+@cindex CalDAV
+@cindex CardDAV
+
+@deffn {Scheme Variable} radicale-service-type
+This is the type of the @uref{https://radicale.org, Radicale} CalDAV/CardDAV
+server whose value should be a @code{radicale-configuration}.
+@end deffn
+
+@deftp {Data Type} radicale-configuration
+Data type representing the configuration of @command{radicale}.
+
+@table @asis
+@item @code{package} (default: @code{radicale})
+The package that provides @command{radicale}.
+
+@item @code{config-file} (default: @code{%default-radicale-config-file})
+File-like object of the configuration file to use, by default it will listen
+on TCP port 5232 of @code{localhost} and use the @code{htpasswd} file at
+@file{/var/lib/radicale/users} with no (@code{plain}) encryption.
+
+@end table
+@end deftp
+
@node Messaging Services
@subsection Messaging Services

diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 71fa975b5d..c0f6371104 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Kristofer Buffington <kristoferbuffington@gmail.com>
+;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,6 +32,7 @@
#:use-module (gnu system shadow)
#:use-module (gnu packages mail)
#:use-module (gnu packages admin)
+ #:use-module (gnu packages dav)
#:use-module (gnu packages tls)
#:use-module (guix records)
#:use-module (guix packages)
@@ -70,7 +72,12 @@
imap4d-configuration
imap4d-configuration?
imap4d-service-type
- %default-imap4d-config-file))
+ %default-imap4d-config-file
+
+ radicale-configuration
+ radicale-configuration?
+ radicale-service-type
+ %default-radicale-config-file))

;;; Commentary:
;;;
@@ -1834,3 +1841,75 @@ exim_group = exim
(list (service-extension
shepherd-root-service-type imap4d-shepherd-service)))
(default-value (imap4d-configuration))))
+
+
+;;;
+;;; Radicale.
+;;;
+
+(define-record-type* <radicale-configuration>
+ radicale-configuration make-radicale-configuration
+ radicale-configuration?
+ (package radicale-configuration-package
+ (default radicale))
+ (config-file radicale-configuration-config-file
+ (default %default-radicale-config-file)))
+
+(define %default-radicale-config-file
+ (plain-file "radicale.conf" "
+[auth]
+type = htpasswd
+htpasswd_filename = /var/lib/radicale/users
+htpasswd_encryption = plain
+
+[server]
+hosts = localhost:5232"))
+
+(define %radicale-accounts
+ (list (user-group
+ (name "radicale")
+ (system? #t))
+ (user-account
+ (name "radicale")
+ (group "radicale")
+ (system? #t)
+ (comment "Radicale Daemon")
+ (home-directory "/var/empty")
+ (shell (file-append shadow "/sbin/nologin")))))
+
+(define radicale-shepherd-service
+ (match-lambda
+ (($ <radicale-configuration> package config-file)
+ (list (shepherd-service
+ (provision '(radicale))
+ (documentation "Run the radicale daemon.")
+ (requirement '(networking))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append package "/bin/radicale")
+ "-C" #$config-file)
+ #:user "radicale"
+ #:group "radicale"))
+ (stop #~(make-kill-destructor)))))))
+
+(define radicale-activation
+ (match-lambda
+ (($ <radicale-configuration> package config-file)
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((uid (passwd:uid (getpw "radicale")))
+ (gid (group:gid (getgr "radicale"))))
+ (mkdir-p "/var/lib/radicale/collections")
+ (chown "/var/lib/radicale" uid gid)
+ (chown "/var/lib/radicale/collections" uid gid)
+ (chmod "/var/lib/radicale" #o700)))))))
+
+(define radicale-service-type
+ (service-type
+ (name 'radicale)
+ (description "Run radicale, a small CalDAV and CardDAV server.")
+ (extensions
+ (list (service-extension shepherd-root-service-type radicale-shepherd-service)
+ (service-extension account-service-type (const %radicale-accounts))
+ (service-extension activation-service-type radicale-activation)))
+ (default-value (radicale-configuration))))
--
2.29.2
M
M
Maxim Cournoyer wrote on 8 Jan 2021 11:55
control message for bug #45047
(address . control@debbugs.gnu.org)
87v9c75hks.fsf@gmail.com
tags 45047 fixed
close 45047
quit
J
J
jonathan wrote on 8 Jan 2021 11:04
Close bug
E1kxx3A-0000KI-W2@brielmaier.net
Close it.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 45047@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 45047
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch