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