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