projects/guix·blob python-team · refs

626 lines · 24.1 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017, 2018, 2020–2022 Tobias Geerinckx-Rice <[email protected]>
3;;; Copyright © 2019 Jesse Gibbons <[email protected]>
4;;; Copyright © 2019, 2020, 2021 Timotej Lazar <[email protected]>
5;;; Copyright © 2019, 2022 Liliana Marie Prikler <[email protected]>
6;;; Copyright © 2020 Efraim Flashner <[email protected]>
7;;; Copyright © 2021 Leo Famulari <[email protected]>
8;;; Copyright © 2023 Zheng Junjie <[email protected]>
9;;; Copyright © 2023 Sarthak Shah <[email protected]>
10;;; Copyright © 2025 Artyom V. Poptsov <[email protected]>
11;;; Copyright © 2025 Andrew Wong <[email protected]>
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28;;; Commentary:
29;;;
30;;; Please: Try to add new module packages in alphabetic order.
31;;;
32;;; Code:
33
34(define-module (gnu packages toys)
35 #:use-module ((guix licenses) #:prefix license:)
36 #:use-module (guix build-system copy)
37 #:use-module (guix build-system gnu)
38 #:use-module (guix build-system meson)
39 #:use-module (guix build-system pyproject)
40 #:use-module (guix download)
41 #:use-module (guix gexp)
42 #:use-module (guix git-download)
43 #:use-module (guix packages)
44 #:use-module (guix utils)
45 #:use-module (gnu packages)
46 #:use-module (gnu packages base)
47 #:use-module (gnu packages bash)
48 #:use-module (gnu packages bison)
49 #:use-module (gnu packages check)
50 #:use-module (gnu packages compiler-tools)
51 #:use-module (gnu packages gtk)
52 #:use-module (gnu packages man)
53 #:use-module (gnu packages maths)
54 #:use-module (gnu packages multiprecision)
55 #:use-module (gnu packages ncurses)
56 #:use-module (gnu packages perl)
57 #:use-module (gnu packages pkg-config)
58 #:use-module (gnu packages pretty-print)
59 #:use-module (gnu packages python-build)
60 #:use-module (gnu packages xml)
61 #:use-module (gnu packages xorg))
62
63
64(define-public cbonsai
65 (package
66 (name "cbonsai")
67 (version "1.4.2")
68 (source
69 (origin
70 (method git-fetch)
71 (uri (git-reference
72 (url "https://gitlab.com/jallbrit/cbonsai.git")
73 (commit (string-append "v" version))))
74 (file-name (git-file-name name version))
75 (sha256
76 (base32 "0iccmmp0ndz0n18655mrg9svv365yqf5y6baw1wwjnax63jgz5jd"))))
77 (build-system gnu-build-system)
78 (arguments
79 (list
80 #:tests? #f ; No test suite
81 #:make-flags
82 #~(list (string-append "CC=" #$(cc-for-target))
83 (string-append "PREFIX=" #$output))
84 #:phases
85 #~(modify-phases %standard-phases
86 (delete 'configure) ; No ./configure script
87 (add-after 'install 'install-doc
88 (lambda _
89 (let ((doc (format #f "~a/share/doc/~a-~a" #$output
90 #$name #$version)))
91 (install-file "README.md" doc)))))))
92 (native-inputs
93 (list pkg-config scdoc))
94 (inputs
95 (list ncurses))
96 (home-page "https://gitlab.com/jallbrit/cbonsai")
97 (synopsis "Grow bonsai trees in a terminal")
98 (description "Cbonsai is a bonsai tree generator using ASCII art. It
99creates, colors, and positions a bonsai tree, and is configurable.")
100 (license license:gpl3+)))
101
102(define-public cxxmatrix
103 (let ((commit "c8d4ecfb8b6c22bb93f3e10a9d203209ba193591")
104 (revision "0"))
105 (package
106 (name "cxxmatrix")
107 (version (git-version "0" revision commit))
108 (source
109 (origin
110 (method git-fetch)
111 (uri (git-reference
112 (url "https://github.com/akinomyoga/cxxmatrix")
113 (commit commit)))
114 (file-name (git-file-name name version))
115 (sha256
116 (base32 "0shlh0kbx5169pk1i72ymyyfadywyzmw4f95hn0lm8irjynizzg5"))))
117 (build-system gnu-build-system)
118 (arguments
119 (list #:tests? #f ;no tests
120 #:make-flags #~(list (string-append "PREFIX=" #$output))
121 #:phases #~(modify-phases %standard-phases (delete 'configure))))
122 (home-page "https://github.com/akinomyoga/cxxmatrix")
123 (synopsis "Configurable @emph{The Matrix} digital rain effect and more")
124 (description "This package displays the ``digital rain'' effect from the 1999
125film @emph{The Matrix} in the terminal with authentic hankaku kana characters and
126bloom as well as rotating and zooming Mandelbrot set and Conway's game of life
127effects. The presented title text and color are configurable.")
128 (license license:expat))))
129
130(define-public daikichi
131 (package
132 (name "daikichi")
133 (version "0.3.1")
134 (source (origin
135 (method git-fetch)
136 (uri (git-reference
137 (url "https://gitlab.com/lilyp/daikichi")
138 (commit version)))
139 (file-name (git-file-name name version))
140 (sha256
141 (base32
142 "139kjf14ayqrwzd0hzw2qhfp47ngyimibzgfyqy6i7y8lhwsjs1v"))))
143 (build-system meson-build-system)
144 (arguments
145 (list #:phases
146 #~(modify-phases %standard-phases
147 (add-after 'unpack 'hard-code-test-paths
148 (lambda* (#:key inputs #:allow-other-keys)
149 (substitute* (list "test-dat.in" "test-strings.in")
150 (("(basename|cmp|diff|mktemp|rm|sed|seq)" cmd)
151 (search-input-file inputs
152 (string-append "bin/" cmd)))))))))
153 (inputs (list bash-minimal coreutils sed
154 diffutils
155 fmt gmp))
156 (native-inputs (list pkg-config))
157 (home-page "https://gitlab.com/lilyp/daikichi")
158 (synopsis "Display random fortunes")
159 (description "Daikichi is an alternative implementation of
160@command{fortune}, which displays random quotes from a database.
161This package provides just the utilities and no quotes.")
162 (license license:gpl3+)
163 (native-search-paths
164 (list (search-path-specification
165 (variable "DAIKICHI_FORTUNE_PATH")
166 (files '("share/fortunes")))))))
167
168(define-public filters
169 (package
170 (name "filters")
171 (version "2.55")
172 (source
173 (origin
174 (method git-fetch)
175 (uri (git-reference
176 (url "git://git.joeyh.name/filters")
177 (commit version)))
178 (file-name (git-file-name name version))
179 (sha256
180 (base32 "1gaigpda1w9wxfh8an3sam1hpacc1bhxl696w4yj0vzhc6izqvxs"))
181 (modules '((guix build utils)))
182 (snippet '(begin
183 ;; kenny is under nonfree Artistic License (Perl) 1.0.
184 (delete-file "kenny")
185 (substitute* "Makefile"
186 (("kenny")
187 ""))))))
188 (build-system gnu-build-system)
189 (arguments
190 (list
191 #:parallel-build? #f ; y.tab.h fails otherwise
192 #:tests? #f ; no test suite
193 #:make-flags
194 #~(list (string-append "CC=" #$(cc-for-target))
195 (string-append "prefix=" #$output))
196 #:phases
197 #~(modify-phases %standard-phases
198 (delete 'configure)
199 (add-after 'unpack 'respect-prefix
200 (lambda _
201 (substitute* "Makefile"
202 (("/usr/games")
203 "$(prefix)/bin/")
204 (("/usr")
205 "$(prefix)")))))))
206 (native-inputs
207 (list bison flex))
208 (inputs
209 (list perl))
210 (home-page "https://joeyh.name/code/filters/")
211 (synopsis "Various amusing text filters")
212 (description
213 "The filters collection harks back to the late 1980s, when various text
214filters were written to munge written language in amusing ways. The earliest
215and best known were legends such as the Swedish Chef filter and B1FF.
216
217This package contains the following filter commands:
218@enumerate
219@item b1ff: a satire of a stereotypical Usenet newbie
220@item censor: comply with the @acronym{CDA, Communications Decency Act}
221@item chef: convert English to Mock Swedish
222@item cockney: Cockney English
223@item elee: k3wl hacker slang
224@item fanboy: a stereotypical fan (supports custom fandoms)
225@item fudd: Elmer Fudd
226@item jethro: hillbilly text filter
227@item jibberish: a random selection of these filters
228@item jive: Jive English
229@item ken: turn English into Cockney
230@item kraut: a bad German accent
231@item ky00te: a very cute accent
232@item LOLCAT: as seen in Internet GIFs everywhere
233@item nethackify: wiped-out text as found in nethack
234@item newspeak: à la 1984
235@item nyc: Brooklyn English
236@item pirate: talk like a pirate
237@item rasterman: straight from the keyboard of Carsten Haitzler
238@item scottish: fake Scottish (Dwarven) accent
239@item scramble: scramble the \"inner\" letters of each word
240@item spammer: turn honest text into something liable to be flagged as spam
241@item studly: studly caps.
242@item uniencode: use glorious Unicode to the fullest possible extent
243@item upside-down: flip the text upside down
244@end enumerate
245
246The GNU project hosts a similar collection of filters, the GNU talkfilters.")
247 (license ; see debian/copyright
248 (list license:gpl2+ ; most of the filters
249 license:gpl2 ; rasterman, ky00te.dir/* nethackify, pirate
250 license:gpl3+ ; scramble, scottish
251 license:public-domain ; jethro, kraut, ken, studly
252 license:gpl1+ ; cockney, jive, nyc only say "gpl"
253 license:expat)))) ; newspeak
254
255(define-public fortunes-jkirchartz
256 ;; No public release.
257 ;; Note to updaters: Please ensure that new quotes do not bring harm
258 ;; rather than fortune.
259 (let ((commit "f3acb4e88830da7d2ef6ffe501a486a0beb4cea8")
260 (revision "1"))
261 (package
262 (name "fortunes-jkirchartz")
263 (version (git-version "0.0.0" revision commit))
264 (source (origin
265 (method git-fetch)
266 (uri (git-reference
267 (url "https://github.com/JKirchartz/fortunes")
268 (commit commit)))
269 (file-name (git-file-name name version))
270 (sha256
271 (base32
272 "1l1idf1d5y7acq0znyz9yf7073i4k6wp5pdbn1vaq2np5crpl2r5"))
273 (snippet
274 #~(for-each delete-file
275 ;; incompatible license
276 '("BibleAbridged")))))
277 (build-system copy-build-system)
278 (native-inputs (list daikichi gnu-make))
279 (arguments
280 (list #:install-plan
281 #~`(("." "share/fortunes" #:include-regexp ("\\.dat$")))
282 #:phases
283 #~(modify-phases %standard-phases
284 (add-after 'unpack 'patch-source
285 (lambda* (#:key inputs native-inputs #:allow-other-keys)
286 (substitute* "showerthoughts"
287 (("&lt;") "<")
288 (("&gt;") ">")
289 (("&amp;") "&"))
290 (substitute* "Makefile"
291 (("strfile") "daikichi pack"))))
292 (add-before 'install 'build
293 (lambda _
294 (invoke "make")))
295 (add-after 'build 'check
296 (lambda* (#:key inputs tests? #:allow-other-keys)
297 (when tests?
298 (apply
299 invoke
300 (search-input-file inputs "libexec/daikichi/test-dat")
301 (find-files "." "\\.dat$"))))))))
302 (home-page "https://github.com/JKirchartz/fortunes")
303 (synopsis "Collection of fortunes")
304 (description "This package contains a large collection of quotes to
305display via @command{fortune}, drawn from sources all around the world.")
306 (license license:unlicense))))
307
308(define-public lolcat
309 (package
310 (name "lolcat")
311 (version "1.5")
312 (source
313 (origin
314 (method git-fetch)
315 (uri (git-reference
316 (url "https://github.com/jaseg/lolcat")
317 (commit (string-append "v" version))))
318 (sha256
319 (base32
320 "1vq5y4wzjnj5r9jd085mifw84wz6hnp8p9gnd2d3x3jg9xwb0jmc"))
321 (file-name (git-file-name name version))))
322 (build-system gnu-build-system)
323 (arguments
324 (list
325 #:tests? #f ; no check target
326 #:make-flags
327 #~(list (string-append "CC=" #$(cc-for-target)))
328 #:phases
329 #~(modify-phases %standard-phases
330 (delete 'bootstrap)
331 (delete 'configure)
332 (replace 'install
333 (lambda _
334 (let ((dest (string-append #$output "/bin")))
335 (mkdir-p dest)
336 (install-file "lolcat" dest)
337 (install-file "censor" dest)))))))
338 (home-page "https://github.com/jaseg/lolcat")
339 (synopsis "Rainbow coloring effect for text console display")
340 (description "@command{lolcat} concatenates files and streams like
341regular @command{cat}, but it also adds terminal escape codes between
342characters and lines resulting in a rainbow effect.")
343 (license license:wtfpl2)))
344
345(define-public nyancat
346 (package
347 (name "nyancat")
348 (version "1.5.2")
349 (source
350 (origin
351 (method git-fetch)
352 (uri (git-reference
353 (url "https://github.com/klange/nyancat")
354 (commit version)))
355 (file-name (git-file-name name version))
356 (sha256
357 (base32 "1mg8nm5xzcq1xr8cvx24ym2vmafkw53rijllwcdm9miiz0p5ky9k"))))
358 (build-system gnu-build-system)
359 (arguments
360 (list
361 #:make-flags
362 #~(list (string-append "CC=" #$(cc-for-target)))
363 #:phases
364 #~(modify-phases %standard-phases
365 (delete 'configure) ; no configure script
366 (replace 'install
367 (lambda _
368 (let ((bin (string-append #$output "/bin"))
369 (man (string-append #$output "/share/man/man1")))
370 (install-file "src/nyancat" bin)
371 (install-file "nyancat.1" man)))))))
372 (home-page "https://nyancat.dakko.us/")
373 (synopsis "Nyan cat telnet server")
374 (description
375 "This is an animated, color, ANSI-text telnet server that renders a loop
376of the Nyan Cat / Poptart Cat animation.")
377 (license license:ncsa)))
378
379(define-public oneko
380 (package
381 (name "oneko")
382 (version "1.2.sakura.5")
383 (source
384 (origin
385 (method url-fetch)
386 (uri (string-append
387 "http://www.daidouji.com/oneko/distfiles/oneko-" version ".tar.gz"))
388 (sha256
389 (base32 "0bxjlbafn10sfi5d06420pg70rpvsiy5gdbm8kspd6qy4kqhabic"))
390 (patches (search-patches "oneko-remove-nonfree-characters.patch"))
391 (modules '((guix build utils)))
392 (snippet
393 ;; Remove bitmaps with copyright issues.
394 '(begin
395 (for-each delete-file-recursively
396 (cons* "bitmaps/bsd" "bitmaps/sakura" "bitmaps/tomoyo"
397 "bitmasks/bsd" "bitmasks/sakura" "bitmasks/tomoyo"
398 (find-files "cursors" "(bsd|card|petal).*\\.xbm")))))))
399 (build-system gnu-build-system)
400 (arguments
401 (list
402 #:tests? #f ; no tests
403 #:phases
404 #~(modify-phases %standard-phases
405 (replace 'configure
406 (lambda _
407 (invoke "xmkmf")
408 ;; Fix incorrectly generated compiler flags.
409 (substitute* "Makefile"
410 (("(CDEBUGFLAGS = ).*" _ front)
411 (string-append front "-O2\n")))))
412 (replace 'install
413 (lambda _
414 (let* ((bin (format #f "~a/bin" #$output))
415 (doc (format #f "~a/share/doc/~a-~a"
416 #$output #$name #$version))
417 (man (format #f "~a/share/man" #$output))
418 (man6 (format #f "~a/man6" man))
419 (man6-ja (format #f "~a/ja/man6" man)))
420 (install-file "oneko" bin)
421 (mkdir-p man6)
422 (mkdir-p man6-ja)
423 (copy-file "oneko.man" (string-append man6 "/oneko.6"))
424 (copy-file "oneko.man.jp" (string-append man6-ja "/oneko.6"))
425 (for-each (lambda (file) (install-file file doc))
426 (find-files "." "README.*"))))))))
427 (native-inputs
428 (list imake))
429 (inputs
430 (list libx11 libxext))
431 (home-page "http://www.daidouji.com/oneko/")
432 (synopsis "Cute cat chasing your mouse pointer")
433 (description
434 "Oneko displays an animated cat or dog that chases the mouse
435pointer---now an actual mouse or a bone---around the screen while you work.
436
437It was written for the X Window system and does not work well on Wayland.")
438 ;; See <https://directory.fsf.org/wiki/Oneko>.
439 (license license:public-domain)))
440
441(define-public python-terminaltexteffects
442 (package
443 (name "python-terminaltexteffects")
444 (version "0.12.0")
445 (source
446 (origin
447 (method git-fetch) ;no tests in PyPI archive
448 (uri (git-reference
449 (url "https://github.com/ChrisBuilds/terminaltexteffects")
450 ;; XXX: The project has a tendency to change tag style
451 ;; e.g. v0.2.1, 0.9.0, release-0.11.0.
452 (commit (string-append "release-" version))))
453 (file-name (git-file-name name version))
454 (sha256
455 (base32 "13d22i5pqn0dw1whk1v4as2ymzb0a59lns7lzz5zw6y4v3zbva07"))))
456 (build-system pyproject-build-system)
457 (native-inputs
458 (list python-poetry-core
459 python-pytest))
460 (home-page "https://chrisbuilds.github.io/terminaltexteffects/")
461 (synopsis "Terminal visual effects engine and demo toy")
462 (description
463 "TerminalTextEffects (TTE) is a terminal visual effects engine. It can
464be installed as a system application to produce effects in your terminal, or
465as a Python library to enable effects within your Python scripts/applications.
466It also includes a growing library of built-in effects which showcase the
467engine's features, including complex character movement via Paths, Waypoints,
468and motion easing, with support for quadratic/cubic bezier curves, complex
469animations via Scenes with symbol/color changes, layers, easing, and Path
470synced progression, and variable stop/step color gradient generation. Runs
471inline, preserving terminal state and workflow.")
472 (license license:expat)))
473
474(define-public sl
475 (package
476 (name "sl")
477 (version "5.05")
478 (source
479 (origin
480 (method git-fetch)
481 (uri (git-reference
482 (url "https://github.com/eyJhb/sl")
483 (commit version)))
484 (file-name (git-file-name name version))
485 (sha256
486 (base32 "11a1rdgb8wagikhxgm81g80g5qsl59mv4qgsval3isykqh8729bj"))))
487 (build-system gnu-build-system)
488 (arguments
489 (list
490 #:phases
491 #~(modify-phases %standard-phases
492 (delete 'configure) ; no configure script
493 (delete 'check) ; no tests
494 (replace 'install ; no ‘make install’ target
495 (lambda _
496 (let* ((bin (string-append #$output "/bin"))
497 (man (string-append #$output "/share/man"))
498 (man1 (string-append #$output "/man1"))
499 (man1-ja (string-append man "/ja/man1")))
500 (install-file "sl" bin)
501 (install-file "sl.1" man1)
502 (mkdir-p man1-ja)
503 (copy-file "sl.1.ja" (string-append man1-ja "/sl.1"))))))))
504 (inputs
505 (list ncurses))
506 (home-page "http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html")
507 (synopsis "Joke command to correct typing \"sl\" by mistake")
508 (description
509 "@dfn{SL} (for Steam Locomotive) displays one of several animated trains
510on the text terminal. It serves no useful purpose but to discourage
511mistakenly typing @command{sl} instead of @command{ls}.")
512 (license (license:non-copyleft "file://LICENSE"
513 "See LICENSE in the distribution."))))
514
515(define-public xfishtank
516 (package
517 (name "xfishtank")
518 (version "3.2.1")
519 (source
520 (origin
521 (method url-fetch)
522 (uri (string-append
523 "https://www.ratrabbit.nl/downloads/xfishtank/xfishtank-"
524 version "~pre1.tar.gz"))
525 ;; Version has ~pre1 in it. Guix store does not allow tilde in file
526 ;; names. Save it in the Store using a hyphen.
527 (file-name (string-append name "-" version "-pre1.tar.gz"))
528 (sha256
529 (base32 "16i9diawkmar6dhx5xn0mflr2h585gamab6137hvxzgaczx55lwp"))))
530 (build-system gnu-build-system)
531 (arguments
532 (list
533 #:phases
534 #~(modify-phases %standard-phases
535 (add-before 'configure 'fix-install-path
536 (lambda _
537 ;; Install program to bin/ instead of games/.
538 (substitute* "src/Makefile.in"
539 (("(gamesdir = \\$\\(exec_prefix\\)/)games" _ prefix)
540 (string-append prefix "bin"))))))))
541 (inputs
542 (list gtk+ libx11 libxml2 libxpm libxt))
543 (native-inputs
544 (list pkg-config))
545 (home-page
546 "https://www.ratrabbit.nl/ratrabbit/software/xfishtank/index.html")
547 (synopsis "Let fish swim over your desktop!")
548 (description "Xfishtank is a vintage application that uses the X11
549protocol. It shows fishes swimming over the desktop.")
550 (license (list license:expat license:gpl3+))))
551
552(define-public xpenguins
553 (package
554 (name "xpenguins")
555 (version "3.2.1")
556 (source
557 (origin
558 (method url-fetch)
559 (uri (string-append
560 "https://ratrabbit.nl/downloads/xpenguins/xpenguins-"
561 version ".tar.gz"))
562 (sha256
563 (base32 "03qwc7gf21d2ixkrxxwwgayj6f5fv1kg4b7ggx90j5269il63adm"))))
564 (build-system gnu-build-system)
565 (arguments
566 (list
567 #:phases
568 #~(modify-phases %standard-phases
569 (add-before 'configure 'fix-install-path
570 (lambda _
571 ;; Install program to bin/ instead of games/.
572 (substitute* "src/Makefile.in"
573 (("(gamesdir = \\$\\(exec_prefix\\)/)games" _ prefix)
574 (string-append prefix "bin"))))))))
575 (inputs
576 (list gtk+ libx11 libxml2 libxpm libxt))
577 (native-inputs
578 (list pkg-config))
579 (home-page
580 "https://www.ratrabbit.nl/ratrabbit/software/xpenguins/index.html")
581 (synopsis "Let penguins take over your desktop!")
582 (description "Xpenguins is a vintage application showing penguins running,
583flying and falling on the desktop, using windows as run paths.")
584 (license license:gpl2+)))
585
586(define-public xsnow
587 (package
588 (name "xsnow")
589 (version "3.7.7")
590 (source
591 (origin
592 (method url-fetch)
593 (uri (string-append
594 "https://www.ratrabbit.nl/downloads/xsnow/xsnow-"
595 version ".tar.gz"))
596 (sha256
597 (base32 "1wiwlqbc6lfcq69hln8mxsms327sjbdpv0mmkfi9j2xrcgmw41bs"))))
598 (build-system gnu-build-system)
599 (arguments
600 '(#:phases
601 (modify-phases %standard-phases
602 (add-before 'configure 'fix-install-path
603 (lambda _
604 ;; Install program to bin instead of games.
605 (substitute* "src/Makefile.in"
606 (("(gamesdir = \\$\\(exec_prefix\\)/)games" _ prefix)
607 (string-append prefix "bin")))
608 #t)))))
609 (inputs
610 (list gsl libx11 libxpm libxt libxml2))
611 (native-inputs
612 (list pkg-config))
613 (propagated-inputs
614 (list gdk-pixbuf gtk+))
615 (home-page "https://www.ratrabbit.nl/ratrabbit/xsnow/index.html")
616 (synopsis "Let it snow on the desktop")
617 (description "@code{Xsnow} animates snowfall and Santa with reindeer on
618the desktop background. Additional customizable effects include wind, stars
619and various scenery elements.")
620 (license license:gpl3+)))
621
622;;;
623;;; Avoid adding new packages to the end of this file. To reduce the chances
624;;; of a merge conflict, place them above by existing packages in alphabetical
625;;; order.
626;;;