projects/guix·blob ruby-team · refs

265 lines · 9.5 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 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 pkg-config)
39 #:use-module (gnu packages python)
40 #:use-module (gnu packages python-build)
41 #:use-module (gnu packages python-check)
42 #:use-module (gnu packages python-crypto)
43 #:use-module (gnu packages python-web)
44 #:use-module (gnu packages python-xyz)
45 #:use-module (gnu packages sphinx)
46 #:use-module (gnu packages sqlite)
47 #:use-module (gnu packages time)
48 #:use-module (gnu packages tls)
49 #:use-module (gnu packages version-control)
50 #:use-module (gnu packages xml))
51
52(define-public cadaver
53 (package
54 (name "cadaver")
55 (version "0.26")
56 (source
57 (origin
58 (method url-fetch)
59 (uri (string-append "https://notroj.github.io/cadaver/cadaver-"
60 version ".tar.gz"))
61 (sha256
62 (base32 "0mbv6mkdhxqhdq5kgn821if10h184m1xlpqq0vpxj19mvwyf8dlj"))))
63 (build-system gnu-build-system)
64 (inputs (list neon
65 openssl
66 libxml2))
67 (native-inputs (list pkg-config))
68 (arguments '(#:configure-flags (list "--with-ssl=openssl")
69 #:tests? #f)) ; no check target
70 (home-page "https://notroj.github.io/cadaver/")
71 (synopsis "Command-line WebDAV client")
72 (description
73 "Cadaver is a command-line client for WebDAV server operations. It
74supports a variety of WebDAV features and provides an interactive
75command-line environment with support for file manipulation on remote WebDAV
76servers.")
77 (license license:gpl2+)))
78
79(define-public pimsync
80 (package
81 (name "pimsync")
82 (version "0.5.7")
83 (source
84 (origin
85 (method git-fetch)
86 (uri (git-reference
87 (url "https://git.sr.ht/~whynothugo/pimsync")
88 (commit (string-append "v" version))))
89 (file-name (git-file-name name version))
90 (sha256
91 (base32 "0x90l9k3sfnszrvmzqclykpv2py33v9jh92ps68wdd7xkrjp42ga"))))
92 (build-system cargo-build-system)
93 (arguments
94 (list
95 #:install-source? #f
96 #:phases
97 #~(modify-phases %standard-phases
98 (add-after 'unpack 'use-guix-vendored-dependencies
99 (lambda _
100 (substitute* "Cargo.toml"
101 (("^\\[patch.crates-io\\]")
102 "")
103 (("^hashify.*$")
104 "hashify = { version = \"*\" }\n"))))
105 (add-after 'unpack 'setup-environment
106 (lambda _
107 (setenv "PIMSYNC_VERSION"
108 #$version)))
109 (add-after 'install 'install-man-pages
110 (lambda _
111 (let ((man (string-append #$output "/share/man/man")))
112 (install-file "pimsync.1"
113 (string-append man "1"))
114 (install-file "pimsync.conf.5"
115 (string-append man "5"))
116 (install-file "pimsync-migration.7"
117 (string-append man "7"))))))))
118 (inputs (cons* sqlite
119 (cargo-inputs 'pimsync)))
120 (synopsis
121 "Synchronize calendars and contacts using CalDAV, CardDAV and others")
122 (description
123 "Pimsync synchronizes your calendars and contacts between two
124storage locations. The most popular purpose is to synchronize a CalDAV or
125CardDAV server with a local folder or file.")
126 (home-page "https://pimsync.whynothugo.nl/")
127 (license license:eupl1.2)))
128
129(define-public radicale
130 (package
131 (name "radicale")
132 (version "3.3.2")
133 (source
134 (origin
135 (method git-fetch)
136 (uri (git-reference
137 (url "https://github.com/Kozea/Radicale")
138 (commit (string-append "v" version))))
139 (file-name (git-file-name name version))
140 (sha256
141 (base32 "0walj1b7jrcc85maav04ciiipcqsl0mwbq3icksql26vr4i3y19z"))))
142 (build-system pyproject-build-system)
143 (native-inputs
144 (list python-pytest
145 python-setuptools
146 python-waitress
147 python-wheel))
148 (propagated-inputs
149 (list python-defusedxml
150 python-passlib
151 python-pika
152 python-vobject))
153 (synopsis "Basic CalDAV and CardDAV server")
154 (description "Radicale is a CalDAV and CardDAV server for UNIX-like
155platforms. Calendars and address books are available for both local and remote
156access, possibly limited through authentication policies. They can be viewed
157and edited by calendar and contact clients on mobile phones or computers.
158
159Radicale intentionally does not fully comply with the CalDAV and CardDAV RFCs.
160Instead, it supports the CalDAV and CardDAV implementations of popular
161clients.")
162 (home-page "https://radicale.org/")
163 (license license:gpl3+)))
164
165(define-public xandikos
166 (package
167 (name "xandikos")
168 (version "0.4.5")
169 (source
170 (origin
171 (method git-fetch)
172 (uri (git-reference
173 (url "https://github.com/jelmer/xandikos")
174 (commit (string-append "v" version))))
175 (file-name (git-file-name name version))
176 (sha256
177 (base32 "0hl932havrrw93sz5s8z95ksxaxzwc8gwi506drff05aq1cj9syh"))))
178 (build-system pyproject-build-system)
179 (arguments
180 (list
181 #:phases
182 #~(modify-phases %standard-phases
183 (add-before 'check 'check-setup
184 (lambda _
185 (setenv "XANDIKOSPATH" (mkdtemp "/tmp/xandikospath-XXXXXX")))))))
186 (native-inputs
187 (list python-pytest
188 python-setuptools))
189 (propagated-inputs
190 (list python-aiohttp
191 python-defusedxml
192 python-dulwich
193 python-icalendar
194 python-jinja2
195 python-multidict
196 python-vobject))
197 (home-page "https://www.xandikos.org/")
198 (synopsis "Lightweight CalDAV/CardDAV server")
199 (description
200 "Xandikos is a lightweight yet complete CardDAV/CalDAV server that backs
201onto a Git repository.
202
203Features:
204
205@itemize
206@item Easy to set up
207@item Share calendars (events, todo items, journal entries) via CalDAV and
208contacts (vCard) via CardDAV
209@item Automatically keep history and back up changes in Git
210@item Supports synchronization extensions for CalDAV/CardDAV for quick and
211efficient syncing
212@item Automatically keep history and back up
213@item Works with all tested CalDAV and CardDAV clients
214@end itemize")
215 (license license:gpl3+)))
216
217(define-public vdirsyncer
218 (package
219 (name "vdirsyncer")
220 (version "0.20.0")
221 (source (origin
222 (method url-fetch)
223 (uri (pypi-uri name version))
224 (sha256
225 (base32
226 "0bdi83ycnkx0ddyc10ixan992dgyaq83lwsms57w358aa0rsbcgy"))))
227 (build-system pyproject-build-system)
228 (arguments
229 (list
230 #:test-flags '(list "-k" "not test_request_ssl")
231 #:phases
232 #~(modify-phases %standard-phases
233 (add-after 'unpack 'patch-version-call
234 (lambda _
235 (substitute* "docs/conf.py"
236 (("^release.*")
237 (string-append "release = '" #$version "'\n")))))
238 (add-before 'check 'pre-check
239 (lambda _
240 (setenv "DETERMINISTIC_TESTS" "true"))))))
241 (native-inputs
242 (list python-aioresponses
243 python-pytest
244 python-pytest-asyncio
245 python-pytest-httpserver
246 python-setuptools
247 python-setuptools-scm
248 python-trustme))
249 (inputs
250 (list python-aiohttp
251 python-aiohttp-oauthlib
252 python-aiostream
253 python-atomicwrites
254 python-click
255 python-click-log
256 python-requests
257 python-requests-toolbelt))
258 (synopsis "Synchronize calendars and contacts")
259 (description "Vdirsyncer synchronizes your calendars and addressbooks
260between two storage locations. The most popular purpose is to
261synchronize a CalDAV or CardDAV server with a local folder or file. The
262local data can then be accessed via a variety of programs, none of which
263have to know or worry about syncing to a server.")
264 (home-page "https://github.com/pimutils/vdirsyncer")
265 (license license:bsd-3)))