summaryrefslogtreecommitdiff
path: root/gnu/packages/elixir-web.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/elixir-web.scm')
-rw-r--r--gnu/packages/elixir-web.scm880
1 files changed, 880 insertions, 0 deletions
diff --git a/gnu/packages/elixir-web.scm b/gnu/packages/elixir-web.scm
new file mode 100644
index 0000000000..3a29ff6abe
--- /dev/null
+++ b/gnu/packages/elixir-web.scm
@@ -0,0 +1,880 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages elixir-web)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages erlang)
+ #:use-module (gnu packages erlang-xyz)
+ #:use-module (gnu packages elixir-databases)
+ #:use-module (gnu packages elixir-i18n)
+ #:use-module (gnu packages elixir-markup)
+ #:use-module (gnu packages elixir-xyz)
+ #:use-module (guix build-system mix)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix gexp)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix packages))
+
+(define-public elixir-bandit
+ (package
+ (name "elixir-bandit")
+ (version "1.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "bandit" version))
+ (sha256
+ (base32 "08jll47yxkj4n08nh7xm8bm36z077a458j4xlqp2mzr0xm7gyn44"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests depend on elixir-req which is not yet packaged.
+ (list #:tests? #f))
+ (propagated-inputs
+ (list elixir-hpax
+ elixir-plug
+ erlang-telemetry
+ elixir-thousand-island
+ elixir-websock))
+ (synopsis "HTTP server built for Plug & WebSock apps")
+ (description
+ "This package provides a pure-Elixir HTTP server built for Plug & @code{WebSock}
+apps.")
+ (home-page "https://hexdocs.pm/bandit/")
+ (license license:expat)))
+
+(define-public elixir-con-cache
+ (package
+ (name "elixir-con-cache")
+ (version "1.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "con_cache" version))
+ (sha256
+ (base32 "05dfx20f6sncxcpmld7s3gc4jmibkyhn1g2vbg3n8r99xhdlvvqx"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list erlang-telemetry))
+ (synopsis
+ "ETS based key-value storage")
+ (description
+ "This package provides @code{con_cache}, an ETS based key-value storage
+with support for row-level isolated writes, TTL auto-purge, and modification
+callbacks.")
+ (home-page "https://hexdocs.pm/con_cache/")
+ (license license:expat)))
+
+;; This package lives here to avoid module level circular dependencies as it
+;; depends on elixir-plug.
+(define-public elixir-ecto-shorts
+ (package
+ (name "elixir-ecto-shorts")
+ (version "2.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "ecto_shorts" version))
+ (sha256
+ (base32 "1r7cc0dhhvmqnwicrnay9lsaf2xahr919g993rbbakdca2xw0q3l"))))
+ (build-system mix-build-system)
+ (native-inputs (list elixir-credo elixir-excoveralls))
+ (propagated-inputs (list elixir-ecto-sql elixir-error-message))
+ (synopsis
+ "Helper tools for making ecto interactions shorter")
+ (description
+ "Helper tools for making ecto interactions more pleasant and shorter.")
+ (home-page "https://hexdocs.pm/ecto_shorts/")
+ (license license:expat)))
+
+(define-public elixir-emote
+ (package
+ (name "elixir-emote")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "emote" version))
+ (sha256
+ (base32 "1km0hkvjpswxrvadrz4wjarpnv6wz3p15bdmmlw0yswnfvmij4ni"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-phoenix-html))
+ (synopsis
+ "Convert emoticons and emoji names to emoji characters or images")
+ (description
+ "This package provides @code{elixir-emote}, a small library for
+converting emoticons and emoji names to emoji characters or images,
+including custom emoji.")
+ (home-page "https://hexdocs.pm/emote/")
+ (license license:wtfpl2)))
+
+;; This package lives here to avoid module level circular dependencies as it
+;; depends on elixir-plug.
+(define-public elixir-error-message
+ (package
+ (name "elixir-error-message")
+ (version "0.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "error_message" version))
+ (sha256
+ (base32 "0wsbcwby3grnb5s6558s2x5wrhy8f7vwbbfdk88rsacbf1w0l6k7"))))
+ (build-system mix-build-system)
+ (native-inputs (list elixir-excoveralls))
+ (propagated-inputs (list elixir-jason elixir-plug))
+ (synopsis "Make errors consistent across your system")
+ (description
+ "Error system to help make errors consistent across your system.")
+ (home-page "https://hexdocs.pm/error_message/")
+ (license license:expat)))
+
+;; This package lives here to avoid module level circular dependencies as it
+;; depends on elixir-mint.
+(define-public elixir-ex-cldr-dates-times
+ (package
+ (name "elixir-ex-cldr-dates-times")
+ (version "2.24.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "ex_cldr_dates_times" version))
+ (sha256
+ (base32 "00zzwr07x8i8dvhqi2vxpa858s874l941h2m41x9ip2k96dgc3nk"))))
+ (build-system mix-build-system)
+ (propagated-inputs
+ (list elixir-calendar-interval
+ elixir-ex-cldr
+ elixir-ex-cldr-calendars
+ elixir-ex-cldr-units
+ elixir-jason
+ elixir-tz))
+ (synopsis
+ "Date, Time and DateTime localization, internationalization and formatting")
+ (description
+ "Date, Time and @code{DateTime} localization, internationalization and formatting
+functions using the Common Locale Data Repository (CLDR).")
+ (home-page "https://hexdocs.pm/ex_cldr_dates_times/")
+ (license license:asl2.0)))
+
+(define-public elixir-ex-cldr-plugs
+ (package
+ (name "elixir-ex-cldr-plugs")
+ (version "1.3.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "ex_cldr_plugs" version))
+ (sha256
+ (base32 "0apm3x98abjnlhzb59p3qnhh2pmzrbk8gh0x209k0h5cgq4rx0ih"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-ex-cldr elixir-gettext elixir-jason elixir-plug))
+ (synopsis
+ "Plugs supporting CLDR")
+ (description
+ "Plugs supporting CLDR and setting the locale from requests and request headers.")
+ (home-page "https://hexdocs.pm/ex_cldr_plugs/")
+ (license license:asl2.0)))
+
+(define-public elixir-exjsx
+ (package
+ (name "elixir-exjsx")
+ (version "4.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "exjsx" version))
+ (sha256
+ (base32 "01rfr1har8akbwwnsba4a248hfym5955348fhdkymzvwm4h5is9j"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list erlang-jsx))
+ (synopsis "JSON for Elixir")
+ (description "This package provides @code{exjsx}, a JSON library for
+Elixir.")
+ (home-page "https://hexdocs.pm/exjsx/")
+ (license license:expat)))
+
+(define-public elixir-hpack
+ (package
+ (name "elixir-hpack")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "hpack" version))
+ (sha256
+ (base32 "1gh4p21mlnnbprh7fxk03i53lmbdqsgi0my3r9sv9ivl9i6nm0rq"))))
+ (build-system mix-build-system)
+ (synopsis
+ "Implementation of the
+@uref{https://http2.github.io/http2-spec/compression.html,HPack} protocol")
+ (description
+ "This package provides @code{elixir-hpack}, an implementation of the
+@uref{https://http2.github.io/http2-spec/compression.html,HPack} protocol: a
+compression format for efficiently representing HTTP header fields, to be used
+in HTTP/2.")
+ (home-page "https://hexdocs.pm/hpack/")
+ (license license:expat)))
+
+(define-public elixir-hpax
+ (package
+ (name "elixir-hpax")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "hpax" version))
+ (sha256
+ (base32 "0jpkgn2abg0pr1anw7p9v3dkbbwlx243b92brv11hncdz8f6xawf"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list erlang-coveralls
+ elixir-excoveralls))
+ (propagated-inputs
+ (list elixir-castore
+ elixir-hpack
+ elixir-stream-data))
+ (synopsis "Implementation of the HPACK protocol (RFC 7541) for Elixir")
+ (description "This package provides @code{elixir-hpax}, an implementation of
+the HPACK protocol (RFC 7541) for Elixir.")
+ (home-page "https://hexdocs.pm/hpax/")
+ (license license:asl2.0)))
+
+(define-public elixir-httparrot
+ (package
+ (name "elixir-httparrot")
+ (version "1.4.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/edgurgel/httparrot.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0grbqr41c6lf34k8q69v5ki6mlxwwkvgpjv5l7gmwfb8jmwbn6p7"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list elixir-earmark erlang-meck))
+ (propagated-inputs
+ (list elixir-con-cache erlang-cowboy elixir-exjsx))
+ (synopsis "HTTP Request & Response Server")
+ (description "HTTP server built on top of Cowboy using (mostly)
+@code{cowboy_rest} handlers to serve useful endpoints for testing
+purposes. Its goal is to be as close as possible to
+@uref{http://httpbin.org, HTTPBin}.")
+ (home-page "https://hexdocs.pm/httparrot/")
+ (license license:expat)))
+
+(define-public elixir-httpoison
+ (package
+ (name "elixir-httpoison")
+ (version "2.2.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/edgurgel/httpoison")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0k9g4dc6y30wr9ryxjs23izifpg4dqkkqk8xz39ff27jn5s97k8i"))
+ ;; Waiting for upstream inclusion at
+ ;; https://github.com/edgurgel/httpoison/pull/502
+ (patches
+ (search-patches "elixir-httpoison-tag-network-dependent-test-cases.patch"))))
+ (build-system mix-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; These tests require network access to badssl.com.
+ #~(list "--exclude" "network")))
+ (native-inputs
+ (list erlang-cowboy
+ elixir-earmark
+ elixir-jason
+ elixir-httparrot
+ elixir-mimic))
+ (propagated-inputs (list erlang-hackney))
+ (synopsis "Yet Another HTTP client for Elixir")
+ (description "Yet Another HTTP client for Elixir powered by hackney.")
+ (home-page "https://hexdocs.pm/httpoison/")
+ (license license:expat)))
+
+(define-public elixir-iconify-ex
+ (package
+ (name "elixir-iconify-ex")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "iconify_ex" version))
+ (sha256
+ (base32 "1j6vzp6ayx278s6q7n4rdk849b23sx9wf040h336naxphqxm3qk6"))))
+ (build-system mix-build-system)
+ (propagated-inputs
+ (list elixir-arrows
+ elixir-emote
+ elixir-floki
+ elixir-jason
+ elixir-phoenix-live-favicon
+ elixir-phoenix-live-view
+ elixir-recase
+ elixir-surface
+ elixir-untangle))
+ (synopsis
+ "Phoenix helpers for using icon sets")
+ (description
+ "This package provides Phoenix helpers for using the 100,000+ SVG icons
+from 100+ icon sets from @uref{https://iconify.design, iconify.design}.")
+ (home-page "https://hexdocs.pm/iconify_ex/")
+ (license license:expat)))
+
+(define-public elixir-mint-web-socket
+ (package
+ (name "elixir-mint-web-socket")
+ (version "1.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "mint_web_socket" version))
+ (sha256
+ (base32 "14d9c2ryqggl2p54bh0rhm3ab17j6l7ir817rsh4nnn455alqz82"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests depend on gun from hex.pm which is not packaged yet.
+ (list #:tests? #f))
+ (native-inputs (list elixir-jason erlang-cowboy))
+ (propagated-inputs (list elixir-mint))
+ (synopsis "WebSocket support for Mint")
+ (description "HTTP/1 and HTTP/2 @code{WebSocket} support for Mint.")
+ (home-page "https://hexdocs.pm/mint_web_socket/")
+ (license license:asl2.0)))
+
+(define-public elixir-mint
+ (package
+ (name "elixir-mint")
+ (version "1.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "mint" version))
+ (sha256
+ (base32 "06r3kb9vkzpx8lgp6fjngaxz9hzidl8sw91hxvfh2hzjs2ja1szw"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests depend on elixir-mox which is not packaged yet.
+ (list #:tests? #f))
+ (native-inputs
+ (list elixir-excoveralls))
+ (propagated-inputs (list elixir-castore elixir-hpax))
+ (synopsis "Functional HTTP client for Elixir with support for HTTP/1 and
+HTTP/2")
+ (description "Mint is different from most Erlang and Elixir HTTP clients
+because it provides a process-less architecture. Instead, Mint is based on a
+functional and immutable data structure that represents an HTTP connection.
+
+This data structure wraps a TCP or SSL socket. This allows for more
+fine-tailored architectures where the developer is responsible for wrapping the
+connection struct, such as having one process handle multiple connections or
+having different kinds of processes handle connections.")
+ (home-page "https://hexdocs.pm/mint/")
+ (license license:asl2.0)))
+
+(define-public elixir-neuron
+ (package
+ (name "elixir-neuron")
+ (version "5.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "neuron" version))
+ (sha256
+ (base32 "1kmnhlihpv1075i3f5izysx2vdgqw71lnnxw8yifxh6r1l7dpk93"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests depend on Coverex, which is not packaged yet.
+ (list #:tests? #f))
+ (propagated-inputs (list elixir-httpoison elixir-jason))
+ (synopsis "GraphQL client for Elixir")
+ (description "This package provides a @code{GraphQL} client for Elixir.")
+ (home-page "https://hexdocs.pm/neuron/")
+ (license license:isc)))
+
+(define-public elixir-phoenix-ecto
+ (package
+ (name "elixir-phoenix-ecto")
+ (version "4.6.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_ecto" version))
+ (sha256
+ (base32 "0jwdybzrsbrxjqsqw5pzzf2x8vsw0i2d1bccfhdz61zlxq435v16"))))
+ (build-system mix-build-system)
+ (propagated-inputs
+ (list elixir-ecto
+ elixir-phoenix-html
+ elixir-plug
+ elixir-postgrex))
+ (synopsis "Phoenix and Ecto integration with support for concurrent
+acceptance testing")
+ (description "This package provides a library that integrates Phoenix with
+Ecto, implementing all relevant protocols.")
+ (home-page "https://hexdocs.pm/phoenix_ecto/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-html
+ (package
+ (name "elixir-phoenix-html")
+ (version "4.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_html" version))
+ (sha256
+ (base32 "0lz04g7h49x9rg4k3l6zz29va84fxy62m3xfb7cmswg21880iwfg"))))
+ (build-system mix-build-system)
+ (synopsis "Phoenix view functions for working with HTML templates")
+ (description "This package provides @code{elixir-phoenix-html}, a library
+implementing view functions for working with HTML templates in the Phoenix
+framework.")
+ (home-page "https://hexdocs.pm/phoenix_html/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-live-favicon
+ (package
+ (name "elixir-phoenix-live-favicon")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_live_favicon" version))
+ (sha256
+ (base32 "17m7gpx6qw0cr0d2acwajjhz2qzfi2zywzyk2i139y9higb22q8k"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests depend on makeup_diff from hex.pm but it is not packaged yet.
+ (list #:tests? #f))
+ (propagated-inputs (list elixir-phoenix-live-head))
+ (synopsis "Favicon manipulation for Phoenix Live Views")
+ (description "This package provides a lib enabling dynamic favicons in
+Phoenix Live View applications.")
+ (home-page "https://hexdocs.pm/phoenix_live_favicon/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-live-head
+ (package
+ (name "elixir-phoenix-live-head")
+ (version "0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_live_head" version))
+ (sha256
+ (base32 "060bbni63v4jqyiqrykcl2sdra3brhvr15d1q7wg1c48cki01ah3"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list elixir-excoveralls))
+ (propagated-inputs
+ (list elixir-ex-doc elixir-jason elixir-phoenix
+ elixir-phoenix-html elixir-phoenix-live-view))
+ (synopsis "HTML Head manipulation for Phoenix Live Views")
+ (description "This package provides commands for manipulating the HTML Head
+of Phoenix Live View applications while minimizing data over the wire.
+
+The available command actions support a variety of utility operations useful for
+HTML Head manipulation. Such as setting or removing tag attributes and adding
+or removing CSS classes.
+
+A special feature is the use of the @code{@{dynamic@}} tag in values. This
+saves data over the wire by only sending the dynamic part of an attributes
+value.")
+ (home-page "https://hexdocs.pm/phoenix_live_head/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-live-reload
+ (package
+ (name "elixir-phoenix-live-reload")
+ (version "1.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_live_reload" version))
+ (sha256
+ (base32 "1875i11fl7nr1hx645cjwq43ziiy7vrrjxf1pgqgxr56sm1kh9vl"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests fail with:
+ ;;
+ ;; [warning] Could not start Phoenix live-reload because we cannot listen
+ ;; to the file system.
+ ;; You don't need to worry! This is an optional feature used during
+ ;; development to refresh your browser when you save files and it does not
+ ;; affect production.
+ (list #:tests? #f))
+ (propagated-inputs (list elixir-file-system elixir-phoenix))
+ (synopsis "Live-reload functionality for Phoenix")
+ (description
+ "This package provides live-reload functionality for Phoenix.")
+ (home-page "https://hexdocs.pm/phoenix_live_reload/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-live-view
+ (package
+ (name "elixir-phoenix-live-view")
+ (version "1.1.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_live_view" version))
+ (sha256
+ (base32 "1v7p6q0lz9fzfyj9w4kwbyqi1vqdzsdllaw3xvw9whdqfcsyj1lx"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests fail with:
+ ;;
+ ;; [warning] Could not start Phoenix live-reload because we cannot listen
+ ;; to the file system.
+ ;; You don't need to worry! This is an optional feature used during
+ ;; development to refresh your browser when you save files and it does not
+ ;; affect production.
+ (list #:tests? #f))
+ (native-inputs
+ (list elixir-html-entities
+ elixir-phoenix-live-reload))
+ (propagated-inputs
+ (list elixir-floki
+ elixir-jason
+ elixir-phoenix
+ elixir-phoenix-html
+ elixir-phoenix-template
+ elixir-phoenix-view
+ elixir-plug
+ erlang-telemetry))
+ (synopsis "Rich, real-time user experiences with server-rendered HTML")
+ (description "LiveView brings a unified experience to building web
+applications. You no longer have to split work between client and server,
+across different toolings, layers, and abstractions. Instead, LiveView
+enriches the server with a declarative and powerful model while keeping your
+code closer to your data (and ultimately your source of truth):
+
+@itemize
+@item Declarative server side rendering
+@item Rich templating language
+@item Diffs over the wire
+@item Live form validation
+@item File uploads with progress indicators
+@item Optimistic updates and transitions
+@item Live navigation
+@item Latency simulator
+@end itemize")
+ (home-page "https://hexdocs.pm/phoenix_live_view/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-pubsub
+ (package
+ (name "elixir-phoenix-pubsub")
+ (version "2.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_pubsub" version))
+ (sha256
+ (base32 "00p5dvizhawhqbia2cakdn4whaxsm2adq3lzfn3b137xvk0np85v"))))
+ (build-system mix-build-system)
+ (arguments
+ ;; Tests require network
+ (list #:tests? #f))
+ (synopsis "Distributed PubSub and Presence platform")
+ (description "This package provides @code{elixir-phoenix-pubsub}, a library
+implementing a distributed @code{PubSub} and @code{Presence} platform for the
+Phoenix Framework.")
+ (home-page "https://hexdocs.pm/phoenix_pubsub/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-template
+ (package
+ (name "elixir-phoenix-template")
+ (version "1.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_template" version))
+ (sha256
+ (base32 "01j28jf0q1h5pk9ndf7s6jx9m489jyf24byabjpkyxf6wpq8231c"))))
+ (build-system mix-build-system)
+ (native-inputs (list elixir-jason))
+ (propagated-inputs (list elixir-phoenix-html))
+ (synopsis "Template rendering for Phoenix")
+ (description "This module provides functions for loading and compiling
+templates from disk. A markup language is compiled to Elixir code via an
+engine.")
+ (home-page "https://hexdocs.pm/phoenix_template/")
+ (license license:expat)))
+
+(define-public elixir-phoenix-view
+ (package
+ (name "elixir-phoenix-view")
+ (version "2.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix_view" version))
+ (sha256
+ (base32 "02v2xd1h415kbf1ncclqx6acrbslh6i2gnrmfgjizwqlrqi216af"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list elixir-jason))
+ (propagated-inputs (list elixir-phoenix-html elixir-phoenix-template))
+ (synopsis "View layer in Phoenix v1.0-v1.6 apps")
+ (description "Within LiveView and HTML apps, @code{Phoenix.View} has fallen
+out of fashion in favor of @code{Phoenix.Component}. See the \"Replaced by
+@code{Phoenix.Component}\" section in the @code{Phoenix.View} module
+documentation for more information and migration steps.
+
+If you want to render other formats, such as XML, @code{Phoenix.View} may still
+be a useful addition to your projects.")
+ (home-page "https://hexdocs.pm/phoenix_view/")
+ (license license:expat)))
+
+(define-public elixir-phoenix
+ (package
+ (name "elixir-phoenix")
+ (version "1.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phoenix" version))
+ (sha256
+ (base32 "1cigrl8myx2079mns0ww2k6n11awxw0vv6bhabkwghvp5qmpvmw4"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list elixir-mint
+ elixir-mint-web-socket
+ elixir-phx-new))
+ (propagated-inputs
+ (list elixir-castore
+ elixir-jason
+ elixir-phoenix-pubsub
+ elixir-phoenix-html
+ elixir-phoenix-template
+ elixir-phoenix-view
+ elixir-plug
+ elixir-plug-cowboy
+ elixir-plug-crypto
+ erlang-telemetry
+ elixir-websock-adapter))
+ (synopsis "Web development framework")
+ (description "Phoenix is a web development framework written in Elixir
+which implements the server-side Model View Controller (MVC) pattern. Many of
+its components and concepts will seem familiar to those with experience in other
+web frameworks like Ruby on Rails or Python's Django.")
+ (home-page "https://www.phoenixframework.org/")
+ (license license:expat)))
+
+(define-public elixir-phx-new
+ (package
+ (name "elixir-phx-new")
+ (version "1.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "phx_new" version))
+ (sha256
+ (base32 "05kv8i0w8f1ky6gx3rz0ps5mwp8nkln7dq6565zw660i3cxpnwzn"))))
+ (build-system mix-build-system)
+ (synopsis
+ "Phoenix framework project generator")
+ (description
+ "Phoenix framework project generator. Provides a @command{mix phx.new}
+task to bootstrap a new Elixir application with Phoenix dependencies.")
+ (home-page "https://hexdocs.pm/phx_new/")
+ (license license:expat)))
+
+(define-public elixir-plug-crypto
+ (package
+ (name "elixir-plug-crypto")
+ (version "2.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "plug_crypto" version))
+ (sha256
+ (base32 "0z1424zcywdg47wsbvhmdbrngbz4lzhzsbv1jza8n774zzkbqw34"))))
+ (build-system mix-build-system)
+ (synopsis "Crypto-related functionality for the web")
+ (description "This package provides @code{elixir-plug-crypto}, a library
+implementing crypto-related functionality for the web, used by Plug.")
+ (home-page "https://hexdocs.pm/plug_crypto/")
+ (license license:asl2.0)))
+
+(define-public elixir-plug-cowboy
+ (package
+ (name "elixir-plug-cowboy")
+ (version "2.7.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "plug_cowboy" version))
+ (sha256
+ (base32 "18wa2qiy18g9s61anb5krcmmvcmivs201mx5w2x1a9h1swmn71cv"))))
+ (build-system mix-build-system)
+ (arguments
+ (list
+ #:tests? #f))
+ (native-inputs
+ (list elixir-x509 erlang-hackney))
+ (propagated-inputs (list erlang-cowboy erlang-cowboy-telemetry elixir-plug))
+ (synopsis "A Plug adapter for Cowboy")
+ (description "This package provides a Plug adapter for Cowboy.")
+ (home-page "https://hexdocs.pm/plug_cowboy/")
+ (license license:asl2.0)))
+
+(define-public elixir-plug
+ (package
+ (name "elixir-plug")
+ (version "1.18.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "plug" version))
+ (sha256
+ (base32 "1hkcahx1l6yi1hcxn7lw6cbcscwdrwrjsza3cjsj5d7j1nvpv9ap"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-mime elixir-plug-crypto erlang-telemetry))
+ (synopsis "Compose web applications with functions")
+ (description "Plug is:
+
+@itemize
+@item A specification for composing web applications with functions
+@item Connection adapters for different web servers in the Erlang VM
+@end itemize
+
+In other words, Plug allows you to build web applications from small pieces and
+run them on different web servers. Plug is used by web frameworks such as
+Phoenix to manage requests, responses, and websockets. This documentation will
+show some high-level examples and introduce the Plug's main building blocks.")
+ (home-page "https://hexdocs.pm/plug/")
+ (license license:asl2.0)))
+
+(define-public elixir-surface
+ (package
+ (name "elixir-surface")
+ (version "0.12.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "surface" version))
+ (sha256
+ (base32 "04yl1k13sd22iwlf90l46dd7a09x3wq0g1iq6caw9y9p4ljl4chk"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list elixir-ecto
+ elixir-floki
+ elixir-jason
+ elixir-phoenix-ecto
+ elixir-sourceror))
+ (propagated-inputs
+ (list elixir-phoenix-html
+ elixir-phoenix-live-view
+ elixir-sourceror))
+ (synopsis "Server-side rendering component library for Phoenix")
+ (description
+ "This package provides Surface is a server-side rendering component library
+that allows developers to build rich interactive user-interfaces, writing
+minimal custom JavaScript.")
+ (home-page "https://surface-ui.org")
+ (license license:expat)))
+
+;; This package lives here to avoid module level circular dependencies as it
+;; depends on elixir-mint.
+(define-public elixir-tz
+ (package
+ (name "elixir-tz")
+ (version "0.28.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "tz" version))
+ (sha256
+ (base32 "12lchkhdxbv8ai09i2lsy394yx1xrfq1yz5p8dn3qr0236ma3p5z"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-castore elixir-mint))
+ (synopsis "Time zone support for Elixir")
+ (description "Time zone support for Elixir.")
+ (home-page "https://hexdocs.pm/tz/")
+ (license license:asl2.0)))
+
+(define-public elixir-websock-adapter
+ (package
+ (name "elixir-websock-adapter")
+ (version "0.5.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "websock_adapter" version))
+ (sha256
+ (base32 "10ip7zyvb5nb9qyl9vmw8npk3kk79qcssh2iyfsi48jmclc9lnri"))))
+ (build-system mix-build-system)
+ (propagated-inputs
+ (list elixir-bandit
+ elixir-plug
+ elixir-plug-cowboy
+ elixir-websock))
+ (synopsis "WebSock adapters for common web servers")
+ (description
+ "This package provides a set of @code{WebSock} adapters for common web servers.")
+ (home-page "https://hexdocs.pm/websock_adapter/")
+ (license license:expat)))
+
+(define-public elixir-websock
+ (package
+ (name "elixir-websock")
+ (version "0.5.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "websock" version))
+ (sha256
+ (base32 "0lxlp1h18595nqczfg15iy34kw5xbbab3yk6ml9cf8mcgwyla1b1"))))
+ (build-system mix-build-system)
+ (synopsis "Specification for WebSocket connections")
+ (description
+ "This package provides a specification for @code{WebSocket} connections.")
+ (home-page "https://hexdocs.pm/websock/")
+ (license license:expat)))
+
+(define-public elixir-x509
+ (package
+ (name "elixir-x509")
+ (version "0.9.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "x509" version))
+ (sha256
+ (base32 "1iyg91719bkxpps3l97aj2hd67xvf4xlrq2v1x5msmkyd5sxwpjc"))))
+ (build-system mix-build-system)
+ (synopsis
+ "Elixir package for working with X.509 certificates")
+ (description
+ "Elixir package for working with X.509 certificates, Certificate Signing Requests
+(CSRs), Certificate Revocation Lists (CRLs) and RSA/ECC key pairs.")
+ (home-page "https://hexdocs.pm/x509/")
+ (license license:bsd-3)))