lol
1{lib, stdenv, fetchurl, aspell, which, writeScript}:
2
3with lib;
4
5/* HOWTO:
6
7 * Add some of these to your profile or systemPackages.
8
9 ~~~~
10 environment.systemPackages = [
11 aspell
12 aspellDicts.en
13 aspellDicts.en-computers
14 aspellDicts.en-science
15 ];
16 ~~~~
17
18 * Rebuild and switch to the new profile.
19 * Add something like
20
21 ~~~~
22 master en_US
23 extra-dicts en-computers.rws
24 add-extra-dicts en_US-science.rws
25 ~~~~
26
27 to `/etc/aspell.conf` or `~/.aspell.conf`.
28 * Check that `aspell -a` starts without errors.
29 * (optional) Check your config with `aspell dump config | grep -vE '^(#|$)'`.
30 * Enjoy.
31
32*/
33
34let
35
36 /* Function to compile an Aspell dictionary. Fortunately, they all
37 build in the exact same way. */
38 buildDict =
39 {shortName, fullName, ...}@args:
40
41 stdenv.mkDerivation ({
42 name = "aspell-dict-${shortName}";
43
44 strictDeps = true;
45
46 nativeBuildInputs = [ aspell which ];
47
48 dontAddPrefix = true;
49
50 configurePlatforms = [ ];
51
52 preBuild = "makeFlagsArray=(dictdir=$out/lib/aspell datadir=$out/lib/aspell)";
53
54 meta = {
55 description = "Aspell dictionary for ${fullName}";
56 platforms = lib.platforms.all;
57 } // (args.meta or {});
58 } // removeAttrs args [ "meta" ]);
59
60
61 buildOfficialDict =
62 {language, version, filename, fullName, sha256, ...}@args:
63 let buildArgs = {
64 shortName = "${language}-${version}";
65
66 src = fetchurl {
67 url = "mirror://gnu/aspell/dict/${language}/${filename}-${language}-${version}.tar.bz2";
68 inherit sha256;
69 };
70
71 /* Remove any instances of u-deva.cmap and u-deva.cset since
72 they are included in the main aspell package and can
73 cause conflicts otherwise. */
74 postInstall = ''
75 rm -f $out/lib/aspell/u-deva.{cmap,cset}
76 '';
77
78 passthru.updateScript = writeScript "update-aspellDict-${language}" ''
79 #!/usr/bin/env nix-shell
80 #!nix-shell -i bash -p nix curl gnused common-updater-scripts
81 set -eu -o pipefail
82
83 # List tarballs in the dictionary's subdirectory via HTTPS and
84 # the simple list method of Apache's mod_autoindex.
85 #
86 # Catalan dictionary has an exception where an earlier version
87 # compares as newer because the versioning scheme has changed.
88 versions=$(
89 echo '[';
90 curl -s 'https://ftp.gnu.org/gnu/aspell/dict/${language}/?F=0' | \
91 sed -r 's/.* href="${filename}-${language}-([A-Za-z0-9_+.-]+)\.tar\.bz2".*/"\1"/;t;d' | \
92 if [ '${language}' = "ca" ]; then grep -v 20040130-1; else cat; fi; \
93 echo ']')
94
95 # Sort versions in descending order using Nix's and take the first as the latest.
96 sortVersions="(with builtins; head (sort (a: b: compareVersions a b > 0) $versions))"
97 # nix-instantiate outputs Nix strings (with quotes), so remove them to get
98 # a result similar to `nix eval --raw`.
99 latestVersion=$(nix-instantiate --eval --expr "$sortVersions" | tr -d '"')
100
101 update-source-version aspellDicts.${language} "$latestVersion"
102 '';
103
104 meta = {
105 homepage = "http://ftp.gnu.org/gnu/aspell/dict/0index.html";
106 } // (args.meta or {});
107
108 } // lib.optionalAttrs (stdenv.isDarwin && elem language [ "is" "nb" ]) {
109 # tar: Cannot open: Illegal byte sequence
110 unpackPhase = ''
111 runHook preUnpack
112
113 tar -xf $src --strip-components=1 || true
114
115 runHook postUnpack
116 '';
117
118 postPatch = getAttr language {
119 is = ''
120 cp icelandic.alias íslenska.alias
121 sed -i 's/ .slenska\.alias/ íslenska.alias/g' Makefile.pre
122 '';
123 nb = ''
124 cp bokmal.alias bokmål.alias
125 sed -i 's/ bokm.l\.alias/ bokmål.alias/g' Makefile.pre
126 '';
127 };
128 } // removeAttrs args [ "language" "filename" "sha256" "meta" ];
129 in buildDict buildArgs;
130
131 /* Function to compile txt dict files into Aspell dictionaries. */
132 buildTxtDict =
133 {langInputs ? [], ...}@args:
134 buildDict ({
135 propagatedUserEnvPackages = langInputs;
136
137 preBuild = ''
138 # Aspell can't handle multiple data-dirs
139 # Copy everything we might possibly need
140 ${concatMapStringsSep "\n" (p: ''
141 cp -a ${p}/lib/aspell/* .
142 '') ([ aspell ] ++ langInputs)}
143 export ASPELL_CONF="data-dir $(pwd)"
144
145 aspell-create() {
146 target=$1
147 shift
148 echo building $target
149 aspell create "$@" master ./$target.rws
150 }
151
152 words-only() {
153 awk -F'\t' '{print $1}' | sort | uniq
154 }
155
156 # drop comments
157 aspell-affix() {
158 words-only \
159 | grep -a -v '#' \
160 | aspell-create "$@"
161 }
162
163 # Hack: drop comments and words with affixes
164 aspell-plain() {
165 words-only \
166 | grep -a -v '#' \
167 | grep -a -v '/' \
168 | aspell-create "$@"
169 }
170
171 aspell-install() {
172 install -d $out/lib/aspell
173 for a in "$@"; do
174 echo installing $a
175 install -t $out/lib/aspell $a.rws
176 done
177 }
178 '';
179
180 dontUnpack = true;
181 } // args);
182
183in rec {
184
185 ### Languages
186
187 af = buildOfficialDict {
188 language = "af";
189 version = "0.50-0";
190 fullName = "Afrikaans";
191 filename = "aspell";
192 sha256 = "00p6k2ndi0gzfr5fkbvx4hkcpj223pidjvmxg0r384arrap00q4x";
193 };
194
195 am = buildOfficialDict {
196 language = "am";
197 version = "0.03-1";
198 fullName = "Amharic";
199 filename = "aspell6";
200 sha256 = "11ylp7gjq94wfacyawvp391lsq26rl1b84f268rjn7l7z0hxs9xz";
201 };
202
203 ar = buildOfficialDict {
204 language = "ar";
205 version = "1.2-0";
206 fullName = "Arabic";
207 filename = "aspell6";
208 sha256 = "1avw40bp8yi5bnkq64ihm2rldgw34lk89yz281q9bmndh95a47h4";
209 };
210
211 ast = buildOfficialDict {
212 language = "ast";
213 version = "0.01";
214 fullName = "Asturian";
215 filename = "aspell6";
216 sha256 = "14hg85mxcyvdigf96yvslk7f3v9ngdsxn85qpgwkg31k3k83xwj3";
217 };
218
219 az = buildOfficialDict {
220 language = "az";
221 version = "0.02-0";
222 fullName = "Azerbaijani";
223 filename = "aspell6";
224 sha256 = "1hs4h1jscpxf9f9iyk6mvjqsnhkf0yslkbjhjkasqqcx8pn7cc86";
225 };
226
227 be = buildOfficialDict {
228 language = "be";
229 version = "0.01";
230 fullName = "Belarusian";
231 filename = "aspell5";
232 sha256 = "1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm";
233 };
234
235 bg = buildOfficialDict {
236 language = "bg";
237 version = "4.1-0";
238 fullName = "Bulgarian";
239 filename = "aspell6";
240 sha256 = "1alacmgpfk0yrgq83y23d16fhav1bxmb98kg8d2a5r9bvh2h0mvl";
241 };
242
243 bn = buildOfficialDict {
244 language = "bn";
245 version = "0.01.1-1";
246 fullName = "Bengali";
247 filename = "aspell6";
248 sha256 = "1nc02jd67iggirwxnhdvlvaqm0xfyks35c4psszzj3dhzv29qgxh";
249 };
250
251 br = buildOfficialDict {
252 language = "br";
253 version = "0.50-2";
254 fullName = "Breton";
255 filename = "aspell";
256 sha256 = "0fradnm8424bkq9a9zhpl2132dk7y95xmw45sy1c0lx6rinjl4n2";
257 };
258
259 ca = buildOfficialDict {
260 language = "ca";
261 version = "2.1.5-1";
262 fullName = "Catalan";
263 filename = "aspell6";
264 sha256 = "1fb5y5kgvk25nlsfvc8cai978hg66x3pbp9py56pldc7vxzf9npb";
265 };
266
267 cs = buildOfficialDict {
268 language = "cs";
269 version = "20040614-1";
270 fullName = "Czech";
271 filename = "aspell6";
272 sha256 = "0rihj4hsw96pd9casvmpvw3r8040pfa28p1h73x4vyn20zwr3h01";
273 };
274
275 csb = buildOfficialDict {
276 language = "csb";
277 version = "0.02-0";
278 fullName = "Kashubian";
279 filename = "aspell6";
280 sha256 = "1612ypkm684wjvc7n081i87mlrrzif9simc7kyn177hfsl3ssrn1";
281 };
282
283 cy = buildOfficialDict {
284 language = "cy";
285 version = "0.50-3";
286 fullName = "Welsh";
287 filename = "aspell";
288 sha256 = "15vq601lzz1gi311xym4bv9lv1k21xcfn50jmzamw7h6f36rsffm";
289 };
290
291 da = buildOfficialDict {
292 language = "da";
293 version = "1.4.42-1";
294 fullName = "Danish";
295 filename = "aspell5";
296 sha256 = "1hfkmiyhgrx5lgrb2mffjbdn1hivrm73wcg7x0iid74p2yb0fjpp";
297 };
298
299 de = buildOfficialDict {
300 language = "de";
301 version = "20161207-7-0";
302 fullName = "German";
303 filename = "aspell6";
304 sha256 = "0wamclvp66xfmv5wff96v6gdlnfv4y8lx3f8wvxyzm5imwgms4n2";
305 };
306
307 de-alt = buildOfficialDict {
308 language = "de-alt";
309 version = "2.1-1";
310 fullName = "German - Old Spelling";
311 filename = "aspell6";
312 sha256 = "0wwc2l29svv3fv041fh6vfa5m3hi9q9pkbxibzq1ysrsfin3rl9n";
313 };
314
315 el = buildOfficialDict {
316 language = "el";
317 version = "0.08-0";
318 fullName = "Greek";
319 filename = "aspell6";
320 sha256 = "1ljcc30zg2v2h3w5h5jr5im41mw8jbsgvvhdd2cii2yzi8d0zxja";
321 };
322
323 en = buildOfficialDict {
324 language = "en";
325 version = "2020.12.07-0";
326 fullName = "English";
327 filename = "aspell6";
328 sha256 = "1cwzqkm8gr1w51rpckwlvb43sb0b5nbwy7s8ns5vi250515773sc";
329 };
330
331 eo = buildOfficialDict {
332 language = "eo";
333 version = "2.1.20000225a-2";
334 fullName = "Esperanto";
335 filename = "aspell6";
336 sha256 = "09vf0mbiicbmyb4bwb7v7lgpabnylg0wy7m3hlhl5rjdda6x3lj1";
337 };
338
339 es = buildOfficialDict {
340 language = "es";
341 version = "1.11-2";
342 fullName = "Spanish";
343 filename = "aspell6";
344 sha256 = "1k5g328ac1hdpp6fsg57d8md6i0aqcwlszp3gbmp5706wyhpydmd";
345 };
346
347 et = buildOfficialDict {
348 language = "et";
349 version = "0.1.21-1";
350 fullName = "Estonian";
351 filename = "aspell6";
352 sha256 = "0jdjfa2fskirhnb70fy86xryp9r6gkl729ib8qcjmsma7nm5gs5i";
353 };
354
355 fa = buildOfficialDict {
356 language = "fa";
357 version = "0.11-0";
358 fullName = "Persian";
359 filename = "aspell6";
360 sha256 = "0nz1ybwv56q7nl9ip12hfmdch1vyyq2j55bkjcns13lshzm2cba8";
361 };
362
363 fi = buildOfficialDict {
364 language = "fi";
365 version = "0.7-0";
366 fullName = "Finnish";
367 filename = "aspell6";
368 sha256 = "07d5s08ba4dd89cmwy9icc01i6fjdykxlb9ravmhdrhi8mxz1mzq";
369 };
370
371 fo = buildOfficialDict {
372 language = "fo";
373 version = "0.2.16-1";
374 fullName = "Faroese";
375 filename = "aspell5";
376 sha256 = "022yz5lll20xrzizcyb7wksm3fgwklnvgnir5la5qkxv770dvq7p";
377 };
378
379 fr = buildOfficialDict {
380 language = "fr";
381 version = "0.50-3";
382 fullName = "French";
383 filename = "aspell";
384 sha256 = "14ffy9mn5jqqpp437kannc3559bfdrpk7r36ljkzjalxa53i0hpr";
385 };
386
387 fy = buildOfficialDict {
388 language = "fy";
389 version = "0.12-0";
390 fullName = "Frisian";
391 filename = "aspell6";
392 sha256 = "1almi6n4ni91d0rzrk8ig0473m9ypbwqmg56hchz76j51slwyirl";
393 };
394
395 ga = buildOfficialDict {
396 language = "ga";
397 version = "4.5-0";
398 fullName = "Irish";
399 filename = "aspell5";
400 sha256 = "0y869mmvfb3bzadfgajwa2rfb0xfhi6m9ydwgxkb9v2claydnps5";
401 };
402
403 gd = buildOfficialDict {
404 language = "gd";
405 version = "0.1.1-1";
406 fullName = "Scottish Gaelic";
407 filename = "aspell5";
408 sha256 = "0a89irv5d65j5m9sb0k36851x5rs0wij12gb2m6hv2nsfn5a05p3";
409 };
410
411 gl = buildOfficialDict {
412 language = "gl";
413 version = "0.5a-2";
414 fullName = "Galician";
415 filename = "aspell6";
416 sha256 = "12pwghmy18fcdvf9hvhb4q6shi339hb1kwxpkz0bhw0yjxjwzkdk";
417 };
418
419 grc = buildOfficialDict {
420 language = "grc";
421 version = "0.02-0";
422 fullName = "Ancient Greek";
423 filename = "aspell6";
424 sha256 = "1zxr8958v37v260fkqd4pg37ns5h5kyqm54hn1hg70wq5cz8h512";
425 };
426
427 gu = buildOfficialDict {
428 language = "gu";
429 version = "0.03-0";
430 fullName = "Gujarati";
431 filename = "aspell6";
432 sha256 = "04c38jnl74lpj2jhjz4zpqbs2623vwc71m6wc5h4b1karid14b23";
433 };
434
435 gv = buildOfficialDict {
436 language = "gv";
437 version = "0.50-0";
438 fullName = "Manx Gaelic";
439 filename = "aspell";
440 sha256 = "1rknf4yaw9s29c77sdzg98nhnmjwpicdb69igmz1n768npz2drmv";
441 };
442
443 he = buildOfficialDict {
444 language = "he";
445 version = "1.0-0";
446 fullName = "Hebrew";
447 filename = "aspell6";
448 sha256 = "13bhbghx5b8g0119g3wxd4n8mlf707y41vlf59irxjj0kynankfn";
449 };
450
451 hi = buildOfficialDict {
452 language = "hi";
453 version = "0.02-0";
454 fullName = "Hindi";
455 filename = "aspell6";
456 sha256 = "0drs374qz4419zx1lf2k281ydxf2750jk5ailafj1x0ncz27h1ys";
457 };
458
459 hil = buildOfficialDict {
460 language = "hil";
461 version = "0.11-0";
462 fullName = "Hiligaynon";
463 filename = "aspell5";
464 sha256 = "1s482fsfhzic9qa80al4418q3ni3gfn2bkwkd2y46ydrs17kf2jp";
465 };
466
467 hr = buildOfficialDict {
468 language = "hr";
469 version = "0.51-0";
470 fullName = "Croatian";
471 filename = "aspell";
472 sha256 = "09aafyf1vqhaxvcf3jfzf365k394b5pf0iivsr2ix5npah1h7i1a";
473 };
474
475 hsb = buildOfficialDict {
476 language = "hsb";
477 version = "0.02-0";
478 fullName = "Upper Sorbian";
479 filename = "aspell6";
480 sha256 = "0bi2vhz7n1vmg43wbbh935pmzihv80iyz9z65j94lxf753j2m7wd";
481 };
482
483 hu = buildOfficialDict {
484 language = "hu";
485 version = "0.99.4.2-0";
486 fullName = "Hungarian";
487 filename = "aspell6";
488 sha256 = "1d9nybip2k1dz69zly3iv0npbi3yxgfznh1py364nxzrbjsafd9k";
489 };
490
491 hus = buildOfficialDict {
492 language = "hus";
493 version = "0.03-1";
494 fullName = "Huastec";
495 filename = "aspell6";
496 sha256 = "09glipfpkz9xch17z11zw1yn2z7jx1f2svfmjn9l6wm1s5qz6a3d";
497 };
498
499 hy = buildOfficialDict {
500 language = "hy";
501 version = "0.10.0-0";
502 fullName = "Armenian";
503 filename = "aspell6";
504 sha256 = "1w5wq8lfl2xp1nid30b1j5qmya4vjyidq0vpr4y3gf53jc08vsid";
505 };
506
507 ia = buildOfficialDict {
508 language = "ia";
509 version = "0.50-1";
510 fullName = "Interlingua";
511 filename = "aspell";
512 sha256 = "0bqcpgsa72pga24fv4fkw38b4qqdvqsw97jvzvw7q03dc1cwp5sp";
513 };
514
515 id = buildOfficialDict {
516 language = "id";
517 version = "1.2-0";
518 fullName = "Indonesian";
519 filename = "aspell5";
520 sha256 = "023knfg0q03f7y5w6xnwa1kspnrcvcnky8xvdms93n2850414faj";
521 };
522
523 is = buildOfficialDict {
524 language = "is";
525 version = "0.51.1-0";
526 fullName = "Icelandic";
527 filename = "aspell";
528 sha256 = "1mp3248lhbr13cj7iq9zs7h5ix0dcwlprp5cwrkcwafrv8lvsd9h";
529 };
530
531 it = buildOfficialDict {
532 language = "it";
533 version = "2.2_20050523-0";
534 fullName = "Italian";
535 filename = "aspell6";
536 sha256 = "1gdf7bc1a0kmxsmphdqq8pl01h667mjsj6hihy6kqy14k5qdq69v";
537 };
538
539 kn = buildOfficialDict {
540 language = "kn";
541 version = "0.01-1";
542 fullName = "Kannada";
543 filename = "aspell6";
544 sha256 = "10sk0wx4x4ds1403kf9dqxv9yjvh06w8qqf4agx57y0jlws0n0fb";
545 };
546
547 ku = buildOfficialDict {
548 language = "ku";
549 version = "0.20-1";
550 fullName = "Kurdi";
551 filename = "aspell5";
552 sha256 = "09va98krfbgdaxl101nmd85j3ysqgg88qgfcl42c07crii0pd3wn";
553 };
554
555 ky = buildOfficialDict {
556 language = "ky";
557 version = "0.01-0";
558 fullName = "Kirghiz";
559 filename = "aspell6";
560 sha256 = "0kzv2syjnnn6pnwx0d578n46hg2l0j62977al47y6wabnhjjy3z1";
561 };
562
563 la = buildOfficialDict {
564 language = "la";
565 version = "20020503-0";
566 fullName = "Latin";
567 filename = "aspell6";
568 sha256 = "1199inwi16dznzl087v4skn66fl7h555hi2palx6s1f3s54b11nl";
569 };
570
571 lt = buildOfficialDict {
572 language = "lt";
573 version = "1.2.1-0";
574 fullName = "Lithuanian";
575 filename = "aspell6";
576 sha256 = "1asjck911l96q26zj36lmz0jp4b6pivvrf3h38zgc8lc85p3pxgn";
577 };
578
579 lv = buildOfficialDict {
580 language = "lv";
581 version = "0.5.5-1";
582 fullName = "Latvian";
583 filename = "aspell6";
584 sha256 = "12pvs584a6437ijndggdqpp5s7d0w607cimpkxsjwasnx83f4c1w";
585 };
586
587 mg = buildOfficialDict {
588 language = "mg";
589 version = "0.03-0";
590 fullName = "Malagasy";
591 filename = "aspell5";
592 sha256 = "0hdhbk9b5immjp8l5h4cy82gwgsqzcqbb0qsf7syw333w4rgi0ji";
593 };
594
595 mi = buildOfficialDict {
596 language = "mi";
597 version = "0.50-0";
598 fullName = "Maori";
599 filename = "aspell";
600 sha256 = "12bxplpd348yx8d2q8qvahi9dlp7qf28qmanzhziwc7np8rixvmy";
601 };
602
603 mk = buildOfficialDict {
604 language = "mk";
605 version = "0.50-0";
606 fullName = "Macedonian";
607 filename = "aspell";
608 sha256 = "0wcr9n882xi5b7a7ln1hnhq4vfqd5gpqqp87v01j0gb7zf027z0m";
609 };
610
611 ml = buildOfficialDict {
612 language = "ml";
613 version = "0.03-1";
614 fullName = "Malayalam";
615 filename = "aspell6";
616 sha256 = "1zcn4114gwia085fkz77qk13z29xrbp53q2qvgj2cvcbalg5bkg4";
617 };
618
619 mn = buildOfficialDict {
620 language = "mn";
621 version = "0.06-2";
622 fullName = "Mongolian";
623 filename = "aspell6";
624 sha256 = "150j9y5c9pw80fwp5rzl5q31q9vjbxixaqljkfwxjb5q93fnw6rg";
625 };
626
627 mr = buildOfficialDict {
628 language = "mr";
629 version = "0.10-0";
630 fullName = "Marathi";
631 filename = "aspell6";
632 sha256 = "0cvgb2l40sppqbi842ivpznsh2xzp1d4hxc371dll8z0pr05m8yk";
633 };
634
635 ms = buildOfficialDict {
636 language = "ms";
637 version = "0.50-0";
638 fullName = "Malay";
639 filename = "aspell";
640 sha256 = "0vr4vhipcfhsxqfs8dim2ph7iiixn22gmlmlb375bx5hgd9y7i1w";
641 };
642
643 mt = buildOfficialDict {
644 language = "mt";
645 version = "0.50-0";
646 fullName = "Maltese";
647 filename = "aspell";
648 sha256 = "1d2rl1nlfjq6rfywblvx8m88cyy2x0mzc0mshzbgw359c2nwl3z0";
649 };
650
651 nb = buildOfficialDict {
652 language = "nb";
653 version = "0.50.1-0";
654 fullName = "Norwegian Bokmal";
655 filename = "aspell";
656 sha256 = "12i2bmgdnlkzfinb20j2a0j4a20q91a9j8qpq5vgabbvc65nwx77";
657 };
658
659 nds = buildOfficialDict {
660 language = "nds";
661 version = "0.01-0";
662 fullName = "Low Saxon";
663 filename = "aspell6";
664 sha256 = "1nkjhwzn45dizi89d19q4bqyd87cim8xyrgr655fampgkn31wf6f";
665 };
666
667 nl = buildOfficialDict {
668 language = "nl";
669 version = "0.50-2";
670 fullName = "Dutch";
671 filename = "aspell";
672 sha256 = "0ffb87yjsh211hllpc4b9khqqrblial4pzi1h9r3v465z1yhn3j4";
673 # Emacs expects a language called "nederlands".
674 postInstall = ''
675 echo "add nl.rws" > $out/lib/aspell/nederlands.multi
676 '';
677 };
678
679 nn = buildOfficialDict {
680 language = "nn";
681 version = "0.50.1-1";
682 fullName = "Norwegian Nynorsk";
683 filename = "aspell";
684 sha256 = "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc";
685 };
686
687 ny = buildOfficialDict {
688 language = "ny";
689 version = "0.01-0";
690 fullName = "Chichewa";
691 filename = "aspell5";
692 sha256 = "0gjb92vcg60sfgvrm2f6i89sfkgb179ahvwlgs649fx3dc7rfvqp";
693 };
694
695 or = buildOfficialDict {
696 language = "or";
697 version = "0.03-1";
698 fullName = "Oriya";
699 filename = "aspell6";
700 sha256 = "0kzj9q225z0ccrlbkijsrafy005pbjy14qcnxb6p93ciz1ls7zyn";
701 };
702
703 pa = buildOfficialDict {
704 language = "pa";
705 version = "0.01-1";
706 fullName = "Punjabi";
707 filename = "aspell6";
708 sha256 = "0if93zk10pyrs38wwj3vpcdm01h51m5z9gm85h3jxrpgqnqspwy7";
709 };
710
711 pl = buildOfficialDict {
712 language = "pl";
713 version = "6.0_20061121-0";
714 fullName = "Polish";
715 filename = "aspell6";
716 sha256 = "0kap4kh6bqbb22ypja1m5z3krc06vv4n0hakiiqmv20anzy42xq1";
717 };
718
719 pt_BR = buildOfficialDict {
720 language = "pt_BR";
721 version = "20131030-12-0";
722 fullName = "Brazilian Portuguese";
723 filename = "aspell6";
724 sha256 = "1xqlpk21s93c6blkdnpk7l62q9fxjvzdv2x86chl8p2x1gdrj3gb";
725 };
726
727 pt_PT = buildOfficialDict {
728 language = "pt_PT";
729 version = "20190329-1-0";
730 fullName = "Portuguese";
731 filename = "aspell6";
732 sha256 = "0ld0d0ily4jqifjfsxfv4shbicz6ymm2gk56fq9gbzra1j4qnw75";
733 };
734
735 qu = buildOfficialDict {
736 language = "qu";
737 version = "0.02-0";
738 fullName = "Quechua";
739 filename = "aspell6";
740 sha256 = "009z0zsvzq7r3z3m30clyibs94v77b92h5lmzmzxlns2p0lpd5w0";
741 };
742
743 ro = buildOfficialDict {
744 language = "ro";
745 version = "3.3-2";
746 fullName = "Romanian";
747 filename = "aspell5";
748 sha256 = "0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk";
749 };
750
751 ru = buildOfficialDict {
752 language = "ru";
753 version = "0.99f7-1";
754 fullName = "Russian";
755 filename = "aspell6";
756 sha256 = "0ip6nq43hcr7vvzbv4lwwmlwgfa60hrhsldh9xy3zg2prv6bcaaw";
757 };
758
759 rw = buildOfficialDict {
760 language = "rw";
761 version = "0.50-0";
762 fullName = "Kinyarwanda";
763 filename = "aspell";
764 sha256 = "10gh8g747jbrvfk2fn3pjxy1nhcfdpwgmnvkmrp4nd1k1qp101il";
765 };
766
767 sc = buildOfficialDict {
768 language = "sc";
769 version = "1.0";
770 fullName = "Sardinian";
771 filename = "aspell5";
772 sha256 = "0hl7prh5rccsyljwrv3m1hjcsphyrrywk2qvnj122irbf4py46jr";
773 };
774
775 sk = buildOfficialDict {
776 language = "sk";
777 version = "2.01-2";
778 fullName = "Slovak";
779 filename = "aspell6";
780 sha256 = "19k0m1v5pcf7xr4lxgjkzqkdlks8nyb13bvi1n7521f3i4lhma66";
781 };
782
783 sl = buildOfficialDict {
784 language = "sl";
785 version = "0.50-0";
786 fullName = "Slovenian";
787 filename = "aspell";
788 sha256 = "1l9kc5g35flq8kw9jhn2n0bjb4sipjs4qkqzgggs438kywkx2rp5";
789 };
790
791 sr = buildOfficialDict {
792 language = "sr";
793 version = "0.02";
794 fullName = "Serbian";
795 filename = "aspell6";
796 sha256 = "12cj01p4nj80cpf7m3s4jsaf0rsfng7s295j9jfchcq677xmhpkh";
797 };
798
799 sv = buildOfficialDict {
800 language = "sv";
801 version = "0.51-0";
802 fullName = "Swedish";
803 filename = "aspell";
804 sha256 = "02jwkjhr32kvyibnyzgx3smbnm576jwdzg3avdf6zxwckhy5fw4v";
805 };
806
807 sw = buildOfficialDict {
808 language = "sw";
809 version = "0.50-0";
810 fullName = "Swahili";
811 filename = "aspell";
812 sha256 = "15zjh7hdj2b4dgm5bc12w1ims9q357p1q3gjalspnyn5gl81zmby";
813 };
814
815 ta = buildOfficialDict {
816 language = "ta";
817 version = "20040424-1";
818 fullName = "Tamil";
819 filename = "aspell6";
820 sha256 = "0sj8ygjsyvnr93cs6324y7az7k2vyw7rjxdc9vnm7z60lbqm5xaj";
821 };
822
823 te = buildOfficialDict {
824 language = "te";
825 version = "0.01-2";
826 fullName = "Telugu";
827 filename = "aspell6";
828 sha256 = "0pgcgxz7dz34zxp9sb85jjzbg3ky6il5wmhffz6ayrbsfn5670in";
829 };
830
831 tet = buildOfficialDict {
832 language = "tet";
833 version = "0.1.1";
834 fullName = "Tetum";
835 filename = "aspell5";
836 sha256 = "17n0y4fhjak47j9qnqf4m4z6zra6dn72rwhp7ig0hhlgqk4ldmcx";
837 };
838
839 tk = buildOfficialDict {
840 language = "tk";
841 version = "0.01-0";
842 fullName = "Turkmen";
843 filename = "aspell5";
844 sha256 = "02vad4jqhr0xpzqi5q5z7z0xxqccbn8j0c5dhpnm86mnr84l5wl6";
845 };
846
847 tl = buildOfficialDict {
848 language = "tl";
849 version = "0.02-1";
850 fullName = "Tagalog";
851 filename = "aspell5";
852 sha256 = "1kca6k7qnpfvvwjnq5r1n242payqsjy96skmw78m7ww6d0n5vdj8";
853 };
854
855 tn = buildOfficialDict {
856 language = "tn";
857 version = "1.0.1-0";
858 fullName = "Setswana";
859 filename = "aspell5";
860 sha256 = "0q5x7c6z88cn0kkpk7q1craq34g4g03v8x3xcj5a5jia3l7c5821";
861 };
862
863 tr = buildOfficialDict {
864 language = "tr";
865 version = "0.50-0";
866 fullName = "Turkish";
867 filename = "aspell";
868 sha256 = "0jpvpm96ga7s7rmsm6rbyrrr22b2dicxv2hy7ysv5y7bbq757ihb";
869 };
870
871 uk = buildOfficialDict {
872 language = "uk";
873 version = "1.4.0-0";
874 fullName = "Ukrainian";
875 filename = "aspell6";
876 sha256 = "137i4njvnslab6l4s291s11xijr5jsy75lbdph32f9y183lagy9m";
877 };
878
879 uz = buildOfficialDict {
880 language = "uz";
881 version = "0.6-0";
882 fullName = "Uzbek";
883 filename = "aspell6";
884 sha256 = "0sg3wlyply1idpq5ypyj7kgnaadaiskci1sqs811yhg2gzyc3092";
885 };
886
887 vi = buildOfficialDict {
888 language = "vi";
889 version = "0.01.1-1";
890 fullName = "Vietnamese";
891 filename = "aspell6";
892 sha256 = "05vwgvf1cj45azhflywx69javqdvqd1f20swrc2d3c32pd9mvn1w";
893 };
894
895 wa = buildOfficialDict {
896 language = "wa";
897 version = "0.50-0";
898 fullName = "Walloon";
899 filename = "aspell";
900 sha256 = "1r1zwz7xkx40dga9vf5wc9ja3jwk1dkpcr1kaa7wryvslf5al5ss";
901 };
902
903 yi = buildOfficialDict {
904 language = "yi";
905 version = "0.01.1-1";
906 fullName = "Yiddish";
907 filename = "aspell6";
908 sha256 = "0mi842l4038bx3ll2wx9nz44nqrg1x46h5b02zigi1hbbddd6ycq";
909 };
910
911 zu = buildOfficialDict {
912 language = "zu";
913 version = "0.50-0";
914 fullName = "Zulu";
915 filename = "aspell";
916 sha256 = "15k7gaxrnqnssdyk9l6g27dq317dqp9jz5yzafd25ri01g6mb8iz";
917 };
918
919 ### Jargons
920
921 en-computers = buildTxtDict {
922 shortName = "en-computers";
923 fullName = "English Computer Jargon";
924
925 src = fetchurl {
926 url = "https://mrsatterly.com/computer.dic";
927 sha256 = "1vzk7cdvcm9r1c6mgxpabrdcpvghdv9mjmnf6iq5wllcif5nsw2b";
928 };
929
930 langInputs = [ en ];
931
932 buildPhase = ''
933 runHook preBuild
934 cat $src | aspell-affix en-computers --dont-validate-words --lang=en
935 runHook postBuild
936 '';
937 installPhase = "aspell-install en-computers";
938
939 meta = {
940 homepage = "https://mrsatterly.com/spelling.html";
941 };
942 };
943
944 en-science = buildTxtDict {
945 shortName = "en-science";
946 fullName = "English Scientific Jargon";
947
948 src1 = fetchurl {
949 url = "http://jpetrie.net/wp-content/uploads/custom_scientific_US.txt";
950 sha256 = "1nf4py2mg0mlv9s5a7had2wn29z2v6bcca0fs6rbpdn4nqc4s7dm";
951 };
952
953 src2 = fetchurl {
954 url = "http://jpetrie.net/wp-content/uploads/custom_scientific_UK.txt";
955 sha256 = "0f88il1ds6qazy1ghxviqcwsywrbf6pzl2lmzf4f3qvhdfb6f1y0";
956 };
957
958 langInputs = [ en ];
959
960 buildPhase = ''
961 runHook preBuild
962 cat $src1 | aspell-plain en_US-science --dont-validate-words --lang=en
963 cat $src2 | aspell-plain en_GB-science --dont-validate-words --lang=en
964 runHook postBuild
965 '';
966 installPhase = "aspell-install en_US-science en_GB-science";
967
968 meta = {
969 homepage = "http://www.jpetrie.net/scientific-word-list-for-spell-checkersspelling-dictionaries/";
970 };
971
972 };
973
974}