projects/guix·blob python-team · refs

887 lines · 30.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2025, 2026 Giacomo Leidi <[email protected]>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages elixir-web)
20 #:use-module (gnu packages)
21 #:use-module (gnu packages erlang)
22 #:use-module (gnu packages erlang-xyz)
23 #:use-module (gnu packages elixir-databases)
24 #:use-module (gnu packages elixir-i18n)
25 #:use-module (gnu packages elixir-markup)
26 #:use-module (gnu packages elixir-xyz)
27 #:use-module (guix build-system mix)
28 #:use-module (guix download)
29 #:use-module (guix git-download)
30 #:use-module (guix gexp)
31 #:use-module ((guix licenses)
32 #:prefix license:)
33 #:use-module (guix packages))
34
35(define-public elixir-bandit
36 (package
37 (name "elixir-bandit")
38 (version "1.12.0")
39 (source
40 (origin
41 (method url-fetch)
42 (uri (hexpm-uri "bandit" version))
43 (sha256
44 (base32 "083fqqvfxrjmy1an16cx8v4xk4dpm32rrvkd355cyibgr0nwinj5"))))
45 (build-system mix-build-system)
46 (arguments
47 ;; Tests depend on elixir-req which is not yet packaged.
48 (list #:tests? #f))
49 (propagated-inputs
50 (list elixir-hpax
51 elixir-plug
52 erlang-telemetry
53 elixir-thousand-island
54 elixir-websock))
55 (synopsis "HTTP server built for Plug & WebSock apps")
56 (description
57 "This package provides a pure-Elixir HTTP server built for Plug & @code{WebSock}
58apps.")
59 (home-page "https://hexdocs.pm/bandit/")
60 (license license:expat)))
61
62(define-public elixir-con-cache
63 (package
64 (name "elixir-con-cache")
65 (version "1.1.1")
66 (source
67 (origin
68 (method url-fetch)
69 (uri (hexpm-uri "con_cache" version))
70 (sha256
71 (base32 "05dfx20f6sncxcpmld7s3gc4jmibkyhn1g2vbg3n8r99xhdlvvqx"))))
72 (build-system mix-build-system)
73 (propagated-inputs (list erlang-telemetry))
74 (synopsis
75 "ETS based key-value storage")
76 (description
77 "This package provides @code{con_cache}, an ETS based key-value storage
78with support for row-level isolated writes, TTL auto-purge, and modification
79callbacks.")
80 (home-page "https://hexdocs.pm/con_cache/")
81 (license license:expat)))
82
83;; This package lives here to avoid module level circular dependencies as it
84;; depends on elixir-plug.
85(define-public elixir-ecto-shorts
86 (package
87 (name "elixir-ecto-shorts")
88 (version "2.4.0")
89 (source
90 (origin
91 (method url-fetch)
92 (uri (hexpm-uri "ecto_shorts" version))
93 (sha256
94 (base32 "1r7cc0dhhvmqnwicrnay9lsaf2xahr919g993rbbakdca2xw0q3l"))))
95 (build-system mix-build-system)
96 (native-inputs (list elixir-credo elixir-excoveralls))
97 (propagated-inputs (list elixir-ecto-sql elixir-error-message))
98 (synopsis
99 "Helper tools for making ecto interactions shorter")
100 (description
101 "Helper tools for making ecto interactions more pleasant and shorter.")
102 (home-page "https://hexdocs.pm/ecto_shorts/")
103 (license license:expat)))
104
105(define-public elixir-emote
106 (package
107 (name "elixir-emote")
108 (version "0.1.1")
109 (source
110 (origin
111 (method url-fetch)
112 (uri (hexpm-uri "emote" version))
113 (sha256
114 (base32 "1km0hkvjpswxrvadrz4wjarpnv6wz3p15bdmmlw0yswnfvmij4ni"))))
115 (build-system mix-build-system)
116 (propagated-inputs (list elixir-phoenix-html))
117 (synopsis
118 "Convert emoticons and emoji names to emoji characters or images")
119 (description
120 "This package provides @code{elixir-emote}, a small library for
121converting emoticons and emoji names to emoji characters or images,
122including custom emoji.")
123 (home-page "https://hexdocs.pm/emote/")
124 (license license:wtfpl2)))
125
126;; This package lives here to avoid module level circular dependencies as it
127;; depends on elixir-plug.
128(define-public elixir-error-message
129 (package
130 (name "elixir-error-message")
131 (version "0.3.3")
132 (source
133 (origin
134 (method url-fetch)
135 (uri (hexpm-uri "error_message" version))
136 (sha256
137 (base32 "0wsbcwby3grnb5s6558s2x5wrhy8f7vwbbfdk88rsacbf1w0l6k7"))))
138 (build-system mix-build-system)
139 (native-inputs (list elixir-excoveralls))
140 (propagated-inputs (list elixir-jason elixir-plug))
141 (synopsis "Make errors consistent across your system")
142 (description
143 "Error system to help make errors consistent across your system.")
144 (home-page "https://hexdocs.pm/error_message/")
145 (license license:expat)))
146
147;; This package lives here to avoid module level circular dependencies as it
148;; depends on elixir-mint.
149(define-public elixir-ex-cldr-dates-times
150 (package
151 (name "elixir-ex-cldr-dates-times")
152 (version "2.25.6")
153 (source
154 (origin
155 (method url-fetch)
156 (uri (hexpm-uri "ex_cldr_dates_times" version))
157 (sha256
158 (base32 "1qk30q1x72p0811f3malbbxb1aln3av6dviji048d7w45dkgavwj"))))
159 (build-system mix-build-system)
160 (native-inputs (list elixir-ex-cldr-calendars-japanese))
161 (propagated-inputs
162 (list elixir-calendar-interval
163 elixir-ex-cldr
164 elixir-ex-cldr-calendars
165 elixir-ex-cldr-units
166 elixir-jason
167 elixir-tz))
168 (synopsis
169 "Date, Time and DateTime localization, internationalization and formatting")
170 (description
171 "Date, Time and @code{DateTime} localization, internationalization and formatting
172functions using the Common Locale Data Repository (CLDR).")
173 (home-page "https://hexdocs.pm/ex_cldr_dates_times/")
174 (license license:asl2.0)))
175
176(define-public elixir-ex-cldr-plugs
177 (package
178 (name "elixir-ex-cldr-plugs")
179 (version "1.4.0")
180 (source
181 (origin
182 (method url-fetch)
183 (uri (hexpm-uri "ex_cldr_plugs" version))
184 (sha256
185 (base32 "1g3pc821al24bw8kpmxi067hqi6nl85rgsh8c2ih1pdx6gawqn88"))))
186 (build-system mix-build-system)
187 (propagated-inputs (list elixir-ex-cldr elixir-gettext elixir-jason elixir-plug))
188 (synopsis
189 "Plugs supporting CLDR")
190 (description
191 "Plugs supporting CLDR and setting the locale from requests and request headers.")
192 (home-page "https://hexdocs.pm/ex_cldr_plugs/")
193 (license license:asl2.0)))
194
195(define-public elixir-exjsx
196 (package
197 (name "elixir-exjsx")
198 (version "4.0.0")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (hexpm-uri "exjsx" version))
203 (sha256
204 (base32 "01rfr1har8akbwwnsba4a248hfym5955348fhdkymzvwm4h5is9j"))))
205 (build-system mix-build-system)
206 (propagated-inputs (list erlang-jsx))
207 (synopsis "JSON for Elixir")
208 (description "This package provides @code{exjsx}, a JSON library for
209Elixir.")
210 (home-page "https://hexdocs.pm/exjsx/")
211 (license license:expat)))
212
213(define-public elixir-hpack
214 (package
215 (name "elixir-hpack")
216 (version "3.0.1")
217 (source
218 (origin
219 (method url-fetch)
220 (uri (hexpm-uri "hpack" version))
221 (sha256
222 (base32 "1gh4p21mlnnbprh7fxk03i53lmbdqsgi0my3r9sv9ivl9i6nm0rq"))))
223 (build-system mix-build-system)
224 (synopsis
225 "Implementation of the
226@uref{https://http2.github.io/http2-spec/compression.html,HPack} protocol")
227 (description
228 "This package provides @code{elixir-hpack}, an implementation of the
229@uref{https://http2.github.io/http2-spec/compression.html,HPack} protocol: a
230compression format for efficiently representing HTTP header fields, to be used
231in HTTP/2.")
232 (home-page "https://hexdocs.pm/hpack/")
233 (license license:expat)))
234
235(define-public elixir-hpax
236 (package
237 (name "elixir-hpax")
238 (version "1.0.4")
239 (source
240 (origin
241 (method url-fetch)
242 (uri (hexpm-uri "hpax" version))
243 (sha256
244 (base32 "1jkpycqdfhrlkwj286qik7klkpg5ijwr0qc1wwfd1hmw5qacpixg"))))
245 (build-system mix-build-system)
246 (native-inputs
247 (list erlang-coveralls
248 elixir-excoveralls))
249 (propagated-inputs
250 (list elixir-castore
251 elixir-hpack
252 elixir-stream-data))
253 (synopsis "Implementation of the HPACK protocol (RFC 7541) for Elixir")
254 (description "This package provides @code{elixir-hpax}, an implementation of
255the HPACK protocol (RFC 7541) for Elixir.")
256 (home-page "https://hexdocs.pm/hpax/")
257 (license license:asl2.0)))
258
259(define-public elixir-httparrot
260 (package
261 (name "elixir-httparrot")
262 (version "1.5.0")
263 (source
264 (origin
265 (method git-fetch)
266 (uri (git-reference
267 (url "https://github.com/edgurgel/httparrot.git")
268 (commit (string-append "v" version))))
269 (file-name (git-file-name name version))
270 (sha256
271 (base32 "0chilfyrrps6qxrc05sxmb1hbswb839iam5i0ijrgi6gchz1afyi"))))
272 (build-system mix-build-system)
273 (native-inputs
274 (list elixir-earmark erlang-meck))
275 (propagated-inputs
276 (list elixir-con-cache erlang-cowboy elixir-jason))
277 (synopsis "HTTP Request & Response Server")
278 (description "HTTP server built on top of Cowboy using (mostly)
279@code{cowboy_rest} handlers to serve useful endpoints for testing
280purposes. Its goal is to be as close as possible to
281@uref{http://httpbin.org, HTTPBin}.")
282 (home-page "https://hexdocs.pm/httparrot/")
283 (license license:expat)))
284
285(define-public elixir-httpoison
286 (package
287 (name "elixir-httpoison")
288 (version "3.0.0")
289 (source
290 (origin
291 (method git-fetch)
292 (uri (git-reference
293 (url "https://github.com/edgurgel/httpoison")
294 (commit (string-append "v" version))))
295 (file-name (git-file-name name version))
296 (sha256
297 (base32 "0y2wih0cyxgkjxcqgmzfxxrcss2zpys8n5nzb19bsdxh8rvrazcv"))))
298 (build-system mix-build-system)
299 (arguments
300 (list
301 #:test-flags
302 ;; These tests require network access to badssl.com.
303 #~(list "--exclude" "network")
304 #:phases
305 #~(modify-phases %standard-phases
306 (add-after 'unpack 'make-reproducible
307 (lambda _
308 ;; Buffer size has been increased in OTP 28+. For more info see:
309 ;; https://github.com/erlang/otp/issues/9722#issuecomment-2808683303
310 (substitute* "test/httpoison_test.exs"
311 (("stream/20") "stream/100")
312 (("<= expected_length") "<= expected_length * 1.1")
313 ((">= max_length") ">= max_length * 0.9")))))))
314 (native-inputs
315 (list erlang-cowboy
316 elixir-earmark
317 elixir-jason
318 elixir-httparrot
319 elixir-mimic))
320 (propagated-inputs (list erlang-hackney))
321 (synopsis "Yet Another HTTP client for Elixir")
322 (description "Yet Another HTTP client for Elixir powered by hackney.")
323 (home-page "https://hexdocs.pm/httpoison/")
324 (license license:expat)))
325
326(define-public elixir-iconify-ex
327 (package
328 (name "elixir-iconify-ex")
329 (version "0.7.2")
330 (source
331 (origin
332 (method url-fetch)
333 (uri (hexpm-uri "iconify_ex" version))
334 (sha256
335 (base32 "0lp56picb0x09d6176z0avl4a846cfpj9fnnsy4cj9sxj0nk5yjy"))))
336 (build-system mix-build-system)
337 (propagated-inputs
338 (list elixir-arrows
339 elixir-emote
340 elixir-floki
341 elixir-jason
342 elixir-phoenix-live-favicon
343 elixir-phoenix-live-view
344 elixir-recase
345 elixir-surface
346 elixir-untangle))
347 (synopsis
348 "Phoenix helpers for using icon sets")
349 (description
350 "This package provides Phoenix helpers for using the 100,000+ SVG icons
351from 100+ icon sets from @uref{https://iconify.design, iconify.design}.")
352 (home-page "https://hexdocs.pm/iconify_ex/")
353 (license license:expat)))
354
355(define-public elixir-mint-web-socket
356 (package
357 (name "elixir-mint-web-socket")
358 (version "1.0.5")
359 (source
360 (origin
361 (method url-fetch)
362 (uri (hexpm-uri "mint_web_socket" version))
363 (sha256
364 (base32 "0q9fy6sq9yaxh2ip4sgypa5l3jk7q1m4vkkc6prmiiwg8iimdcq4"))))
365 (build-system mix-build-system)
366 (arguments
367 ;; Tests depend on gun from hex.pm which is not packaged yet.
368 (list #:tests? #f))
369 (native-inputs (list elixir-jason erlang-cowboy))
370 (propagated-inputs (list elixir-mint))
371 (synopsis "WebSocket support for Mint")
372 (description "HTTP/1 and HTTP/2 @code{WebSocket} support for Mint.")
373 (home-page "https://hexdocs.pm/mint_web_socket/")
374 (license license:asl2.0)))
375
376(define-public elixir-mint
377 (package
378 (name "elixir-mint")
379 (version "1.9.3")
380 (source
381 (origin
382 (method url-fetch)
383 (uri (hexpm-uri "mint" version))
384 (sha256
385 (base32 "0x0yzia7045n54fpy6ph1y3h37iw62839b7fqjxrs1hc91196z2z"))))
386 (build-system mix-build-system)
387 (arguments
388 ;; Tests depend on elixir-mox which is not packaged yet.
389 (list #:tests? #f))
390 (native-inputs
391 (list elixir-excoveralls))
392 (propagated-inputs (list elixir-castore elixir-hpax))
393 (synopsis "Functional HTTP client for Elixir with support for HTTP/1 and
394HTTP/2")
395 (description "Mint is different from most Erlang and Elixir HTTP clients
396because it provides a process-less architecture. Instead, Mint is based on a
397functional and immutable data structure that represents an HTTP connection.
398
399This data structure wraps a TCP or SSL socket. This allows for more
400fine-tailored architectures where the developer is responsible for wrapping the
401connection struct, such as having one process handle multiple connections or
402having different kinds of processes handle connections.")
403 (home-page "https://hexdocs.pm/mint/")
404 (license license:asl2.0)))
405
406(define-public elixir-neuron
407 (package
408 (name "elixir-neuron")
409 (version "5.1.0")
410 (source
411 (origin
412 (method url-fetch)
413 (uri (hexpm-uri "neuron" version))
414 (sha256
415 (base32 "1kmnhlihpv1075i3f5izysx2vdgqw71lnnxw8yifxh6r1l7dpk93"))))
416 (build-system mix-build-system)
417 (arguments
418 ;; Tests depend on Coverex, which is not packaged yet.
419 (list #:tests? #f))
420 (propagated-inputs (list elixir-httpoison elixir-jason))
421 (synopsis "GraphQL client for Elixir")
422 (description "This package provides a @code{GraphQL} client for Elixir.")
423 (home-page "https://hexdocs.pm/neuron/")
424 (license license:isc)))
425
426(define-public elixir-phoenix-ecto
427 (package
428 (name "elixir-phoenix-ecto")
429 (version "4.7.0")
430 (source
431 (origin
432 (method url-fetch)
433 (uri (hexpm-uri "phoenix_ecto" version))
434 (sha256
435 (base32 "1k7lzc3566pilnk22hrvx4drlm99jqx8509yhbglvjsl88g02x8x"))))
436 (build-system mix-build-system)
437 (propagated-inputs
438 (list elixir-ecto
439 elixir-phoenix-html
440 elixir-plug
441 elixir-postgrex))
442 (synopsis "Phoenix and Ecto integration with support for concurrent
443acceptance testing")
444 (description "This package provides a library that integrates Phoenix with
445Ecto, implementing all relevant protocols.")
446 (home-page "https://hexdocs.pm/phoenix_ecto/")
447 (license license:expat)))
448
449(define-public elixir-phoenix-html
450 (package
451 (name "elixir-phoenix-html")
452 (version "4.3.0")
453 (source
454 (origin
455 (method url-fetch)
456 (uri (hexpm-uri "phoenix_html" version))
457 (sha256
458 (base32 "1bcp0kri8fh6ygs6js3ppja9sxmy3fc6m94iyxsz1c5sg052kaiy"))))
459 (build-system mix-build-system)
460 (synopsis "Phoenix view functions for working with HTML templates")
461 (description "This package provides @code{elixir-phoenix-html}, a library
462implementing view functions for working with HTML templates in the Phoenix
463framework.")
464 (home-page "https://hexdocs.pm/phoenix_html/")
465 (license license:expat)))
466
467(define-public elixir-phoenix-live-favicon
468 (package
469 (name "elixir-phoenix-live-favicon")
470 (version "1.0.0")
471 (source
472 (origin
473 (method url-fetch)
474 (uri (hexpm-uri "phoenix_live_favicon" version))
475 (sha256
476 (base32 "1wakzjn4z0skmmymywng2n5jqcfbfccawzcd03a5gcyy3m215h7w"))))
477 (build-system mix-build-system)
478 (arguments
479 ;; Tests depend on makeup_diff from hex.pm but it is not packaged yet.
480 (list #:tests? #f))
481 (propagated-inputs (list elixir-phoenix-live-head))
482 (synopsis "Favicon manipulation for Phoenix Live Views")
483 (description "This package provides a lib enabling dynamic favicons in
484Phoenix Live View applications.")
485 (home-page "https://hexdocs.pm/phoenix_live_favicon/")
486 (license license:expat)))
487
488(define-public elixir-phoenix-live-head
489 (package
490 (name "elixir-phoenix-live-head")
491 (version "1.0.0")
492 (source
493 (origin
494 (method url-fetch)
495 (uri (hexpm-uri "phoenix_live_head" version))
496 (sha256
497 (base32 "12z1rjizkj4337cc0p1mvjq7n0jgd0v9gd8p8bw10vsi5ykbdlai"))))
498 (build-system mix-build-system)
499 (native-inputs
500 (list elixir-excoveralls))
501 (propagated-inputs
502 (list elixir-ex-doc elixir-jason elixir-phoenix
503 elixir-phoenix-html elixir-phoenix-live-view))
504 (synopsis "HTML Head manipulation for Phoenix Live Views")
505 (description "This package provides commands for manipulating the HTML Head
506of Phoenix Live View applications while minimizing data over the wire.
507
508The available command actions support a variety of utility operations useful for
509HTML Head manipulation. Such as setting or removing tag attributes and adding
510or removing CSS classes.
511
512A special feature is the use of the @code{@{dynamic@}} tag in values. This
513saves data over the wire by only sending the dynamic part of an attributes
514value.")
515 (home-page "https://hexdocs.pm/phoenix_live_head/")
516 (license license:expat)))
517
518(define-public elixir-phoenix-live-reload
519 (package
520 (name "elixir-phoenix-live-reload")
521 (version "1.6.2")
522 (source
523 (origin
524 (method url-fetch)
525 (uri (hexpm-uri "phoenix_live_reload" version))
526 (sha256
527 (base32 "1ffm615gzqkklzznf16y2cf4zqnc52sgyr8kfaad6l2c24c9ry6i"))))
528 (build-system mix-build-system)
529 (arguments
530 ;; Tests fail with:
531 ;;
532 ;; [warning] Could not start Phoenix live-reload because we cannot listen
533 ;; to the file system.
534 ;; You don't need to worry! This is an optional feature used during
535 ;; development to refresh your browser when you save files and it does not
536 ;; affect production.
537 (list #:tests? #f))
538 (propagated-inputs (list elixir-file-system elixir-phoenix))
539 (synopsis "Live-reload functionality for Phoenix")
540 (description
541 "This package provides live-reload functionality for Phoenix.")
542 (home-page "https://hexdocs.pm/phoenix_live_reload/")
543 (license license:expat)))
544
545(define-public elixir-phoenix-live-view
546 (package
547 (name "elixir-phoenix-live-view")
548 (version "1.2.7")
549 (source
550 (origin
551 (method url-fetch)
552 (uri (hexpm-uri "phoenix_live_view" version))
553 (sha256
554 (base32 "1sz06xikykq7wj2n136cfajm4bxz79i2asc35ipnvjpwlhw7ksb1"))))
555 (build-system mix-build-system)
556 (arguments
557 ;; Tests fail with:
558 ;;
559 ;; [warning] Could not start Phoenix live-reload because we cannot listen
560 ;; to the file system.
561 ;; You don't need to worry! This is an optional feature used during
562 ;; development to refresh your browser when you save files and it does not
563 ;; affect production.
564 (list #:tests? #f))
565 (native-inputs
566 (list elixir-html-entities
567 elixir-phoenix-live-reload))
568 (propagated-inputs
569 (list elixir-floki
570 elixir-jason
571 elixir-phoenix
572 elixir-phoenix-html
573 elixir-phoenix-template
574 elixir-phoenix-view
575 elixir-plug
576 erlang-telemetry))
577 (synopsis "Rich, real-time user experiences with server-rendered HTML")
578 (description "LiveView brings a unified experience to building web
579applications. You no longer have to split work between client and server,
580across different toolings, layers, and abstractions. Instead, LiveView
581enriches the server with a declarative and powerful model while keeping your
582code closer to your data (and ultimately your source of truth):
583
584@itemize
585@item Declarative server side rendering
586@item Rich templating language
587@item Diffs over the wire
588@item Live form validation
589@item File uploads with progress indicators
590@item Optimistic updates and transitions
591@item Live navigation
592@item Latency simulator
593@end itemize")
594 (home-page "https://hexdocs.pm/phoenix_live_view/")
595 (license license:expat)))
596
597(define-public elixir-phoenix-pubsub
598 (package
599 (name "elixir-phoenix-pubsub")
600 (version "2.2.0")
601 (source
602 (origin
603 (method url-fetch)
604 (uri (hexpm-uri "phoenix_pubsub" version))
605 (sha256
606 (base32 "15iyzxh99b061jlcn506brva1fvkvs7ndnfgcfgh6dkipyji7hxd"))))
607 (build-system mix-build-system)
608 (arguments
609 ;; Tests require network
610 (list #:tests? #f))
611 (synopsis "Distributed PubSub and Presence platform")
612 (description "This package provides @code{elixir-phoenix-pubsub}, a library
613implementing a distributed @code{PubSub} and @code{Presence} platform for the
614Phoenix Framework.")
615 (home-page "https://hexdocs.pm/phoenix_pubsub/")
616 (license license:expat)))
617
618(define-public elixir-phoenix-template
619 (package
620 (name "elixir-phoenix-template")
621 (version "1.0.4")
622 (source
623 (origin
624 (method url-fetch)
625 (uri (hexpm-uri "phoenix_template" version))
626 (sha256
627 (base32 "01j28jf0q1h5pk9ndf7s6jx9m489jyf24byabjpkyxf6wpq8231c"))))
628 (build-system mix-build-system)
629 (native-inputs (list elixir-jason))
630 (propagated-inputs (list elixir-phoenix-html))
631 (synopsis "Template rendering for Phoenix")
632 (description "This module provides functions for loading and compiling
633templates from disk. A markup language is compiled to Elixir code via an
634engine.")
635 (home-page "https://hexdocs.pm/phoenix_template/")
636 (license license:expat)))
637
638(define-public elixir-phoenix-view
639 (package
640 (name "elixir-phoenix-view")
641 (version "2.0.4")
642 (source
643 (origin
644 (method url-fetch)
645 (uri (hexpm-uri "phoenix_view" version))
646 (sha256
647 (base32 "02v2xd1h415kbf1ncclqx6acrbslh6i2gnrmfgjizwqlrqi216af"))))
648 (build-system mix-build-system)
649 (native-inputs
650 (list elixir-jason))
651 (propagated-inputs (list elixir-phoenix-html elixir-phoenix-template))
652 (synopsis "View layer in Phoenix v1.0-v1.6 apps")
653 (description "Within LiveView and HTML apps, @code{Phoenix.View} has fallen
654out of fashion in favor of @code{Phoenix.Component}. See the \"Replaced by
655@code{Phoenix.Component}\" section in the @code{Phoenix.View} module
656documentation for more information and migration steps.
657
658If you want to render other formats, such as XML, @code{Phoenix.View} may still
659be a useful addition to your projects.")
660 (home-page "https://hexdocs.pm/phoenix_view/")
661 (license license:expat)))
662
663(define-public elixir-phoenix
664 (package
665 (name "elixir-phoenix")
666 (version "1.8.9")
667 (source
668 (origin
669 (method url-fetch)
670 (uri (hexpm-uri "phoenix" version))
671 (sha256
672 (base32 "0in0zk1s2apaq32skgi3k5jmy9r1zsyk340n841q4qagbbfy4xrl"))))
673 (build-system mix-build-system)
674 (native-inputs
675 (list elixir-mint
676 elixir-mint-web-socket
677 elixir-phx-new))
678 (propagated-inputs
679 (list elixir-castore
680 elixir-jason
681 elixir-phoenix-pubsub
682 elixir-phoenix-html
683 elixir-phoenix-template
684 elixir-phoenix-view
685 elixir-plug
686 elixir-plug-cowboy
687 elixir-plug-crypto
688 erlang-telemetry
689 elixir-websock-adapter))
690 (synopsis "Web development framework")
691 (description "Phoenix is a web development framework written in Elixir
692which implements the server-side Model View Controller (MVC) pattern. Many of
693its components and concepts will seem familiar to those with experience in other
694web frameworks like Ruby on Rails or Python's Django.")
695 (home-page "https://www.phoenixframework.org/")
696 (license license:expat)))
697
698(define-public elixir-phx-new
699 (package
700 (name "elixir-phx-new")
701 (version "1.8.9")
702 (source
703 (origin
704 (method url-fetch)
705 (uri (hexpm-uri "phx_new" version))
706 (sha256
707 (base32 "186nv9wcs7hdm81nr2yaqgh3hag3xp1j29yk6i1140nj06i1iwib"))))
708 (build-system mix-build-system)
709 (synopsis
710 "Phoenix framework project generator")
711 (description
712 "Phoenix framework project generator. Provides a @command{mix phx.new}
713task to bootstrap a new Elixir application with Phoenix dependencies.")
714 (home-page "https://hexdocs.pm/phx_new/")
715 (license license:expat)))
716
717(define-public elixir-plug-crypto
718 (package
719 (name "elixir-plug-crypto")
720 (version "2.1.1")
721 (source
722 (origin
723 (method url-fetch)
724 (uri (hexpm-uri "plug_crypto" version))
725 (sha256
726 (base32 "0z1424zcywdg47wsbvhmdbrngbz4lzhzsbv1jza8n774zzkbqw34"))))
727 (build-system mix-build-system)
728 (synopsis "Crypto-related functionality for the web")
729 (description "This package provides @code{elixir-plug-crypto}, a library
730implementing crypto-related functionality for the web, used by Plug.")
731 (home-page "https://hexdocs.pm/plug_crypto/")
732 (license license:asl2.0)))
733
734(define-public elixir-plug-cowboy
735 (package
736 (name "elixir-plug-cowboy")
737 (version "2.9.0")
738 (source
739 (origin
740 (method url-fetch)
741 (uri (hexpm-uri "plug_cowboy" version))
742 (sha256
743 (base32 "0bj25jlyg5kfxcfdnznk33nsflxi241dfs4flmamp97klkxvl0i0"))))
744 (build-system mix-build-system)
745 (arguments
746 (list
747 #:tests? #f))
748 (native-inputs
749 (list elixir-x509 erlang-hackney))
750 (propagated-inputs (list erlang-cowboy erlang-cowboy-telemetry elixir-plug))
751 (synopsis "A Plug adapter for Cowboy")
752 (description "This package provides a Plug adapter for Cowboy.")
753 (home-page "https://hexdocs.pm/plug_cowboy/")
754 (license license:asl2.0)))
755
756(define-public elixir-plug
757 (package
758 (name "elixir-plug")
759 (version "1.20.3")
760 (source
761 (origin
762 (method url-fetch)
763 (uri (hexpm-uri "plug" version))
764 (sha256
765 (base32 "0xmdfq7am1a408j1pykwqh79yc9166dg736m15jfydl53gp6l9my"))))
766 (build-system mix-build-system)
767 (propagated-inputs (list elixir-mime elixir-plug-crypto erlang-telemetry))
768 (synopsis "Compose web applications with functions")
769 (description "Plug is:
770
771@itemize
772@item A specification for composing web applications with functions
773@item Connection adapters for different web servers in the Erlang VM
774@end itemize
775
776In other words, Plug allows you to build web applications from small pieces and
777run them on different web servers. Plug is used by web frameworks such as
778Phoenix to manage requests, responses, and websockets. This documentation will
779show some high-level examples and introduce the Plug's main building blocks.")
780 (home-page "https://hexdocs.pm/plug/")
781 (license license:asl2.0)))
782
783(define-public elixir-surface
784 (package
785 (name "elixir-surface")
786 (version "0.12.3")
787 (source
788 (origin
789 (method url-fetch)
790 (uri (hexpm-uri "surface" version))
791 (sha256
792 (base32 "12hmq0rv2dhh8pm6s9bwhm3xw669y91gr6mb3v9ks40yc3ddk6pz"))))
793 (build-system mix-build-system)
794 (native-inputs
795 (list elixir-ecto
796 elixir-lazy-html
797 elixir-jason
798 elixir-phoenix-ecto
799 elixir-sourceror))
800 (propagated-inputs
801 (list elixir-phoenix-html
802 elixir-phoenix-live-view
803 elixir-sourceror))
804 (synopsis "Server-side rendering component library for Phoenix")
805 (description
806 "This package provides Surface is a server-side rendering component library
807that allows developers to build rich interactive user-interfaces, writing
808minimal custom JavaScript.")
809 (home-page "https://surface-ui.org")
810 (license license:expat)))
811
812;; This package lives here to avoid module level circular dependencies as it
813;; depends on elixir-mint.
814(define-public elixir-tz
815 (package
816 (name "elixir-tz")
817 (version "0.28.2")
818 (source
819 (origin
820 (method url-fetch)
821 (uri (hexpm-uri "tz" version))
822 (sha256
823 (base32 "11qci9q1kjjv8m7fk0gzmgc022dc69j5dd1ac08pa2izldap7gx6"))))
824 (build-system mix-build-system)
825 (propagated-inputs (list elixir-castore elixir-mint))
826 (synopsis "Time zone support for Elixir")
827 (description "Time zone support for Elixir.")
828 (home-page "https://hexdocs.pm/tz/")
829 (license license:asl2.0)))
830
831(define-public elixir-websock-adapter
832 (package
833 (name "elixir-websock-adapter")
834 (version "0.6.0")
835 (source
836 (origin
837 (method url-fetch)
838 (uri (hexpm-uri "websock_adapter" version))
839 (sha256
840 (base32 "05s6jgwp3zi80hdi26fk0pmwgqhmah69wpbhhsq07wp8pj2il0jh"))))
841 (build-system mix-build-system)
842 (propagated-inputs
843 (list elixir-bandit
844 elixir-plug
845 elixir-plug-cowboy
846 elixir-websock))
847 (synopsis "WebSock adapters for common web servers")
848 (description
849 "This package provides a set of @code{WebSock} adapters for common web servers.")
850 (home-page "https://hexdocs.pm/websock_adapter/")
851 (license license:expat)))
852
853(define-public elixir-websock
854 (package
855 (name "elixir-websock")
856 (version "0.5.3")
857 (source
858 (origin
859 (method url-fetch)
860 (uri (hexpm-uri "websock" version))
861 (sha256
862 (base32 "0lxlp1h18595nqczfg15iy34kw5xbbab3yk6ml9cf8mcgwyla1b1"))))
863 (build-system mix-build-system)
864 (synopsis "Specification for WebSocket connections")
865 (description
866 "This package provides a specification for @code{WebSocket} connections.")
867 (home-page "https://hexdocs.pm/websock/")
868 (license license:expat)))
869
870(define-public elixir-x509
871 (package
872 (name "elixir-x509")
873 (version "0.9.2")
874 (source
875 (origin
876 (method url-fetch)
877 (uri (hexpm-uri "x509" version))
878 (sha256
879 (base32 "1iyg91719bkxpps3l97aj2hd67xvf4xlrq2v1x5msmkyd5sxwpjc"))))
880 (build-system mix-build-system)
881 (synopsis
882 "Elixir package for working with X.509 certificates")
883 (description
884 "Elixir package for working with X.509 certificates, Certificate Signing Requests
885(CSRs), Certificate Revocation Lists (CRLs) and RSA/ECC key pairs.")
886 (home-page "https://hexdocs.pm/x509/")
887 (license license:bsd-3)))