projects/guix·blob kernel-updates · refs

391 lines · 13.5 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2025 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-databases)
20 #:use-module (gnu packages erlang-xyz)
21 #:use-module (gnu packages elixir-xyz)
22 #:use-module (guix build-system mix)
23 #:use-module (guix download)
24 #:use-module (guix git-download)
25 #:use-module (guix gexp)
26 #:use-module ((guix licenses)
27 #:prefix license:)
28 #:use-module (guix packages))
29
30(define-public elixir-db-connection
31 (package
32 (name "elixir-db-connection")
33 (version "2.10.2")
34 (source
35 (origin
36 (method url-fetch)
37 (uri (hexpm-uri "db_connection" version))
38 (sha256
39 (base32 "14zsy0nhzb12vx3mc5lvab8ka52gipyhxym2j1jazw9h4d4182si"))))
40 (build-system mix-build-system)
41 (arguments
42 (list
43 ;; Tests require a db process
44 #:tests? #f
45 #:build-per-environment #f))
46 (propagated-inputs (list erlang-telemetry))
47 (synopsis
48 "Database connection behaviour")
49 (description
50 "This package provides @code{elixir-db-connection}, a library implementing
51database connection behaviour and database connection pool. It is designed for
52handling transaction, prepare/execute, cursors and client process
53describe/encode/decode.")
54 (home-page "https://hexdocs.pm/db_connection/")
55 (license license:asl2.0)))
56
57(define-public elixir-ecto-dev-logger
58 (package
59 (name "elixir-ecto-dev-logger")
60 (version "0.15.0")
61 (source
62 (origin
63 (method url-fetch)
64 (uri (hexpm-uri "ecto_dev_logger" version))
65 (sha256
66 (base32 "12p82z8m6n2ibzbghhfv7cckncv2jb05360ki3rgr94rspbhgj5j"))))
67 (build-system mix-build-system)
68 (native-inputs (list elixir-ecto-sql elixir-geo-postgis))
69 (propagated-inputs (list elixir-ecto elixir-geo elixir-jason))
70 (synopsis "Alternative Ecto logger for development")
71 (description "This package provides an alternative Ecto logger for
72development.")
73 (home-page "https://hexdocs.pm/ecto_dev_logger/")
74 (license license:asl2.0)))
75
76(define-public elixir-ecto-sql
77 (package
78 (name "elixir-ecto-sql")
79 (version "3.14.0")
80 (source
81 (origin
82 (method git-fetch)
83 (uri (git-reference
84 (url "https://github.com/elixir-ecto/ecto_sql.git")
85 (commit (string-append "v" version))))
86 (file-name (git-file-name name version))
87 (sha256
88 (base32 "1p91kkc4sr7pyrjfv26w1afh0svz2mr1fq0vw9rcnpdfsxzzrs04"))))
89 (build-system mix-build-system)
90 (propagated-inputs
91 (list elixir-db-connection
92 elixir-ecto
93 elixir-myxql
94 elixir-postgrex
95 elixir-tds))
96 (synopsis "SQL-based adapters for Ecto and database migrations")
97 (description "@code{Ecto SQL} provides building blocks for writing SQL
98adapters for Ecto. It features:
99
100@itemize
101@item The @code{Ecto.Adapters.SQL} module as an entry point for all SQL-based
102adapters
103@item Default implementations for Postgres (@code{Ecto.Adapters.Postgres}),
104MySQL (@code{Ecto.Adapters.MyXQL}), and MSSQL (@code{Ecto.Adapters.Tds})
105@item A test sandbox (@code{Ecto.Adapters.SQL.Sandbox}) that concurrently runs
106database tests inside transactions
107@item Support for database migrations via Mix tasks
108@end itemize")
109 (home-page "https://hexdocs.pm/ecto_sql/")
110 (license license:asl2.0)))
111
112(define-public elixir-ecto
113 (package
114 (name "elixir-ecto")
115 (version "3.14.1")
116 (source
117 (origin
118 (method url-fetch)
119 (uri (hexpm-uri "ecto" version))
120 (sha256
121 (base32 "0c0an9ky13km8f7vky6xvpwkx2hk0g9z6ghagm30yw4ncyar3f94"))))
122 (build-system mix-build-system)
123 (propagated-inputs (list elixir-decimal elixir-jason erlang-telemetry))
124 (synopsis
125 "Toolkit for data mapping and language integrated query for Elixir")
126 (description
127 "This package provides a toolkit for data mapping and language integrated query
128for Elixir.")
129 (home-page "https://hexdocs.pm/ecto/")
130 (license license:asl2.0)))
131
132(define-public elixir-ex-machina
133 (package
134 (name "elixir-ex-machina")
135 (version "2.8.1")
136 (source
137 (origin
138 (method url-fetch)
139 (uri (hexpm-uri "ex_machina" version))
140 (sha256
141 (base32 "1y4c2bjpqzvl433wvy29mrzkb061sfxs33szb5x50r973jmqlnzj"))))
142 (build-system mix-build-system)
143 (native-inputs (list elixir-excoveralls))
144 (propagated-inputs (list elixir-ecto elixir-ecto-sql))
145 (synopsis
146 "Factory library")
147 (description
148 "This package provides a factory library by the creators of @code{FactoryBot}
149(@code{FactoryGirl}).")
150 (home-page "https://hexdocs.pm/ex_machina/")
151 (license license:expat)))
152
153(define-public elixir-exto
154 (package
155 (name "elixir-exto")
156 (version "0.4.0")
157 (source
158 (origin
159 (method url-fetch)
160 (uri (hexpm-uri "exto" version))
161 (sha256
162 (base32 "1mkzxj37dqb966fhqg528wrlfx9ifgxis87np4fqc30rqabgsyj4"))))
163 (build-system mix-build-system)
164 (propagated-inputs (list elixir-accessible elixir-ecto))
165 (native-inputs
166 (list elixir-decimal))
167 (synopsis "Extend ecto schema definitions in config")
168 (description "@code{Exto} is an Elixir library providing
169configuration-driven @code{Ecto} schema extensibility.")
170 (home-page "https://hexdocs.pm/exto/")
171 (license license:asl2.0)))
172
173(define-public elixir-geo-postgis
174 (package
175 (name "elixir-geo-postgis")
176 (version "3.7.1")
177 (source
178 (origin
179 (method url-fetch)
180 (uri (hexpm-uri "geo_postgis" version))
181 (sha256
182 (base32 "102j81g58wb8skdpa5vggp2kcwdva8qf0nyxkpzbfd8dc0y843f2"))))
183 (build-system mix-build-system)
184 (propagated-inputs (list elixir-ecto elixir-geo elixir-jason elixir-poison
185 elixir-postgrex))
186 (synopsis "PostGIS extension for Postgrex.")
187 (description "@code{PostGIS} extension for Postgrex.")
188 (home-page "https://hexdocs.pm/geo_postgis/")
189 (license license:expat)))
190
191(define-public elixir-myxql
192 (package
193 (name "elixir-myxql")
194 (version "0.9.0")
195 (source
196 (origin
197 (method url-fetch)
198 (uri (hexpm-uri "myxql" version))
199 (sha256
200 (base32 "0jqlbnzcr79aln90bsynd41pnsy0jvypa22pj719bad7ca2v65rs"))))
201 (build-system mix-build-system)
202 (native-inputs
203 (list erlang-binpp))
204 (propagated-inputs (list elixir-db-connection elixir-decimal elixir-geo elixir-jason
205 elixir-table))
206 (synopsis "MySQL 5.5+ driver for Elixir")
207 (description "This library provides a @code{MySQL} 5.5+ driver for Elixir.")
208 (home-page "https://hexdocs.pm/myxql/")
209 (license license:asl2.0)))
210
211(define-public elixir-needle-ulid
212 (package
213 (name "elixir-needle-ulid")
214 (version "0.5.0")
215 (source
216 (origin
217 (method url-fetch)
218 (uri (hexpm-uri "needle_ulid" version))
219 (sha256
220 (base32 "0i6scz8ikym7qxb201hb5pxhaqja5ma6g5k5i7j52yzzb2k68sqr"))))
221 (build-system mix-build-system)
222 (propagated-inputs (list elixir-ecto elixir-ecto-sql elixir-ex-ulid))
223 (synopsis
224 "Provides an ULID datatype for @code{Ecto} and related helpers")
225 (description
226 "This package provides @code{elixir-needle-ulid}, a library implementing an
227ULID datatype for @code{Ecto} (using @code{ex_ulid}) and related helpers.")
228 (home-page "https://hexdocs.pm/needle_ulid/")
229 (license license:expat)))
230
231(define-public elixir-needle-uid
232 (package
233 (name "elixir-needle-uid")
234 (version "0.0.2")
235 (source
236 (origin
237 (method url-fetch)
238 (uri (hexpm-uri "needle_uid" version))
239 (sha256
240 (base32 "040vqqjprzdsr5n8swbbh67g2s7gb5p1mwjjm1mf3x6xs4niidcf"))))
241 (build-system mix-build-system)
242 (propagated-inputs
243 (list elixir-ecto elixir-needle-ulid elixir-untangle))
244 (synopsis "Hybrid prefixed UUIDv7 and ULID data type for Ecto")
245 (description "This package provides @code{elixir-needle-uid}, a library
246implementing an hybrid prefixed UUIDv7 and ULID data type for @code{Ecto}.")
247 (home-page "https://hexdocs.pm/needle_uid/")
248 (license license:expat)))
249
250(define-public elixir-needle
251 (package
252 (name "elixir-needle")
253 (version "0.9.0")
254 (source
255 (origin
256 (method url-fetch)
257 (uri (hexpm-uri "needle" version))
258 (sha256
259 (base32 "05x5f3q6f1v0qcczzzh9rw65yxg4fnmkvv5nk08pq87p1whg59hr"))))
260 (build-system mix-build-system)
261 (propagated-inputs (list elixir-ecto-sql elixir-exto elixir-needle-uid
262 erlang-telemetry elixir-typed-ecto-schema))
263 (synopsis
264 "Universal foreign keys, virtual schemas, and shared data mixins")
265 (description
266 "When using a relational DB (such an @code{Ecto} schema with a Postgres
267table), usually a foreign key field has to be pre-defined with a reference
268pointing to a specific field in a specific table.
269
270Besides regular schemas with universal foreign keys (@code{Pointable}),
271@code{Needle} provides @code{Virtual} for schemas that don’t have any fields on
272their own, and @code{Mixin} for storing common fields that can be re-used by
273multiple @code{Pointable}s or @code{Virtual}s.")
274 (home-page "https://hexdocs.pm/needle/")
275 (license license:asl2.0)))
276
277(define-public elixir-postgrex
278 (package
279 (name "elixir-postgrex")
280 (version "0.19.1")
281 (source
282 (origin
283 (method url-fetch)
284 (uri (hexpm-uri "postgrex" version))
285 (sha256
286 (base32 "1y58v3jsya98462r43mv29wwgf3vv8dz9jn63q4iwf4gl62pib4b"))))
287 (build-system mix-build-system)
288 (propagated-inputs (list elixir-db-connection elixir-decimal elixir-jason
289 elixir-table))
290 (synopsis "PostgreSQL driver for Elixir")
291 (description "This library provides a @code{PostgreSQL} driver for Elixir.")
292 (home-page "https://hexdocs.pm/postgrex/")
293 (license license:asl2.0)))
294
295(define-public elixir-table
296 (package
297 (name "elixir-table")
298 (version "0.1.2")
299 (source
300 (origin
301 (method url-fetch)
302 (uri (hexpm-uri "table" version))
303 (sha256
304 (base32 "0aah0rkq6ikl1w359n65rmhk0p0npwj0fr35grf321pqzrzbr6by"))))
305 (build-system mix-build-system)
306 (synopsis "Unified access to tabular data")
307 (description "This package provides @code{elixir-table}, a library that
308implements unified access to tabular data.")
309 (home-page "https://hexdocs.pm/table/")
310 (license license:asl2.0)))
311
312(define-public elixir-tds
313 (package
314 (name "elixir-tds")
315 (version "2.3.8")
316 (source
317 (origin
318 (method url-fetch)
319 (uri (hexpm-uri "tds" version))
320 (sha256
321 (base32 "02y4ssdc7hcdxq6mdpc2x28z780wcb0m7y6pvrhfdan4sd6gms7s"))))
322 (build-system mix-build-system)
323 (propagated-inputs
324 (list elixir-db-connection elixir-decimal elixir-jason
325 elixir-table))
326 (synopsis
327 "Elixir implementation of the MS TDS protocol")
328 (description
329 "This package implements a Microsoft SQL Server client. More generally it
330provides an Elixir implementation of the MS TDS protocol.")
331 (home-page "https://hexdocs.pm/tds/")
332 (license license:asl2.0)))
333
334(define-public elixir-typed-ecto-schema
335 (package
336 (name "elixir-typed-ecto-schema")
337 (version "0.4.3")
338 (source
339 (origin
340 (method url-fetch)
341 (uri (hexpm-uri "typed_ecto_schema" version))
342 (sha256
343 (base32 "1h1bkdxgw7gpsf2mgf6zgayp6i6gk6d65bp0b29gm9gxp4srpgfw"))))
344 (build-system mix-build-system)
345 (propagated-inputs (list elixir-ecto))
346 (synopsis "Ecto schemas with typespecs without the boilerplate")
347 (description
348 "This package provides a library to define @code{Ecto} schemas with
349typespecs without all the boilerplate code.")
350 (home-page "https://hexdocs.pm/typed_ecto_schema/")
351 (license license:asl2.0)))
352
353(define-public elixir-uniq
354 (package
355 (name "elixir-uniq")
356 (version "0.6.3")
357 (source
358 (origin
359 (method url-fetch)
360 (uri (hexpm-uri "uniq" version))
361 (sha256
362 (base32 "0zbcr9ddl6wri4wb5prlawjp2jjy95883g707mfsbwr0186r0aib"))))
363 (build-system mix-build-system)
364 (native-inputs (list elixir-stream-data))
365 (propagated-inputs (list elixir-ecto))
366 (synopsis
367 "Provides UUID generation, parsing, and formatting")
368 (description
369 "This package provides UUID generation, parsing, and formatting. Supports RFC
3704122, and the v6 draft extension.")
371 (home-page "https://hexdocs.pm/uniq/")
372 (license license:asl2.0)))
373
374(define-public elixir-uuidv7
375 (package
376 (name "elixir-uuidv7")
377 (version "1.0.0")
378 (source
379 (origin
380 (method url-fetch)
381 (uri (hexpm-uri "uuidv7" version))
382 (sha256
383 (base32 "1g2c8imkk7pgcvc5ns2v1b0zils3ai1yym4s3a5psvs511qk7k8f"))))
384 (build-system mix-build-system)
385 (propagated-inputs (list elixir-ecto))
386 (synopsis "UUID v7 implementation and @code{Ecto.Type} for Elixir")
387 (description
388 "This package provides a UUID v7 implementation and @code{Ecto.Type}
389for Elixir.")
390 (home-page "https://hexdocs.pm/uuidv7/")
391 (license license:expat)))