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