diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/aspell')
5 files changed, 1111 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/aspell/aspell-with-dicts.nix b/nixpkgs/pkgs/development/libraries/aspell/aspell-with-dicts.nix new file mode 100644 index 000000000000..88b1302271fb --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/aspell/aspell-with-dicts.nix @@ -0,0 +1,36 @@ +# Create a derivation that contains aspell and selected dictionaries. +# Composition is done using `pkgs.buildEnv`. +# Beware of that `ASPELL_CONF` used by this derivation is not always +# respected by libaspell (#28815) and in some cases, when used as +# dependency by another derivation, the passed dictionaries will be +# missing. However, invoking aspell directly should be fine. + +{ aspell +, aspellDicts +, makeWrapper +, buildEnv +}: + +f: + +let + # Dictionaries we want + dicts = f aspellDicts; + +in buildEnv { + name = "aspell-env"; + buildInputs = [ makeWrapper ]; + paths = [ aspell ] ++ dicts; + postBuild = '' + # Construct wrappers in /bin + unlink "$out/bin" + mkdir -p "$out/bin" + pushd "${aspell}/bin" + for prg in *; do + if [ -f "$prg" ]; then + makeWrapper "${aspell}/bin/$prg" "$out/bin/$prg" --set ASPELL_CONF "dict-dir $out/lib/aspell" + fi + done + popd + ''; +} diff --git a/nixpkgs/pkgs/development/libraries/aspell/clang.patch b/nixpkgs/pkgs/development/libraries/aspell/clang.patch new file mode 100644 index 000000000000..c4cfa426588c --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/aspell/clang.patch @@ -0,0 +1,18 @@ +--- interfaces/cc/aspell.h 2013-10-13 20:29:33.000000000 +0200 ++++ interfaces/cc/aspell.h 2013-10-13 20:30:01.000000000 +0200 +@@ -237,6 +237,7 @@ + /******************************** errors ********************************/ + + ++#ifndef __cplusplus + extern const struct AspellErrorInfo * const aerror_other; + extern const struct AspellErrorInfo * const aerror_operation_not_supported; + extern const struct AspellErrorInfo * const aerror_cant_copy; +@@ -322,6 +323,7 @@ + extern const struct AspellErrorInfo * const aerror_bad_magic; + extern const struct AspellErrorInfo * const aerror_expression; + extern const struct AspellErrorInfo * const aerror_invalid_expression; ++#endif + + + /******************************* speller *******************************/ diff --git a/nixpkgs/pkgs/development/libraries/aspell/data-dirs-from-nix-profiles.patch b/nixpkgs/pkgs/development/libraries/aspell/data-dirs-from-nix-profiles.patch new file mode 100644 index 000000000000..c19827ba93e4 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/aspell/data-dirs-from-nix-profiles.patch @@ -0,0 +1,38 @@ +diff --git a/common/info.cpp b/common/info.cpp +index 8291cc7..6216326 100644 +--- a/common/info.cpp ++++ b/common/info.cpp +@@ -36,6 +36,7 @@ + #include "strtonum.hpp" + #include "lock.hpp" + #include "string_map.hpp" ++#include "file_util.hpp" + + #include "gettext.h" + +@@ -495,6 +496,25 @@ namespace acommon { + lst.clear(); + lst.add(config->retrieve("data-dir")); + lst.add(config->retrieve("dict-dir")); ++ if (config->lookup("data-dir") == NULL && config->lookup("dict-dir") == NULL) { ++ const char* cprofiles = getenv("NIX_PROFILES"); ++ if (cprofiles != NULL) { ++ char* profiles = strdup(cprofiles); ++ char* profile = profiles; ++ char* end = profile; ++ while (*end != '\0') { ++ if (*end == ' ') { ++ *end = '\0'; ++ lst.add(add_possible_dir(profile, "lib/aspell")); ++ profile = ++end; ++ } else { ++ ++end; ++ } ++ } ++ lst.add(add_possible_dir(profile, "lib/aspell")); ++ free(profiles); ++ } ++ } + } + + DictExt::DictExt(ModuleInfo * m, const char * e) diff --git a/nixpkgs/pkgs/development/libraries/aspell/default.nix b/nixpkgs/pkgs/development/libraries/aspell/default.nix new file mode 100644 index 000000000000..777bad1e5a53 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/aspell/default.nix @@ -0,0 +1,65 @@ +{ lib, stdenv, fetchurl, fetchpatch, fetchzip, perl +, searchNixProfiles ? true +}: + +let + + # Source for u-deva.cmap and u-deva.cset: use the Marathi + # dictionary like Debian does. + devaMapsSource = fetchzip { + name = "aspell-u-deva"; + url = "https://ftp.gnu.org/gnu/aspell/dict/mr/aspell6-mr-0.10-0.tar.bz2"; + sha256 = "1v8cdl8x2j1d4vbvsq1xrqys69bbccd6mi03fywrhkrrljviyri1"; + }; + +in + +stdenv.mkDerivation rec { + pname = "aspell"; + version = "0.60.8"; + + src = fetchurl { + url = "mirror://gnu/aspell/aspell-${version}.tar.gz"; + sha256 = "1wi60ankalmh8ds7nplz434jd7j94gdvbahdwsr539rlad8pxdzr"; + }; + + patches = [ + (fetchpatch { + # objstack: assert that the alloc size will fit within a chunk + name = "CVE-2019-25051.patch"; + url = "https://github.com/gnuaspell/aspell/commit/0718b375425aad8e54e1150313b862e4c6fd324a.patch"; + sha256 = "03z259xrk41x3j190gaprf3mqysyfgh3a04rjmch3h625vj95x39"; + }) + ] ++ lib.optional searchNixProfiles ./data-dirs-from-nix-profiles.patch; + + postPatch = '' + patch interfaces/cc/aspell.h < ${./clang.patch} + ''; + + nativeBuildInputs = [ perl ]; + buildInputs = [ perl ]; + + doCheck = true; + + preConfigure = '' + configureFlagsArray=( + --enable-pkglibdir=$out/lib/aspell + --enable-pkgdatadir=$out/lib/aspell + ); + ''; + + # Include u-deva.cmap and u-deva.cset in the aspell package + # to avoid conflict between 'mr' and 'hi' dictionaries as they + # both include those files. + postInstall = '' + cp ${devaMapsSource}/u-deva.{cmap,cset} $out/lib/aspell/ + ''; + + meta = { + description = "Spell checker for many languages"; + homepage = "http://aspell.net/"; + license = lib.licenses.lgpl2Plus; + maintainers = [ ]; + platforms = with lib.platforms; all; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/aspell/dictionaries.nix b/nixpkgs/pkgs/development/libraries/aspell/dictionaries.nix new file mode 100644 index 000000000000..c0d9d87aa422 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/aspell/dictionaries.nix @@ -0,0 +1,954 @@ +{lib, stdenv, fetchurl, aspell, which, writeScript}: + +with lib; + +/* HOWTO: + + * Add some of these to your profile or systemPackages. + + ~~~~ + environment.systemPackages = [ + aspell + aspellDicts.en + aspellDicts.en-computers + aspellDicts.en-science + ]; + ~~~~ + + * Rebuild and switch to the new profile. + * Add something like + + ~~~~ + master en_US + extra-dicts en-computers.rws + add-extra-dicts en_US-science.rws + ~~~~ + + to `/etc/aspell.conf` or `~/.aspell.conf`. + * Check that `aspell -a` starts without errors. + * (optional) Check your config with `aspell dump config | grep -vE '^(#|$)'`. + * Enjoy. + +*/ + +let + + /* Function to compile an Aspell dictionary. Fortunately, they all + build in the exact same way. */ + buildDict = + {shortName, fullName, ...}@args: + + stdenv.mkDerivation ({ + name = "aspell-dict-${shortName}"; + + strictDeps = true; + + nativeBuildInputs = [ aspell which ]; + + dontAddPrefix = true; + + configurePlatforms = [ ]; + + preBuild = "makeFlagsArray=(dictdir=$out/lib/aspell datadir=$out/lib/aspell)"; + + meta = { + description = "Aspell dictionary for ${fullName}"; + platforms = lib.platforms.all; + } // (args.meta or {}); + } // removeAttrs args [ "meta" ]); + + + buildOfficialDict = + {language, version, filename, fullName, sha256, ...}@args: + let buildArgs = { + shortName = "${language}-${version}"; + + src = fetchurl { + url = "mirror://gnu/aspell/dict/${language}/${filename}-${language}-${version}.tar.bz2"; + inherit sha256; + }; + + /* Remove any instances of u-deva.cmap and u-deva.cset since + they are included in the main aspell package and can + cause conflicts otherwise. */ + postInstall = '' + rm -f $out/lib/aspell/u-deva.{cmap,cset} + ''; + + passthru.updateScript = writeScript "update-aspellDict-${language}" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p nix curl gnused common-updater-scripts + set -eu -o pipefail + + # List tarballs in the dictionary's subdirectory via HTTPS and + # the simple list method of Apache's mod_autoindex. + # + # Catalan dictionary has an exception where an earlier version + # compares as newer because the versioning scheme has changed. + versions=$( + echo '['; + curl -s 'https://ftp.gnu.org/gnu/aspell/dict/${language}/?F=0' | \ + sed -r 's/.* href="${filename}-${language}-([A-Za-z0-9_+.-]+)\.tar\.bz2".*/"\1"/;t;d' | \ + if [ '${language}' = "ca" ]; then grep -v 20040130-1; else cat; fi; \ + echo ']') + + # Sort versions in descending order using Nix's and take the first as the latest. + sortVersions="(with builtins; head (sort (a: b: compareVersions a b > 0) $versions))" + # nix-instantiate outputs Nix strings (with quotes), so remove them to get + # a result similar to `nix eval --raw`. + latestVersion=$(nix-instantiate --eval --expr "$sortVersions" | tr -d '"') + + update-source-version aspellDicts.${language} "$latestVersion" + ''; + + meta = { + homepage = "http://ftp.gnu.org/gnu/aspell/dict/0index.html"; + } // (args.meta or {}); + + } // removeAttrs args [ "language" "filename" "sha256" "meta" ]; + in buildDict buildArgs; + + /* Function to compile txt dict files into Aspell dictionaries. */ + buildTxtDict = + {langInputs ? [], ...}@args: + buildDict ({ + propagatedUserEnvPackages = langInputs; + + preBuild = '' + # Aspell can't handle multiple data-dirs + # Copy everything we might possibly need + ${concatMapStringsSep "\n" (p: '' + cp -a ${p}/lib/aspell/* . + '') ([ aspell ] ++ langInputs)} + export ASPELL_CONF="data-dir $(pwd)" + + aspell-create() { + target=$1 + shift + echo building $target + aspell create "$@" master ./$target.rws + } + + words-only() { + awk -F'\t' '{print $1}' | sort | uniq + } + + # drop comments + aspell-affix() { + words-only \ + | grep -a -v '#' \ + | aspell-create "$@" + } + + # Hack: drop comments and words with affixes + aspell-plain() { + words-only \ + | grep -a -v '#' \ + | grep -a -v '/' \ + | aspell-create "$@" + } + + aspell-install() { + install -d $out/lib/aspell + for a in "$@"; do + echo installing $a + install -t $out/lib/aspell $a.rws + done + } + ''; + + dontUnpack = true; + } // args); + +in rec { + + ### Languages + + af = buildOfficialDict { + language = "af"; + version = "0.50-0"; + fullName = "Afrikaans"; + filename = "aspell"; + sha256 = "00p6k2ndi0gzfr5fkbvx4hkcpj223pidjvmxg0r384arrap00q4x"; + }; + + am = buildOfficialDict { + language = "am"; + version = "0.03-1"; + fullName = "Amharic"; + filename = "aspell6"; + sha256 = "11ylp7gjq94wfacyawvp391lsq26rl1b84f268rjn7l7z0hxs9xz"; + }; + + ar = buildOfficialDict { + language = "ar"; + version = "1.2-0"; + fullName = "Arabic"; + filename = "aspell6"; + sha256 = "1avw40bp8yi5bnkq64ihm2rldgw34lk89yz281q9bmndh95a47h4"; + }; + + ast = buildOfficialDict { + language = "ast"; + version = "0.01"; + fullName = "Asturian"; + filename = "aspell6"; + sha256 = "14hg85mxcyvdigf96yvslk7f3v9ngdsxn85qpgwkg31k3k83xwj3"; + }; + + az = buildOfficialDict { + language = "az"; + version = "0.02-0"; + fullName = "Azerbaijani"; + filename = "aspell6"; + sha256 = "1hs4h1jscpxf9f9iyk6mvjqsnhkf0yslkbjhjkasqqcx8pn7cc86"; + }; + + be = buildOfficialDict { + language = "be"; + version = "0.01"; + fullName = "Belarusian"; + filename = "aspell5"; + sha256 = "1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm"; + }; + + bg = buildOfficialDict { + language = "bg"; + version = "4.1-0"; + fullName = "Bulgarian"; + filename = "aspell6"; + sha256 = "1alacmgpfk0yrgq83y23d16fhav1bxmb98kg8d2a5r9bvh2h0mvl"; + }; + + bn = buildOfficialDict { + language = "bn"; + version = "0.01.1-1"; + fullName = "Bengali"; + filename = "aspell6"; + sha256 = "1nc02jd67iggirwxnhdvlvaqm0xfyks35c4psszzj3dhzv29qgxh"; + }; + + br = buildOfficialDict { + language = "br"; + version = "0.50-2"; + fullName = "Breton"; + filename = "aspell"; + sha256 = "0fradnm8424bkq9a9zhpl2132dk7y95xmw45sy1c0lx6rinjl4n2"; + }; + + ca = buildOfficialDict { + language = "ca"; + version = "2.1.5-1"; + fullName = "Catalan"; + filename = "aspell6"; + sha256 = "1fb5y5kgvk25nlsfvc8cai978hg66x3pbp9py56pldc7vxzf9npb"; + }; + + cs = buildOfficialDict { + language = "cs"; + version = "20040614-1"; + fullName = "Czech"; + filename = "aspell6"; + sha256 = "0rihj4hsw96pd9casvmpvw3r8040pfa28p1h73x4vyn20zwr3h01"; + }; + + csb = buildOfficialDict { + language = "csb"; + version = "0.02-0"; + fullName = "Kashubian"; + filename = "aspell6"; + sha256 = "1612ypkm684wjvc7n081i87mlrrzif9simc7kyn177hfsl3ssrn1"; + }; + + cy = buildOfficialDict { + language = "cy"; + version = "0.50-3"; + fullName = "Welsh"; + filename = "aspell"; + sha256 = "15vq601lzz1gi311xym4bv9lv1k21xcfn50jmzamw7h6f36rsffm"; + }; + + da = buildOfficialDict { + language = "da"; + version = "1.4.42-1"; + fullName = "Danish"; + filename = "aspell5"; + sha256 = "1hfkmiyhgrx5lgrb2mffjbdn1hivrm73wcg7x0iid74p2yb0fjpp"; + }; + + de = buildOfficialDict { + language = "de"; + version = "20161207-7-0"; + fullName = "German"; + filename = "aspell6"; + sha256 = "0wamclvp66xfmv5wff96v6gdlnfv4y8lx3f8wvxyzm5imwgms4n2"; + }; + + de-alt = buildOfficialDict { + language = "de-alt"; + version = "2.1-1"; + fullName = "German - Old Spelling"; + filename = "aspell6"; + sha256 = "0wwc2l29svv3fv041fh6vfa5m3hi9q9pkbxibzq1ysrsfin3rl9n"; + }; + + el = buildOfficialDict { + language = "el"; + version = "0.08-0"; + fullName = "Greek"; + filename = "aspell6"; + sha256 = "1ljcc30zg2v2h3w5h5jr5im41mw8jbsgvvhdd2cii2yzi8d0zxja"; + }; + + en = buildOfficialDict { + language = "en"; + version = "2020.12.07-0"; + fullName = "English"; + filename = "aspell6"; + sha256 = "1cwzqkm8gr1w51rpckwlvb43sb0b5nbwy7s8ns5vi250515773sc"; + }; + + eo = buildOfficialDict { + language = "eo"; + version = "2.1.20000225a-2"; + fullName = "Esperanto"; + filename = "aspell6"; + sha256 = "09vf0mbiicbmyb4bwb7v7lgpabnylg0wy7m3hlhl5rjdda6x3lj1"; + }; + + es = buildOfficialDict { + language = "es"; + version = "1.11-2"; + fullName = "Spanish"; + filename = "aspell6"; + sha256 = "1k5g328ac1hdpp6fsg57d8md6i0aqcwlszp3gbmp5706wyhpydmd"; + }; + + et = buildOfficialDict { + language = "et"; + version = "0.1.21-1"; + fullName = "Estonian"; + filename = "aspell6"; + sha256 = "0jdjfa2fskirhnb70fy86xryp9r6gkl729ib8qcjmsma7nm5gs5i"; + }; + + fa = buildOfficialDict { + language = "fa"; + version = "0.11-0"; + fullName = "Persian"; + filename = "aspell6"; + sha256 = "0nz1ybwv56q7nl9ip12hfmdch1vyyq2j55bkjcns13lshzm2cba8"; + }; + + fi = buildOfficialDict { + language = "fi"; + version = "0.7-0"; + fullName = "Finnish"; + filename = "aspell6"; + sha256 = "07d5s08ba4dd89cmwy9icc01i6fjdykxlb9ravmhdrhi8mxz1mzq"; + }; + + fo = buildOfficialDict { + language = "fo"; + version = "0.2.16-1"; + fullName = "Faroese"; + filename = "aspell5"; + sha256 = "022yz5lll20xrzizcyb7wksm3fgwklnvgnir5la5qkxv770dvq7p"; + }; + + fr = buildOfficialDict { + language = "fr"; + version = "0.50-3"; + fullName = "French"; + filename = "aspell"; + sha256 = "14ffy9mn5jqqpp437kannc3559bfdrpk7r36ljkzjalxa53i0hpr"; + }; + + fy = buildOfficialDict { + language = "fy"; + version = "0.12-0"; + fullName = "Frisian"; + filename = "aspell6"; + sha256 = "1almi6n4ni91d0rzrk8ig0473m9ypbwqmg56hchz76j51slwyirl"; + }; + + ga = buildOfficialDict { + language = "ga"; + version = "4.5-0"; + fullName = "Irish"; + filename = "aspell5"; + sha256 = "0y869mmvfb3bzadfgajwa2rfb0xfhi6m9ydwgxkb9v2claydnps5"; + }; + + gd = buildOfficialDict { + language = "gd"; + version = "0.1.1-1"; + fullName = "Scottish Gaelic"; + filename = "aspell5"; + sha256 = "0a89irv5d65j5m9sb0k36851x5rs0wij12gb2m6hv2nsfn5a05p3"; + }; + + gl = buildOfficialDict { + language = "gl"; + version = "0.5a-2"; + fullName = "Galician"; + filename = "aspell6"; + sha256 = "12pwghmy18fcdvf9hvhb4q6shi339hb1kwxpkz0bhw0yjxjwzkdk"; + }; + + grc = buildOfficialDict { + language = "grc"; + version = "0.02-0"; + fullName = "Ancient Greek"; + filename = "aspell6"; + sha256 = "1zxr8958v37v260fkqd4pg37ns5h5kyqm54hn1hg70wq5cz8h512"; + }; + + gu = buildOfficialDict { + language = "gu"; + version = "0.03-0"; + fullName = "Gujarati"; + filename = "aspell6"; + sha256 = "04c38jnl74lpj2jhjz4zpqbs2623vwc71m6wc5h4b1karid14b23"; + }; + + gv = buildOfficialDict { + language = "gv"; + version = "0.50-0"; + fullName = "Manx Gaelic"; + filename = "aspell"; + sha256 = "1rknf4yaw9s29c77sdzg98nhnmjwpicdb69igmz1n768npz2drmv"; + }; + + he = buildOfficialDict { + language = "he"; + version = "1.0-0"; + fullName = "Hebrew"; + filename = "aspell6"; + sha256 = "13bhbghx5b8g0119g3wxd4n8mlf707y41vlf59irxjj0kynankfn"; + }; + + hi = buildOfficialDict { + language = "hi"; + version = "0.02-0"; + fullName = "Hindi"; + filename = "aspell6"; + sha256 = "0drs374qz4419zx1lf2k281ydxf2750jk5ailafj1x0ncz27h1ys"; + }; + + hil = buildOfficialDict { + language = "hil"; + version = "0.11-0"; + fullName = "Hiligaynon"; + filename = "aspell5"; + sha256 = "1s482fsfhzic9qa80al4418q3ni3gfn2bkwkd2y46ydrs17kf2jp"; + }; + + hr = buildOfficialDict { + language = "hr"; + version = "0.51-0"; + fullName = "Croatian"; + filename = "aspell"; + sha256 = "09aafyf1vqhaxvcf3jfzf365k394b5pf0iivsr2ix5npah1h7i1a"; + }; + + hsb = buildOfficialDict { + language = "hsb"; + version = "0.02-0"; + fullName = "Upper Sorbian"; + filename = "aspell6"; + sha256 = "0bi2vhz7n1vmg43wbbh935pmzihv80iyz9z65j94lxf753j2m7wd"; + }; + + hu = buildOfficialDict { + language = "hu"; + version = "0.99.4.2-0"; + fullName = "Hungarian"; + filename = "aspell6"; + sha256 = "1d9nybip2k1dz69zly3iv0npbi3yxgfznh1py364nxzrbjsafd9k"; + }; + + hus = buildOfficialDict { + language = "hus"; + version = "0.03-1"; + fullName = "Huastec"; + filename = "aspell6"; + sha256 = "09glipfpkz9xch17z11zw1yn2z7jx1f2svfmjn9l6wm1s5qz6a3d"; + }; + + hy = buildOfficialDict { + language = "hy"; + version = "0.10.0-0"; + fullName = "Armenian"; + filename = "aspell6"; + sha256 = "1w5wq8lfl2xp1nid30b1j5qmya4vjyidq0vpr4y3gf53jc08vsid"; + }; + + ia = buildOfficialDict { + language = "ia"; + version = "0.50-1"; + fullName = "Interlingua"; + filename = "aspell"; + sha256 = "0bqcpgsa72pga24fv4fkw38b4qqdvqsw97jvzvw7q03dc1cwp5sp"; + }; + + id = buildOfficialDict { + language = "id"; + version = "1.2-0"; + fullName = "Indonesian"; + filename = "aspell5"; + sha256 = "023knfg0q03f7y5w6xnwa1kspnrcvcnky8xvdms93n2850414faj"; + }; + + is = buildOfficialDict { + language = "is"; + version = "0.51.1-0"; + fullName = "Icelandic"; + filename = "aspell"; + sha256 = "1mp3248lhbr13cj7iq9zs7h5ix0dcwlprp5cwrkcwafrv8lvsd9h"; + }; + + it = buildOfficialDict { + language = "it"; + version = "2.2_20050523-0"; + fullName = "Italian"; + filename = "aspell6"; + sha256 = "1gdf7bc1a0kmxsmphdqq8pl01h667mjsj6hihy6kqy14k5qdq69v"; + }; + + kn = buildOfficialDict { + language = "kn"; + version = "0.01-1"; + fullName = "Kannada"; + filename = "aspell6"; + sha256 = "10sk0wx4x4ds1403kf9dqxv9yjvh06w8qqf4agx57y0jlws0n0fb"; + }; + + ku = buildOfficialDict { + language = "ku"; + version = "0.20-1"; + fullName = "Kurdi"; + filename = "aspell5"; + sha256 = "09va98krfbgdaxl101nmd85j3ysqgg88qgfcl42c07crii0pd3wn"; + }; + + ky = buildOfficialDict { + language = "ky"; + version = "0.01-0"; + fullName = "Kirghiz"; + filename = "aspell6"; + sha256 = "0kzv2syjnnn6pnwx0d578n46hg2l0j62977al47y6wabnhjjy3z1"; + }; + + la = buildOfficialDict { + language = "la"; + version = "20020503-0"; + fullName = "Latin"; + filename = "aspell6"; + sha256 = "1199inwi16dznzl087v4skn66fl7h555hi2palx6s1f3s54b11nl"; + }; + + lt = buildOfficialDict { + language = "lt"; + version = "1.2.1-0"; + fullName = "Lithuanian"; + filename = "aspell6"; + sha256 = "1asjck911l96q26zj36lmz0jp4b6pivvrf3h38zgc8lc85p3pxgn"; + }; + + lv = buildOfficialDict { + language = "lv"; + version = "0.5.5-1"; + fullName = "Latvian"; + filename = "aspell6"; + sha256 = "12pvs584a6437ijndggdqpp5s7d0w607cimpkxsjwasnx83f4c1w"; + }; + + mg = buildOfficialDict { + language = "mg"; + version = "0.03-0"; + fullName = "Malagasy"; + filename = "aspell5"; + sha256 = "0hdhbk9b5immjp8l5h4cy82gwgsqzcqbb0qsf7syw333w4rgi0ji"; + }; + + mi = buildOfficialDict { + language = "mi"; + version = "0.50-0"; + fullName = "Maori"; + filename = "aspell"; + sha256 = "12bxplpd348yx8d2q8qvahi9dlp7qf28qmanzhziwc7np8rixvmy"; + }; + + mk = buildOfficialDict { + language = "mk"; + version = "0.50-0"; + fullName = "Macedonian"; + filename = "aspell"; + sha256 = "0wcr9n882xi5b7a7ln1hnhq4vfqd5gpqqp87v01j0gb7zf027z0m"; + }; + + ml = buildOfficialDict { + language = "ml"; + version = "0.03-1"; + fullName = "Malayalam"; + filename = "aspell6"; + sha256 = "1zcn4114gwia085fkz77qk13z29xrbp53q2qvgj2cvcbalg5bkg4"; + }; + + mn = buildOfficialDict { + language = "mn"; + version = "0.06-2"; + fullName = "Mongolian"; + filename = "aspell6"; + sha256 = "150j9y5c9pw80fwp5rzl5q31q9vjbxixaqljkfwxjb5q93fnw6rg"; + }; + + mr = buildOfficialDict { + language = "mr"; + version = "0.10-0"; + fullName = "Marathi"; + filename = "aspell6"; + sha256 = "0cvgb2l40sppqbi842ivpznsh2xzp1d4hxc371dll8z0pr05m8yk"; + }; + + ms = buildOfficialDict { + language = "ms"; + version = "0.50-0"; + fullName = "Malay"; + filename = "aspell"; + sha256 = "0vr4vhipcfhsxqfs8dim2ph7iiixn22gmlmlb375bx5hgd9y7i1w"; + }; + + mt = buildOfficialDict { + language = "mt"; + version = "0.50-0"; + fullName = "Maltese"; + filename = "aspell"; + sha256 = "1d2rl1nlfjq6rfywblvx8m88cyy2x0mzc0mshzbgw359c2nwl3z0"; + }; + + nb = buildOfficialDict { + language = "nb"; + version = "0.50.1-0"; + fullName = "Norwegian Bokmal"; + filename = "aspell"; + sha256 = "12i2bmgdnlkzfinb20j2a0j4a20q91a9j8qpq5vgabbvc65nwx77"; + }; + + nds = buildOfficialDict { + language = "nds"; + version = "0.01-0"; + fullName = "Low Saxon"; + filename = "aspell6"; + sha256 = "1nkjhwzn45dizi89d19q4bqyd87cim8xyrgr655fampgkn31wf6f"; + }; + + nl = buildOfficialDict { + language = "nl"; + version = "0.50-2"; + fullName = "Dutch"; + filename = "aspell"; + sha256 = "0ffb87yjsh211hllpc4b9khqqrblial4pzi1h9r3v465z1yhn3j4"; + # Emacs expects a language called "nederlands". + postInstall = '' + echo "add nl.rws" > $out/lib/aspell/nederlands.multi + ''; + }; + + nn = buildOfficialDict { + language = "nn"; + version = "0.50.1-1"; + fullName = "Norwegian Nynorsk"; + filename = "aspell"; + sha256 = "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc"; + }; + + ny = buildOfficialDict { + language = "ny"; + version = "0.01-0"; + fullName = "Chichewa"; + filename = "aspell5"; + sha256 = "0gjb92vcg60sfgvrm2f6i89sfkgb179ahvwlgs649fx3dc7rfvqp"; + }; + + or = buildOfficialDict { + language = "or"; + version = "0.03-1"; + fullName = "Oriya"; + filename = "aspell6"; + sha256 = "0kzj9q225z0ccrlbkijsrafy005pbjy14qcnxb6p93ciz1ls7zyn"; + }; + + pa = buildOfficialDict { + language = "pa"; + version = "0.01-1"; + fullName = "Punjabi"; + filename = "aspell6"; + sha256 = "0if93zk10pyrs38wwj3vpcdm01h51m5z9gm85h3jxrpgqnqspwy7"; + }; + + pl = buildOfficialDict { + language = "pl"; + version = "6.0_20061121-0"; + fullName = "Polish"; + filename = "aspell6"; + sha256 = "0kap4kh6bqbb22ypja1m5z3krc06vv4n0hakiiqmv20anzy42xq1"; + }; + + pt_BR = buildOfficialDict { + language = "pt_BR"; + version = "20131030-12-0"; + fullName = "Brazilian Portuguese"; + filename = "aspell6"; + sha256 = "1xqlpk21s93c6blkdnpk7l62q9fxjvzdv2x86chl8p2x1gdrj3gb"; + }; + + pt_PT = buildOfficialDict { + language = "pt_PT"; + version = "20190329-1-0"; + fullName = "Portuguese"; + filename = "aspell6"; + sha256 = "0ld0d0ily4jqifjfsxfv4shbicz6ymm2gk56fq9gbzra1j4qnw75"; + }; + + qu = buildOfficialDict { + language = "qu"; + version = "0.02-0"; + fullName = "Quechua"; + filename = "aspell6"; + sha256 = "009z0zsvzq7r3z3m30clyibs94v77b92h5lmzmzxlns2p0lpd5w0"; + }; + + ro = buildOfficialDict { + language = "ro"; + version = "3.3-2"; + fullName = "Romanian"; + filename = "aspell5"; + sha256 = "0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk"; + }; + + ru = buildOfficialDict { + language = "ru"; + version = "0.99f7-1"; + fullName = "Russian"; + filename = "aspell6"; + sha256 = "0ip6nq43hcr7vvzbv4lwwmlwgfa60hrhsldh9xy3zg2prv6bcaaw"; + }; + + rw = buildOfficialDict { + language = "rw"; + version = "0.50-0"; + fullName = "Kinyarwanda"; + filename = "aspell"; + sha256 = "10gh8g747jbrvfk2fn3pjxy1nhcfdpwgmnvkmrp4nd1k1qp101il"; + }; + + sc = buildOfficialDict { + language = "sc"; + version = "1.0"; + fullName = "Sardinian"; + filename = "aspell5"; + sha256 = "0hl7prh5rccsyljwrv3m1hjcsphyrrywk2qvnj122irbf4py46jr"; + }; + + sk = buildOfficialDict { + language = "sk"; + version = "2.01-2"; + fullName = "Slovak"; + filename = "aspell6"; + sha256 = "19k0m1v5pcf7xr4lxgjkzqkdlks8nyb13bvi1n7521f3i4lhma66"; + }; + + sl = buildOfficialDict { + language = "sl"; + version = "0.50-0"; + fullName = "Slovenian"; + filename = "aspell"; + sha256 = "1l9kc5g35flq8kw9jhn2n0bjb4sipjs4qkqzgggs438kywkx2rp5"; + }; + + sr = buildOfficialDict { + language = "sr"; + version = "0.02"; + fullName = "Serbian"; + filename = "aspell6"; + sha256 = "12cj01p4nj80cpf7m3s4jsaf0rsfng7s295j9jfchcq677xmhpkh"; + }; + + sv = buildOfficialDict { + language = "sv"; + version = "0.51-0"; + fullName = "Swedish"; + filename = "aspell"; + sha256 = "02jwkjhr32kvyibnyzgx3smbnm576jwdzg3avdf6zxwckhy5fw4v"; + }; + + sw = buildOfficialDict { + language = "sw"; + version = "0.50-0"; + fullName = "Swahili"; + filename = "aspell"; + sha256 = "15zjh7hdj2b4dgm5bc12w1ims9q357p1q3gjalspnyn5gl81zmby"; + }; + + ta = buildOfficialDict { + language = "ta"; + version = "20040424-1"; + fullName = "Tamil"; + filename = "aspell6"; + sha256 = "0sj8ygjsyvnr93cs6324y7az7k2vyw7rjxdc9vnm7z60lbqm5xaj"; + }; + + te = buildOfficialDict { + language = "te"; + version = "0.01-2"; + fullName = "Telugu"; + filename = "aspell6"; + sha256 = "0pgcgxz7dz34zxp9sb85jjzbg3ky6il5wmhffz6ayrbsfn5670in"; + }; + + tet = buildOfficialDict { + language = "tet"; + version = "0.1.1"; + fullName = "Tetum"; + filename = "aspell5"; + sha256 = "17n0y4fhjak47j9qnqf4m4z6zra6dn72rwhp7ig0hhlgqk4ldmcx"; + }; + + tk = buildOfficialDict { + language = "tk"; + version = "0.01-0"; + fullName = "Turkmen"; + filename = "aspell5"; + sha256 = "02vad4jqhr0xpzqi5q5z7z0xxqccbn8j0c5dhpnm86mnr84l5wl6"; + }; + + tl = buildOfficialDict { + language = "tl"; + version = "0.02-1"; + fullName = "Tagalog"; + filename = "aspell5"; + sha256 = "1kca6k7qnpfvvwjnq5r1n242payqsjy96skmw78m7ww6d0n5vdj8"; + }; + + tn = buildOfficialDict { + language = "tn"; + version = "1.0.1-0"; + fullName = "Setswana"; + filename = "aspell5"; + sha256 = "0q5x7c6z88cn0kkpk7q1craq34g4g03v8x3xcj5a5jia3l7c5821"; + }; + + tr = buildOfficialDict { + language = "tr"; + version = "0.50-0"; + fullName = "Turkish"; + filename = "aspell"; + sha256 = "0jpvpm96ga7s7rmsm6rbyrrr22b2dicxv2hy7ysv5y7bbq757ihb"; + }; + + uk = buildOfficialDict { + language = "uk"; + version = "1.4.0-0"; + fullName = "Ukrainian"; + filename = "aspell6"; + sha256 = "137i4njvnslab6l4s291s11xijr5jsy75lbdph32f9y183lagy9m"; + }; + + uz = buildOfficialDict { + language = "uz"; + version = "0.6-0"; + fullName = "Uzbek"; + filename = "aspell6"; + sha256 = "0sg3wlyply1idpq5ypyj7kgnaadaiskci1sqs811yhg2gzyc3092"; + }; + + vi = buildOfficialDict { + language = "vi"; + version = "0.01.1-1"; + fullName = "Vietnamese"; + filename = "aspell6"; + sha256 = "05vwgvf1cj45azhflywx69javqdvqd1f20swrc2d3c32pd9mvn1w"; + }; + + wa = buildOfficialDict { + language = "wa"; + version = "0.50-0"; + fullName = "Walloon"; + filename = "aspell"; + sha256 = "1r1zwz7xkx40dga9vf5wc9ja3jwk1dkpcr1kaa7wryvslf5al5ss"; + }; + + yi = buildOfficialDict { + language = "yi"; + version = "0.01.1-1"; + fullName = "Yiddish"; + filename = "aspell6"; + sha256 = "0mi842l4038bx3ll2wx9nz44nqrg1x46h5b02zigi1hbbddd6ycq"; + }; + + zu = buildOfficialDict { + language = "zu"; + version = "0.50-0"; + fullName = "Zulu"; + filename = "aspell"; + sha256 = "15k7gaxrnqnssdyk9l6g27dq317dqp9jz5yzafd25ri01g6mb8iz"; + }; + + ### Jargons + + en-computers = buildTxtDict { + shortName = "en-computers"; + fullName = "English Computer Jargon"; + + src = fetchurl { + url = "https://mrsatterly.com/computer.dic"; + sha256 = "1vzk7cdvcm9r1c6mgxpabrdcpvghdv9mjmnf6iq5wllcif5nsw2b"; + }; + + langInputs = [ en ]; + + buildPhase = '' + runHook preBuild + cat $src | aspell-affix en-computers --dont-validate-words --lang=en + runHook postBuild + ''; + installPhase = "aspell-install en-computers"; + + meta = { + homepage = "https://mrsatterly.com/spelling.html"; + }; + }; + + en-science = buildTxtDict { + shortName = "en-science"; + fullName = "English Scientific Jargon"; + + src1 = fetchurl { + url = "http://jpetrie.net/wp-content/uploads/custom_scientific_US.txt"; + sha256 = "1nf4py2mg0mlv9s5a7had2wn29z2v6bcca0fs6rbpdn4nqc4s7dm"; + }; + + src2 = fetchurl { + url = "http://jpetrie.net/wp-content/uploads/custom_scientific_UK.txt"; + sha256 = "0f88il1ds6qazy1ghxviqcwsywrbf6pzl2lmzf4f3qvhdfb6f1y0"; + }; + + langInputs = [ en ]; + + buildPhase = '' + runHook preBuild + cat $src1 | aspell-plain en_US-science --dont-validate-words --lang=en + cat $src2 | aspell-plain en_GB-science --dont-validate-words --lang=en + runHook postBuild + ''; + installPhase = "aspell-install en_US-science en_GB-science"; + + meta = { + homepage = "http://www.jpetrie.net/scientific-word-list-for-spell-checkersspelling-dictionaries/"; + }; + + }; + +} |