projects/guix·blob java-team · refs

269 lines · 9.7 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015, 2016, 2017 Leo Famulari <[email protected]>
3;;; Copyright © 2018, 2019, 2022-2024 Efraim Flashner <[email protected]>
4;;; Copyright © 2020 Tobias Geerinckx-Rice <[email protected]>
5;;; Copyright © 2020 Vinicius Monego <[email protected]>
6;;; Copyright © 2021 Tanguy Le Carrour <[email protected]>
7;;; Copyright © 2022, 2024, 2026 Jonathan Brielmaier <[email protected]>
8;;; Copyright © 2024 Nicolas Graves <[email protected]>
9;;; Copyright © 2025 Junker <[email protected]>
10;;; Copyright © 2026 Ricardo Wurmus <[email protected]>
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages dav)
28 #:use-module (guix build-system cargo)
29 #:use-module (guix build-system gnu)
30 #:use-module (guix build-system pyproject)
31 #:use-module (guix download)
32 #:use-module (guix gexp)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (guix packages)
35 #:use-module (guix git-download)
36 #:use-module (gnu packages)
37 #:use-module (gnu packages check)
38 #:use-module (gnu packages nss)
39 #:use-module (gnu packages pkg-config)
40 #:use-module (gnu packages python)
41 #:use-module (gnu packages python-build)
42 #:use-module (gnu packages python-check)
43 #:use-module (gnu packages python-crypto)
44 #:use-module (gnu packages python-web)
45 #:use-module (gnu packages python-xyz)
46 #:use-module (gnu packages sphinx)
47 #:use-module (gnu packages sqlite)
48 #:use-module (gnu packages time)
49 #:use-module (gnu packages tls)
50 #:use-module (gnu packages version-control)
51 #:use-module (gnu packages xml))
52
53(define-public cadaver
54 (package
55 (name "cadaver")
56 (version "0.26")
57 (source
58 (origin
59 (method url-fetch)
60 (uri (string-append "https://notroj.github.io/cadaver/cadaver-"
61 version ".tar.gz"))
62 (sha256
63 (base32 "0mbv6mkdhxqhdq5kgn821if10h184m1xlpqq0vpxj19mvwyf8dlj"))))
64 (build-system gnu-build-system)
65 (inputs (list neon
66 openssl
67 libxml2))
68 (native-inputs (list pkg-config))
69 (arguments '(#:configure-flags (list "--with-ssl=openssl")
70 #:tests? #f)) ; no check target
71 (home-page "https://notroj.github.io/cadaver/")
72 (synopsis "Command-line WebDAV client")
73 (description
74 "Cadaver is a command-line client for WebDAV server operations. It
75supports a variety of WebDAV features and provides an interactive
76command-line environment with support for file manipulation on remote WebDAV
77servers.")
78 (license license:gpl2+)))
79
80(define-public pimsync
81 (package
82 (name "pimsync")
83 (version "0.5.11")
84 (source
85 (origin
86 (method git-fetch)
87 (uri (git-reference
88 (url "https://git.sr.ht/~whynothugo/pimsync")
89 (commit (string-append "v" version))))
90 (file-name (git-file-name name version))
91 (sha256
92 (base32 "070301a0z3a9b9jc7ifkmgg4gj2p0srf67lyzf2mifd04jll3iw8"))))
93 (build-system cargo-build-system)
94 (arguments
95 (list
96 #:install-source? #f
97 #:phases
98 #~(modify-phases %standard-phases
99 (add-after 'unpack 'use-guix-vendored-dependencies
100 (lambda _
101 (substitute* "Cargo.toml"
102 (("^\\[patch.crates-io\\]")
103 "")
104 (("^digest_auth.*$")
105 "digest_auth = { features = [\"http\"], version = \"*\" }
106"))))
107 (add-after 'unpack 'setup-environment
108 (lambda _
109 (setenv "PIMSYNC_VERSION"
110 #$version)))
111 (add-after 'install 'install-man-pages
112 (lambda _
113 (let ((man (string-append #$output "/share/man/man")))
114 (install-file "pimsync.1"
115 (string-append man "1"))
116 (install-file "pimsync.conf.5"
117 (string-append man "5"))
118 (install-file "pimsync-migration.7"
119 (string-append man "7"))))))))
120 (native-inputs (list nss-certs-for-test ;needed to start pimsync in 'check.
121 xandikos)) ;needed for 'check.
122 (inputs (cons* sqlite
123 (cargo-inputs 'pimsync)))
124 (synopsis
125 "Synchronize calendars and contacts using CalDAV, CardDAV and others")
126 (description
127 "Pimsync synchronizes your calendars and contacts between two
128storage locations. The most popular purpose is to synchronize a CalDAV or
129CardDAV server with a local folder or file.")
130 (home-page "https://pimsync.whynothugo.nl/")
131 (license license:eupl1.2)))
132
133(define-public radicale
134 (package
135 (name "radicale")
136 (version "3.7.8")
137 (source
138 (origin
139 (method git-fetch)
140 (uri (git-reference
141 (url "https://github.com/Kozea/Radicale")
142 (commit (string-append "v" version))))
143 (file-name (git-file-name name version))
144 (sha256
145 (base32 "0k0qssq74md7lc48jwk4hff1gpbmw369flzidziph3gmf3cl40y8"))))
146 (build-system pyproject-build-system)
147 (native-inputs
148 (list python-pytest
149 python-setuptools
150 python-waitress))
151 (propagated-inputs
152 (list python-defusedxml
153 python-libpass
154 python-pika
155 python-requests
156 python-vobject))
157 (synopsis "Basic CalDAV and CardDAV server")
158 (description "Radicale is a CalDAV and CardDAV server for UNIX-like
159platforms. Calendars and address books are available for both local and remote
160access, possibly limited through authentication policies. They can be viewed
161and edited by calendar and contact clients on mobile phones or computers.
162
163Radicale intentionally does not fully comply with the CalDAV and CardDAV RFCs.
164Instead, it supports the CalDAV and CardDAV implementations of popular
165clients.")
166 (home-page "https://radicale.org/")
167 (license license:gpl3+)))
168
169(define-public xandikos
170 (package
171 (name "xandikos")
172 (version "0.4.5")
173 (source
174 (origin
175 (method git-fetch)
176 (uri (git-reference
177 (url "https://github.com/jelmer/xandikos")
178 (commit (string-append "v" version))))
179 (file-name (git-file-name name version))
180 (sha256
181 (base32 "0hl932havrrw93sz5s8z95ksxaxzwc8gwi506drff05aq1cj9syh"))))
182 (build-system pyproject-build-system)
183 (arguments
184 (list
185 #:phases
186 #~(modify-phases %standard-phases
187 (add-before 'check 'check-setup
188 (lambda _
189 (setenv "XANDIKOSPATH" (mkdtemp "/tmp/xandikospath-XXXXXX")))))))
190 (native-inputs
191 (list python-pytest
192 python-setuptools))
193 (propagated-inputs
194 (list python-aiohttp
195 python-defusedxml
196 python-dulwich
197 python-icalendar
198 python-jinja2
199 python-multidict
200 python-vobject))
201 (home-page "https://www.xandikos.org/")
202 (synopsis "Lightweight CalDAV/CardDAV server")
203 (description
204 "Xandikos is a lightweight yet complete CardDAV/CalDAV server that backs
205onto a Git repository.
206
207Features:
208
209@itemize
210@item Easy to set up
211@item Share calendars (events, todo items, journal entries) via CalDAV and
212contacts (vCard) via CardDAV
213@item Automatically keep history and back up changes in Git
214@item Supports synchronization extensions for CalDAV/CardDAV for quick and
215efficient syncing
216@item Automatically keep history and back up
217@item Works with all tested CalDAV and CardDAV clients
218@end itemize")
219 (license license:gpl3+)))
220
221(define-public vdirsyncer
222 (package
223 (name "vdirsyncer")
224 (version "0.20.0")
225 (source (origin
226 (method url-fetch)
227 (uri (pypi-uri name version))
228 (sha256
229 (base32
230 "0bdi83ycnkx0ddyc10ixan992dgyaq83lwsms57w358aa0rsbcgy"))))
231 (build-system pyproject-build-system)
232 (arguments
233 (list
234 #:test-flags '(list "-k" "not test_request_ssl")
235 #:phases
236 #~(modify-phases %standard-phases
237 (add-after 'unpack 'patch-version-call
238 (lambda _
239 (substitute* "docs/conf.py"
240 (("^release.*")
241 (string-append "release = '" #$version "'\n")))))
242 (add-before 'check 'pre-check
243 (lambda _
244 (setenv "DETERMINISTIC_TESTS" "true"))))))
245 (native-inputs
246 (list python-aioresponses
247 python-pytest
248 python-pytest-asyncio
249 python-pytest-httpserver
250 python-setuptools
251 python-setuptools-scm
252 python-trustme))
253 (inputs
254 (list python-aiohttp
255 python-aiohttp-oauthlib
256 python-aiostream
257 python-atomicwrites
258 python-click
259 python-click-log
260 python-requests
261 python-requests-toolbelt))
262 (synopsis "Synchronize calendars and contacts")
263 (description "Vdirsyncer synchronizes your calendars and addressbooks
264between two storage locations. The most popular purpose is to
265synchronize a CalDAV or CardDAV server with a local folder or file. The
266local data can then be accessed via a variety of programs, none of which
267have to know or worry about syncing to a server.")
268 (home-page "https://github.com/pimutils/vdirsyncer")
269 (license license:bsd-3)))