projects/guix·blob javascript-team · refs

273 lines · 9.8 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.6.0")
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 "0y5ib7kmc6qgsawkn0q49db51msdxx41h37rqnrmkavpksrsd6dy"))))
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.8.1")
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 "0c521jjgymydx4l6091ljrswzdjjvkfamaw85ddrxyx3wrgfz7p3"))))
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-argon2-cffi
153 python-bcrypt
154 python-defusedxml
155 python-ldap3
156 python-libpass
157 python-pam
158 python-pika
159 python-requests
160 python-vobject))
161 (synopsis "Basic CalDAV and CardDAV server")
162 (description "Radicale is a CalDAV and CardDAV server for UNIX-like
163platforms. Calendars and address books are available for both local and remote
164access, possibly limited through authentication policies. They can be viewed
165and edited by calendar and contact clients on mobile phones or computers.
166
167Radicale intentionally does not fully comply with the CalDAV and CardDAV RFCs.
168Instead, it supports the CalDAV and CardDAV implementations of popular
169clients.")
170 (home-page "https://radicale.org/")
171 (license license:gpl3+)))
172
173(define-public xandikos
174 (package
175 (name "xandikos")
176 (version "0.4.5")
177 (source
178 (origin
179 (method git-fetch)
180 (uri (git-reference
181 (url "https://github.com/jelmer/xandikos")
182 (commit (string-append "v" version))))
183 (file-name (git-file-name name version))
184 (sha256
185 (base32 "0hl932havrrw93sz5s8z95ksxaxzwc8gwi506drff05aq1cj9syh"))))
186 (build-system pyproject-build-system)
187 (arguments
188 (list
189 #:phases
190 #~(modify-phases %standard-phases
191 (add-before 'check 'check-setup
192 (lambda _
193 (setenv "XANDIKOSPATH" (mkdtemp "/tmp/xandikospath-XXXXXX")))))))
194 (native-inputs
195 (list python-pytest
196 python-setuptools))
197 (propagated-inputs
198 (list python-aiohttp
199 python-defusedxml
200 python-dulwich
201 python-icalendar
202 python-jinja2
203 python-multidict
204 python-vobject))
205 (home-page "https://www.xandikos.org/")
206 (synopsis "Lightweight CalDAV/CardDAV server")
207 (description
208 "Xandikos is a lightweight yet complete CardDAV/CalDAV server that backs
209onto a Git repository.
210
211Features:
212
213@itemize
214@item Easy to set up
215@item Share calendars (events, todo items, journal entries) via CalDAV and
216contacts (vCard) via CardDAV
217@item Automatically keep history and back up changes in Git
218@item Supports synchronization extensions for CalDAV/CardDAV for quick and
219efficient syncing
220@item Automatically keep history and back up
221@item Works with all tested CalDAV and CardDAV clients
222@end itemize")
223 (license license:gpl3+)))
224
225(define-public vdirsyncer
226 (package
227 (name "vdirsyncer")
228 (version "0.20.0")
229 (source (origin
230 (method url-fetch)
231 (uri (pypi-uri name version))
232 (sha256
233 (base32
234 "0bdi83ycnkx0ddyc10ixan992dgyaq83lwsms57w358aa0rsbcgy"))))
235 (build-system pyproject-build-system)
236 (arguments
237 (list
238 #:test-flags '(list "-k" "not test_request_ssl")
239 #:phases
240 #~(modify-phases %standard-phases
241 (add-after 'unpack 'patch-version-call
242 (lambda _
243 (substitute* "docs/conf.py"
244 (("^release.*")
245 (string-append "release = '" #$version "'\n")))))
246 (add-before 'check 'pre-check
247 (lambda _
248 (setenv "DETERMINISTIC_TESTS" "true"))))))
249 (native-inputs
250 (list python-aioresponses
251 python-pytest
252 python-pytest-asyncio
253 python-pytest-httpserver
254 python-setuptools
255 python-setuptools-scm
256 python-trustme))
257 (inputs
258 (list python-aiohttp
259 python-aiohttp-oauthlib
260 python-aiostream
261 python-atomicwrites
262 python-click
263 python-click-log
264 python-requests
265 python-requests-toolbelt))
266 (synopsis "Synchronize calendars and contacts")
267 (description "Vdirsyncer synchronizes your calendars and addressbooks
268between two storage locations. The most popular purpose is to
269synchronize a CalDAV or CardDAV server with a local folder or file. The
270local data can then be accessed via a variety of programs, none of which
271have to know or worry about syncing to a server.")
272 (home-page "https://github.com/pimutils/vdirsyncer")
273 (license license:bsd-3)))