1{ lib, stdenv, fetchFromGitHub, unzip, zip, libiconv, perl, aspell, dos2unix
2, singleWordlist ? null
3}:
4
5stdenv.mkDerivation rec {
6 pname = "scowl";
7 version = "2019.10.06";
8
9 src = fetchFromGitHub {
10 owner = "en-wl";
11 repo = "wordlist";
12 rev = "rel-${version}";
13 sha256 = "1daag7h63gdijp1lv3v93bx5kmcb5zsyydsd57kv0a6kk3vs819x";
14 };
15
16 postPatch = ''
17 substituteInPlace scowl/src/Makefile \
18 --replace g++ c++
19 '';
20
21 nativeBuildInputs = [ unzip zip perl aspell dos2unix ];
22 buildInputs = lib.optional (!stdenv.isLinux) libiconv;
23
24 NIX_CFLAGS_COMPILE = "-Wno-narrowing";
25
26 preConfigure = ''
27 patchShebangs .
28 export PERL5LIB="$PERL5LIB''${PERL5LIB:+:}$PWD/varcon"
29 '';
30
31 postBuild = lib.optionalString (singleWordlist == null) ''
32 (
33 cd scowl/speller
34 make aspell
35 make hunspell
36 )
37 '';
38
39 enableParallelBuilding = false;
40
41 installPhase = if singleWordlist == null then ''
42 eval "$preInstall"
43
44 mkdir -p "$out/share/scowl"
45 mkdir -p "$out/lib" "$out/share/hunspell" "$out/share/myspell"
46 mkdir -p "$out/share/dict"
47
48 cp -r scowl/speller/aspell "$out/lib/aspell"
49 cp scowl/speller/*.{aff,dic} "$out/share/hunspell"
50 ln -s "$out/share/hunspell" "$out/share/myspell/dicts"
51
52 cp scowl/final/* "$out/share/scowl"
53
54 (
55 cd scowl
56 for region in american british british_s british_z canadian australian; do
57 case $region in
58 american)
59 regcode=en-us;
60 ;;
61 british)
62 regcode=en-gb-ise;
63 ;;
64 british_s)
65 regcode=en-gb-ise;
66 ;;
67 british_z)
68 regcode=en-gb-ize;
69 ;;
70 canadian)
71 regcode=en-ca;
72 ;;
73 australian)
74 regcode=en-au;
75 ;;
76 esac
77 regcode_var="$regcode"
78 if test "$region" = british; then
79 regcode_var="en-gb"
80 fi
81
82 echo $region $regcode $regcode_sz
83 for s in 10 20 30 35 40 50 55 60 70 80 90 95; do
84 ./mk-list $regcode $s > "$out/share/dict/w$region.$s"
85 ./mk-list --variants=1 $regcode_var $s > "$out/share/dict/w$region.variants.$s"
86 ./mk-list --variants=2 $regcode_var $s > "$out/share/dict/w$region.acceptable.$s"
87 done
88 ./mk-list $regcode 60 > "$out/share/dict/w$region.txt"
89 ./mk-list --variants=1 $regcode_var 60 > "$out/share/dict/w$region.variants.txt"
90 ./mk-list --variants=2 $regcode_var 80 > "$out/share/dict/w$region.scrabble.txt"
91 done
92 ./mk-list --variants=1 en-gb 60 > "$out/share/dict/words.variants.txt"
93 ./mk-list --variants=1 en-gb 80 > "$out/share/dict/words.scrabble.txt"
94 ./mk-list en-gb-ise 60 > "$out/share/dict/words.txt"
95 )
96
97 eval "$postInstall"
98 '' else ''
99 mkdir -p "$out/share/dict"
100 cd scowl
101 ./mk-list ${singleWordlist} > "$out/share/dict/words.txt"
102 '';
103
104 meta = {
105 description = "Spell checker oriented word lists";
106 license = lib.licenses.mit;
107 maintainers = [lib.maintainers.raskin];
108 platforms = lib.platforms.unix;
109 homepage = "http://wordlist.aspell.net/";
110 };
111}