python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / aspell / dictionaries.nix
blob74caec57c2d8383950627571e3e902b0acde9a1f
1 {lib, stdenv, fetchurl, aspell, which, writeScript}:
3 with lib;
5 /* HOWTO:
7    * Add some of these to your profile or systemPackages.
9      ~~~~
10      environment.systemPackages = [
11        aspell
12        aspellDicts.en
13        aspellDicts.en-computers
14        aspellDicts.en-science
15      ];
16      ~~~~
18    * Rebuild and switch to the new profile.
19    * Add something like
21      ~~~~
22      master en_US
23      extra-dicts en-computers.rws
24      add-extra-dicts en_US-science.rws
25      ~~~~
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.
34 let
36   /* Function to compile an Aspell dictionary.  Fortunately, they all
37      build in the exact same way. */
38   buildDict =
39     {shortName, fullName, ...}@args:
41     stdenv.mkDerivation ({
42       name = "aspell-dict-${shortName}";
44       strictDeps = true;
46       nativeBuildInputs = [ aspell which ];
48       dontAddPrefix = true;
50       configurePlatforms = [ ];
52       preBuild = "makeFlagsArray=(dictdir=$out/lib/aspell datadir=$out/lib/aspell)";
54       meta = {
55         description = "Aspell dictionary for ${fullName}";
56         platforms = lib.platforms.all;
57       } // (args.meta or {});
58     } // removeAttrs args [ "meta" ]);
61   buildOfficialDict =
62     {language, version, filename, fullName, sha256, ...}@args:
63     let buildArgs = {
64       shortName = "${language}-${version}";
66       src = fetchurl {
67         url = "mirror://gnu/aspell/dict/${language}/${filename}-${language}-${version}.tar.bz2";
68         inherit sha256;
69       };
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       '';
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
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 ']')
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 '"')
101         update-source-version aspellDicts.${language} "$latestVersion"
102       '';
104       meta = {
105         homepage = "http://ftp.gnu.org/gnu/aspell/dict/0index.html";
106       } // (args.meta or {});
108     } // lib.optionalAttrs (stdenv.isDarwin && elem language [ "is" "nb" ]) {
109       # tar: Cannot open: Illegal byte sequence
110       unpackPhase = ''
111         runHook preUnpack
113         tar -xf $src --strip-components=1 || true
115         runHook postUnpack
116       '';
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;
131   /* Function to compile txt dict files into Aspell dictionaries. */
132   buildTxtDict =
133     {langInputs ? [], ...}@args:
134     buildDict ({
135       propagatedUserEnvPackages = langInputs;
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)"
145         aspell-create() {
146           target=$1
147           shift
148           echo building $target
149           aspell create "$@" master ./$target.rws
150         }
152         words-only() {
153           awk -F'\t' '{print $1}' | sort | uniq
154         }
156         # drop comments
157         aspell-affix() {
158           words-only \
159             | grep -a -v '#' \
160             | aspell-create "$@"
161         }
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         }
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       '';
180       dontUnpack = true;
181     } // args);
183 in rec {
185   ### Languages
187   af = buildOfficialDict {
188     language = "af";
189     version = "0.50-0";
190     fullName = "Afrikaans";
191     filename = "aspell";
192     sha256 = "00p6k2ndi0gzfr5fkbvx4hkcpj223pidjvmxg0r384arrap00q4x";
193   };
195   am = buildOfficialDict {
196     language = "am";
197     version = "0.03-1";
198     fullName = "Amharic";
199     filename = "aspell6";
200     sha256 = "11ylp7gjq94wfacyawvp391lsq26rl1b84f268rjn7l7z0hxs9xz";
201   };
203   ar = buildOfficialDict {
204     language = "ar";
205     version = "1.2-0";
206     fullName = "Arabic";
207     filename = "aspell6";
208     sha256 = "1avw40bp8yi5bnkq64ihm2rldgw34lk89yz281q9bmndh95a47h4";
209   };
211   ast = buildOfficialDict {
212     language = "ast";
213     version = "0.01";
214     fullName = "Asturian";
215     filename = "aspell6";
216     sha256 = "14hg85mxcyvdigf96yvslk7f3v9ngdsxn85qpgwkg31k3k83xwj3";
217   };
219   az = buildOfficialDict {
220     language = "az";
221     version = "0.02-0";
222     fullName = "Azerbaijani";
223     filename = "aspell6";
224     sha256 = "1hs4h1jscpxf9f9iyk6mvjqsnhkf0yslkbjhjkasqqcx8pn7cc86";
225   };
227   be = buildOfficialDict {
228     language = "be";
229     version = "0.01";
230     fullName = "Belarusian";
231     filename = "aspell5";
232     sha256 = "1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm";
233   };
235   bg = buildOfficialDict {
236     language = "bg";
237     version = "4.1-0";
238     fullName = "Bulgarian";
239     filename = "aspell6";
240     sha256 = "1alacmgpfk0yrgq83y23d16fhav1bxmb98kg8d2a5r9bvh2h0mvl";
241   };
243   bn = buildOfficialDict {
244     language = "bn";
245     version = "0.01.1-1";
246     fullName = "Bengali";
247     filename = "aspell6";
248     sha256 = "1nc02jd67iggirwxnhdvlvaqm0xfyks35c4psszzj3dhzv29qgxh";
249   };
251   br = buildOfficialDict {
252     language = "br";
253     version = "0.50-2";
254     fullName = "Breton";
255     filename = "aspell";
256     sha256 = "0fradnm8424bkq9a9zhpl2132dk7y95xmw45sy1c0lx6rinjl4n2";
257   };
259   ca = buildOfficialDict {
260     language = "ca";
261     version = "2.1.5-1";
262     fullName = "Catalan";
263     filename = "aspell6";
264     sha256 = "1fb5y5kgvk25nlsfvc8cai978hg66x3pbp9py56pldc7vxzf9npb";
265   };
267   cs = buildOfficialDict {
268     language = "cs";
269     version = "20040614-1";
270     fullName = "Czech";
271     filename = "aspell6";
272     sha256 = "0rihj4hsw96pd9casvmpvw3r8040pfa28p1h73x4vyn20zwr3h01";
273   };
275   csb = buildOfficialDict {
276     language = "csb";
277     version = "0.02-0";
278     fullName = "Kashubian";
279     filename = "aspell6";
280     sha256 = "1612ypkm684wjvc7n081i87mlrrzif9simc7kyn177hfsl3ssrn1";
281   };
283   cy = buildOfficialDict {
284     language = "cy";
285     version = "0.50-3";
286     fullName = "Welsh";
287     filename = "aspell";
288     sha256 = "15vq601lzz1gi311xym4bv9lv1k21xcfn50jmzamw7h6f36rsffm";
289   };
291   da = buildOfficialDict {
292     language = "da";
293     version = "1.4.42-1";
294     fullName = "Danish";
295     filename = "aspell5";
296     sha256 = "1hfkmiyhgrx5lgrb2mffjbdn1hivrm73wcg7x0iid74p2yb0fjpp";
297   };
299   de = buildOfficialDict {
300     language = "de";
301     version = "20161207-7-0";
302     fullName = "German";
303     filename = "aspell6";
304     sha256 = "0wamclvp66xfmv5wff96v6gdlnfv4y8lx3f8wvxyzm5imwgms4n2";
305   };
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   };
315   el = buildOfficialDict {
316     language = "el";
317     version = "0.08-0";
318     fullName = "Greek";
319     filename = "aspell6";
320     sha256 = "1ljcc30zg2v2h3w5h5jr5im41mw8jbsgvvhdd2cii2yzi8d0zxja";
321   };
323   en = buildOfficialDict {
324     language = "en";
325     version = "2020.12.07-0";
326     fullName = "English";
327     filename = "aspell6";
328     sha256 = "1cwzqkm8gr1w51rpckwlvb43sb0b5nbwy7s8ns5vi250515773sc";
329   };
331   eo = buildOfficialDict {
332     language = "eo";
333     version = "2.1.20000225a-2";
334     fullName = "Esperanto";
335     filename = "aspell6";
336     sha256 = "09vf0mbiicbmyb4bwb7v7lgpabnylg0wy7m3hlhl5rjdda6x3lj1";
337   };
339   es = buildOfficialDict {
340     language = "es";
341     version = "1.11-2";
342     fullName = "Spanish";
343     filename = "aspell6";
344     sha256 = "1k5g328ac1hdpp6fsg57d8md6i0aqcwlszp3gbmp5706wyhpydmd";
345   };
347   et = buildOfficialDict {
348     language = "et";
349     version = "0.1.21-1";
350     fullName = "Estonian";
351     filename = "aspell6";
352     sha256 = "0jdjfa2fskirhnb70fy86xryp9r6gkl729ib8qcjmsma7nm5gs5i";
353   };
355   fa = buildOfficialDict {
356     language = "fa";
357     version = "0.11-0";
358     fullName = "Persian";
359     filename = "aspell6";
360     sha256 = "0nz1ybwv56q7nl9ip12hfmdch1vyyq2j55bkjcns13lshzm2cba8";
361   };
363   fi = buildOfficialDict {
364     language = "fi";
365     version = "0.7-0";
366     fullName = "Finnish";
367     filename = "aspell6";
368     sha256 = "07d5s08ba4dd89cmwy9icc01i6fjdykxlb9ravmhdrhi8mxz1mzq";
369   };
371   fo = buildOfficialDict {
372     language = "fo";
373     version = "0.2.16-1";
374     fullName = "Faroese";
375     filename = "aspell5";
376     sha256 = "022yz5lll20xrzizcyb7wksm3fgwklnvgnir5la5qkxv770dvq7p";
377   };
379   fr = buildOfficialDict {
380     language = "fr";
381     version = "0.50-3";
382     fullName = "French";
383     filename = "aspell";
384     sha256 = "14ffy9mn5jqqpp437kannc3559bfdrpk7r36ljkzjalxa53i0hpr";
385   };
387   fy = buildOfficialDict {
388     language = "fy";
389     version = "0.12-0";
390     fullName = "Frisian";
391     filename = "aspell6";
392     sha256 = "1almi6n4ni91d0rzrk8ig0473m9ypbwqmg56hchz76j51slwyirl";
393   };
395   ga = buildOfficialDict {
396     language = "ga";
397     version = "4.5-0";
398     fullName = "Irish";
399     filename = "aspell5";
400     sha256 = "0y869mmvfb3bzadfgajwa2rfb0xfhi6m9ydwgxkb9v2claydnps5";
401   };
403   gd = buildOfficialDict {
404     language = "gd";
405     version = "0.1.1-1";
406     fullName = "Scottish Gaelic";
407     filename = "aspell5";
408     sha256 = "0a89irv5d65j5m9sb0k36851x5rs0wij12gb2m6hv2nsfn5a05p3";
409   };
411   gl = buildOfficialDict {
412     language = "gl";
413     version = "0.5a-2";
414     fullName = "Galician";
415     filename = "aspell6";
416     sha256 = "12pwghmy18fcdvf9hvhb4q6shi339hb1kwxpkz0bhw0yjxjwzkdk";
417   };
419   grc = buildOfficialDict {
420     language = "grc";
421     version = "0.02-0";
422     fullName = "Ancient Greek";
423     filename = "aspell6";
424     sha256 = "1zxr8958v37v260fkqd4pg37ns5h5kyqm54hn1hg70wq5cz8h512";
425   };
427   gu = buildOfficialDict {
428     language = "gu";
429     version = "0.03-0";
430     fullName = "Gujarati";
431     filename = "aspell6";
432     sha256 = "04c38jnl74lpj2jhjz4zpqbs2623vwc71m6wc5h4b1karid14b23";
433   };
435   gv = buildOfficialDict {
436     language = "gv";
437     version = "0.50-0";
438     fullName = "Manx Gaelic";
439     filename = "aspell";
440     sha256 = "1rknf4yaw9s29c77sdzg98nhnmjwpicdb69igmz1n768npz2drmv";
441   };
443   he = buildOfficialDict {
444     language = "he";
445     version = "1.0-0";
446     fullName = "Hebrew";
447     filename = "aspell6";
448     sha256 = "13bhbghx5b8g0119g3wxd4n8mlf707y41vlf59irxjj0kynankfn";
449   };
451   hi = buildOfficialDict {
452     language = "hi";
453     version = "0.02-0";
454     fullName = "Hindi";
455     filename = "aspell6";
456     sha256 = "0drs374qz4419zx1lf2k281ydxf2750jk5ailafj1x0ncz27h1ys";
457   };
459   hil = buildOfficialDict {
460     language = "hil";
461     version = "0.11-0";
462     fullName = "Hiligaynon";
463     filename = "aspell5";
464     sha256 = "1s482fsfhzic9qa80al4418q3ni3gfn2bkwkd2y46ydrs17kf2jp";
465   };
467   hr = buildOfficialDict {
468     language = "hr";
469     version = "0.51-0";
470     fullName = "Croatian";
471     filename = "aspell";
472     sha256 = "09aafyf1vqhaxvcf3jfzf365k394b5pf0iivsr2ix5npah1h7i1a";
473   };
475   hsb = buildOfficialDict {
476     language = "hsb";
477     version = "0.02-0";
478     fullName = "Upper Sorbian";
479     filename = "aspell6";
480     sha256 = "0bi2vhz7n1vmg43wbbh935pmzihv80iyz9z65j94lxf753j2m7wd";
481   };
483   hu = buildOfficialDict {
484     language = "hu";
485     version = "0.99.4.2-0";
486     fullName = "Hungarian";
487     filename = "aspell6";
488     sha256 = "1d9nybip2k1dz69zly3iv0npbi3yxgfznh1py364nxzrbjsafd9k";
489   };
491   hus = buildOfficialDict {
492     language = "hus";
493     version = "0.03-1";
494     fullName = "Huastec";
495     filename = "aspell6";
496     sha256 = "09glipfpkz9xch17z11zw1yn2z7jx1f2svfmjn9l6wm1s5qz6a3d";
497   };
499   hy = buildOfficialDict {
500     language = "hy";
501     version = "0.10.0-0";
502     fullName = "Armenian";
503     filename = "aspell6";
504     sha256 = "1w5wq8lfl2xp1nid30b1j5qmya4vjyidq0vpr4y3gf53jc08vsid";
505   };
507   ia = buildOfficialDict {
508     language = "ia";
509     version = "0.50-1";
510     fullName = "Interlingua";
511     filename = "aspell";
512     sha256 = "0bqcpgsa72pga24fv4fkw38b4qqdvqsw97jvzvw7q03dc1cwp5sp";
513   };
515   id = buildOfficialDict {
516     language = "id";
517     version = "1.2-0";
518     fullName = "Indonesian";
519     filename = "aspell5";
520     sha256 = "023knfg0q03f7y5w6xnwa1kspnrcvcnky8xvdms93n2850414faj";
521   };
523   is = buildOfficialDict {
524     language = "is";
525     version = "0.51.1-0";
526     fullName = "Icelandic";
527     filename = "aspell";
528     sha256 = "1mp3248lhbr13cj7iq9zs7h5ix0dcwlprp5cwrkcwafrv8lvsd9h";
529   };
531   it = buildOfficialDict {
532     language = "it";
533     version = "2.2_20050523-0";
534     fullName = "Italian";
535     filename = "aspell6";
536     sha256 = "1gdf7bc1a0kmxsmphdqq8pl01h667mjsj6hihy6kqy14k5qdq69v";
537   };
539   kn = buildOfficialDict {
540     language = "kn";
541     version = "0.01-1";
542     fullName = "Kannada";
543     filename = "aspell6";
544     sha256 = "10sk0wx4x4ds1403kf9dqxv9yjvh06w8qqf4agx57y0jlws0n0fb";
545   };
547   ku = buildOfficialDict {
548     language = "ku";
549     version = "0.20-1";
550     fullName = "Kurdi";
551     filename = "aspell5";
552     sha256 = "09va98krfbgdaxl101nmd85j3ysqgg88qgfcl42c07crii0pd3wn";
553   };
555   ky = buildOfficialDict {
556     language = "ky";
557     version = "0.01-0";
558     fullName = "Kirghiz";
559     filename = "aspell6";
560     sha256 = "0kzv2syjnnn6pnwx0d578n46hg2l0j62977al47y6wabnhjjy3z1";
561   };
563   la = buildOfficialDict {
564     language = "la";
565     version = "20020503-0";
566     fullName = "Latin";
567     filename = "aspell6";
568     sha256 = "1199inwi16dznzl087v4skn66fl7h555hi2palx6s1f3s54b11nl";
569   };
571   lt = buildOfficialDict {
572     language = "lt";
573     version = "1.2.1-0";
574     fullName = "Lithuanian";
575     filename = "aspell6";
576     sha256 = "1asjck911l96q26zj36lmz0jp4b6pivvrf3h38zgc8lc85p3pxgn";
577   };
579   lv = buildOfficialDict {
580     language = "lv";
581     version = "0.5.5-1";
582     fullName = "Latvian";
583     filename = "aspell6";
584     sha256 = "12pvs584a6437ijndggdqpp5s7d0w607cimpkxsjwasnx83f4c1w";
585   };
587   mg = buildOfficialDict {
588     language = "mg";
589     version = "0.03-0";
590     fullName = "Malagasy";
591     filename = "aspell5";
592     sha256 = "0hdhbk9b5immjp8l5h4cy82gwgsqzcqbb0qsf7syw333w4rgi0ji";
593   };
595   mi = buildOfficialDict {
596     language = "mi";
597     version = "0.50-0";
598     fullName = "Maori";
599     filename = "aspell";
600     sha256 = "12bxplpd348yx8d2q8qvahi9dlp7qf28qmanzhziwc7np8rixvmy";
601   };
603   mk = buildOfficialDict {
604     language = "mk";
605     version = "0.50-0";
606     fullName = "Macedonian";
607     filename = "aspell";
608     sha256 = "0wcr9n882xi5b7a7ln1hnhq4vfqd5gpqqp87v01j0gb7zf027z0m";
609   };
611   ml = buildOfficialDict {
612     language = "ml";
613     version = "0.03-1";
614     fullName = "Malayalam";
615     filename = "aspell6";
616     sha256 = "1zcn4114gwia085fkz77qk13z29xrbp53q2qvgj2cvcbalg5bkg4";
617   };
619   mn = buildOfficialDict {
620     language = "mn";
621     version = "0.06-2";
622     fullName = "Mongolian";
623     filename = "aspell6";
624     sha256 = "150j9y5c9pw80fwp5rzl5q31q9vjbxixaqljkfwxjb5q93fnw6rg";
625   };
627   mr = buildOfficialDict {
628     language = "mr";
629     version = "0.10-0";
630     fullName = "Marathi";
631     filename = "aspell6";
632     sha256 = "0cvgb2l40sppqbi842ivpznsh2xzp1d4hxc371dll8z0pr05m8yk";
633   };
635   ms = buildOfficialDict {
636     language = "ms";
637     version = "0.50-0";
638     fullName = "Malay";
639     filename = "aspell";
640     sha256 = "0vr4vhipcfhsxqfs8dim2ph7iiixn22gmlmlb375bx5hgd9y7i1w";
641   };
643   mt = buildOfficialDict {
644     language = "mt";
645     version = "0.50-0";
646     fullName = "Maltese";
647     filename = "aspell";
648     sha256 = "1d2rl1nlfjq6rfywblvx8m88cyy2x0mzc0mshzbgw359c2nwl3z0";
649   };
651   nb = buildOfficialDict {
652     language = "nb";
653     version = "0.50.1-0";
654     fullName = "Norwegian Bokmal";
655     filename = "aspell";
656     sha256 = "12i2bmgdnlkzfinb20j2a0j4a20q91a9j8qpq5vgabbvc65nwx77";
657   };
659   nds = buildOfficialDict {
660     language = "nds";
661     version = "0.01-0";
662     fullName = "Low Saxon";
663     filename = "aspell6";
664     sha256 = "1nkjhwzn45dizi89d19q4bqyd87cim8xyrgr655fampgkn31wf6f";
665   };
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   };
679   nn = buildOfficialDict {
680     language = "nn";
681     version = "0.50.1-1";
682     fullName = "Norwegian Nynorsk";
683     filename = "aspell";
684     sha256 = "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc";
685   };
687   ny = buildOfficialDict {
688     language = "ny";
689     version = "0.01-0";
690     fullName = "Chichewa";
691     filename = "aspell5";
692     sha256 = "0gjb92vcg60sfgvrm2f6i89sfkgb179ahvwlgs649fx3dc7rfvqp";
693   };
695   or = buildOfficialDict {
696     language = "or";
697     version = "0.03-1";
698     fullName = "Oriya";
699     filename = "aspell6";
700     sha256 = "0kzj9q225z0ccrlbkijsrafy005pbjy14qcnxb6p93ciz1ls7zyn";
701   };
703   pa = buildOfficialDict {
704     language = "pa";
705     version = "0.01-1";
706     fullName = "Punjabi";
707     filename = "aspell6";
708     sha256 = "0if93zk10pyrs38wwj3vpcdm01h51m5z9gm85h3jxrpgqnqspwy7";
709   };
711   pl = buildOfficialDict {
712     language = "pl";
713     version = "6.0_20061121-0";
714     fullName = "Polish";
715     filename = "aspell6";
716     sha256 = "0kap4kh6bqbb22ypja1m5z3krc06vv4n0hakiiqmv20anzy42xq1";
717   };
719   pt_BR = buildOfficialDict {
720     language = "pt_BR";
721     version = "20131030-12-0";
722     fullName = "Brazilian Portuguese";
723     filename = "aspell6";
724     sha256 = "1xqlpk21s93c6blkdnpk7l62q9fxjvzdv2x86chl8p2x1gdrj3gb";
725   };
727   pt_PT = buildOfficialDict {
728     language = "pt_PT";
729     version = "20190329-1-0";
730     fullName = "Portuguese";
731     filename = "aspell6";
732     sha256 = "0ld0d0ily4jqifjfsxfv4shbicz6ymm2gk56fq9gbzra1j4qnw75";
733   };
735   qu = buildOfficialDict {
736     language = "qu";
737     version = "0.02-0";
738     fullName = "Quechua";
739     filename = "aspell6";
740     sha256 = "009z0zsvzq7r3z3m30clyibs94v77b92h5lmzmzxlns2p0lpd5w0";
741   };
743   ro = buildOfficialDict {
744     language = "ro";
745     version = "3.3-2";
746     fullName = "Romanian";
747     filename = "aspell5";
748     sha256 = "0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk";
749   };
751   ru = buildOfficialDict {
752     language = "ru";
753     version = "0.99f7-1";
754     fullName = "Russian";
755     filename = "aspell6";
756     sha256 = "0ip6nq43hcr7vvzbv4lwwmlwgfa60hrhsldh9xy3zg2prv6bcaaw";
757   };
759   rw = buildOfficialDict {
760     language = "rw";
761     version = "0.50-0";
762     fullName = "Kinyarwanda";
763     filename = "aspell";
764     sha256 = "10gh8g747jbrvfk2fn3pjxy1nhcfdpwgmnvkmrp4nd1k1qp101il";
765   };
767   sc = buildOfficialDict {
768     language = "sc";
769     version = "1.0";
770     fullName = "Sardinian";
771     filename = "aspell5";
772     sha256 = "0hl7prh5rccsyljwrv3m1hjcsphyrrywk2qvnj122irbf4py46jr";
773   };
775   sk = buildOfficialDict {
776     language = "sk";
777     version = "2.01-2";
778     fullName = "Slovak";
779     filename = "aspell6";
780     sha256 = "19k0m1v5pcf7xr4lxgjkzqkdlks8nyb13bvi1n7521f3i4lhma66";
781   };
783   sl = buildOfficialDict {
784     language = "sl";
785     version = "0.50-0";
786     fullName = "Slovenian";
787     filename = "aspell";
788     sha256 = "1l9kc5g35flq8kw9jhn2n0bjb4sipjs4qkqzgggs438kywkx2rp5";
789   };
791   sr = buildOfficialDict {
792     language = "sr";
793     version = "0.02";
794     fullName = "Serbian";
795     filename = "aspell6";
796     sha256 = "12cj01p4nj80cpf7m3s4jsaf0rsfng7s295j9jfchcq677xmhpkh";
797   };
799   sv = buildOfficialDict {
800     language = "sv";
801     version = "0.51-0";
802     fullName = "Swedish";
803     filename = "aspell";
804     sha256 = "02jwkjhr32kvyibnyzgx3smbnm576jwdzg3avdf6zxwckhy5fw4v";
805   };
807   sw = buildOfficialDict {
808     language = "sw";
809     version = "0.50-0";
810     fullName = "Swahili";
811     filename = "aspell";
812     sha256 = "15zjh7hdj2b4dgm5bc12w1ims9q357p1q3gjalspnyn5gl81zmby";
813   };
815   ta = buildOfficialDict {
816     language = "ta";
817     version = "20040424-1";
818     fullName = "Tamil";
819     filename = "aspell6";
820     sha256 = "0sj8ygjsyvnr93cs6324y7az7k2vyw7rjxdc9vnm7z60lbqm5xaj";
821   };
823   te = buildOfficialDict {
824     language = "te";
825     version = "0.01-2";
826     fullName = "Telugu";
827     filename = "aspell6";
828     sha256 = "0pgcgxz7dz34zxp9sb85jjzbg3ky6il5wmhffz6ayrbsfn5670in";
829   };
831   tet = buildOfficialDict {
832     language = "tet";
833     version = "0.1.1";
834     fullName = "Tetum";
835     filename = "aspell5";
836     sha256 = "17n0y4fhjak47j9qnqf4m4z6zra6dn72rwhp7ig0hhlgqk4ldmcx";
837   };
839   tk = buildOfficialDict {
840     language = "tk";
841     version = "0.01-0";
842     fullName = "Turkmen";
843     filename = "aspell5";
844     sha256 = "02vad4jqhr0xpzqi5q5z7z0xxqccbn8j0c5dhpnm86mnr84l5wl6";
845   };
847   tl = buildOfficialDict {
848     language = "tl";
849     version = "0.02-1";
850     fullName = "Tagalog";
851     filename = "aspell5";
852     sha256 = "1kca6k7qnpfvvwjnq5r1n242payqsjy96skmw78m7ww6d0n5vdj8";
853   };
855   tn = buildOfficialDict {
856     language = "tn";
857     version = "1.0.1-0";
858     fullName = "Setswana";
859     filename = "aspell5";
860     sha256 = "0q5x7c6z88cn0kkpk7q1craq34g4g03v8x3xcj5a5jia3l7c5821";
861   };
863   tr = buildOfficialDict {
864     language = "tr";
865     version = "0.50-0";
866     fullName = "Turkish";
867     filename = "aspell";
868     sha256 = "0jpvpm96ga7s7rmsm6rbyrrr22b2dicxv2hy7ysv5y7bbq757ihb";
869   };
871   uk = buildOfficialDict {
872     language = "uk";
873     version = "1.4.0-0";
874     fullName = "Ukrainian";
875     filename = "aspell6";
876     sha256 = "137i4njvnslab6l4s291s11xijr5jsy75lbdph32f9y183lagy9m";
877   };
879   uz = buildOfficialDict {
880     language = "uz";
881     version = "0.6-0";
882     fullName = "Uzbek";
883     filename = "aspell6";
884     sha256 = "0sg3wlyply1idpq5ypyj7kgnaadaiskci1sqs811yhg2gzyc3092";
885   };
887   vi = buildOfficialDict {
888     language = "vi";
889     version = "0.01.1-1";
890     fullName = "Vietnamese";
891     filename = "aspell6";
892     sha256 = "05vwgvf1cj45azhflywx69javqdvqd1f20swrc2d3c32pd9mvn1w";
893   };
895   wa = buildOfficialDict {
896     language = "wa";
897     version = "0.50-0";
898     fullName = "Walloon";
899     filename = "aspell";
900     sha256 = "1r1zwz7xkx40dga9vf5wc9ja3jwk1dkpcr1kaa7wryvslf5al5ss";
901   };
903   yi = buildOfficialDict {
904     language = "yi";
905     version = "0.01.1-1";
906     fullName = "Yiddish";
907     filename = "aspell6";
908     sha256 = "0mi842l4038bx3ll2wx9nz44nqrg1x46h5b02zigi1hbbddd6ycq";
909   };
911   zu = buildOfficialDict {
912     language = "zu";
913     version = "0.50-0";
914     fullName = "Zulu";
915     filename = "aspell";
916     sha256 = "15k7gaxrnqnssdyk9l6g27dq317dqp9jz5yzafd25ri01g6mb8iz";
917   };
919   ### Jargons
921   en-computers = buildTxtDict {
922     shortName = "en-computers";
923     fullName = "English Computer Jargon";
925     src = fetchurl {
926       url = "https://mrsatterly.com/computer.dic";
927       sha256 = "1vzk7cdvcm9r1c6mgxpabrdcpvghdv9mjmnf6iq5wllcif5nsw2b";
928     };
930     langInputs = [ en ];
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";
939     meta = {
940       homepage = "https://mrsatterly.com/spelling.html";
941     };
942   };
944   en-science = buildTxtDict {
945     shortName = "en-science";
946     fullName = "English Scientific Jargon";
948     src1 = fetchurl {
949       url = "http://jpetrie.net/wp-content/uploads/custom_scientific_US.txt";
950       sha256 = "1nf4py2mg0mlv9s5a7had2wn29z2v6bcca0fs6rbpdn4nqc4s7dm";
951     };
953     src2 = fetchurl {
954       url = "http://jpetrie.net/wp-content/uploads/custom_scientific_UK.txt";
955       sha256 = "0f88il1ds6qazy1ghxviqcwsywrbf6pzl2lmzf4f3qvhdfb6f1y0";
956     };
958     langInputs = [ en ];
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";
968     meta = {
969       homepage = "http://www.jpetrie.net/scientific-word-list-for-spell-checkersspelling-dictionaries/";
970     };
972   };