1{
2 lib,
3 stdenv,
4 fetchurl,
5 callPackage,
6}:
7
8let
9 # Probably a bug in some FreeDict release files, but easier to trivially
10 # work around than report. Not that it can cause any other problems..
11 makeDictdDBFreedict =
12 src: name: locale:
13 makeDictdDB src name "{.,bin}" locale;
14
15 makeDictdDB =
16 src: _name: _subdir: _locale:
17 stdenv.mkDerivation {
18 name = "dictd-db-${_name}";
19 inherit src;
20 locale = _locale;
21 dbName = _name;
22 dontBuild = true;
23 unpackPhase = ''
24 tar xf ${src}
25 '';
26 installPhase = ''
27 mkdir -p $out/share/dictd
28 cp $(ls ./${_subdir}/*.{dict*,index} || true) $out/share/dictd
29 echo "${_locale}" >$out/share/dictd/locale
30 '';
31
32 meta = {
33 description = "Dictd-db dictionary for dictd";
34 platforms = lib.platforms.linux;
35 };
36 };
37in
38rec {
39 deu2eng = makeDictdDBFreedict (fetchurl {
40 url = "mirror://sourceforge/freedict/deu-eng.tar.gz";
41 sha256 = "0dqrhv04g4f5s84nbgisgcfwk5x0rpincif0yfhfh4sc1bsvzsrb";
42 }) "deu-eng" "de_DE";
43 eng2deu = makeDictdDBFreedict (fetchurl {
44 url = "mirror://sourceforge/freedict/eng-deu.tar.gz";
45 sha256 = "01x12p72sa3071iff3jhzga8588440f07zr56r3x98bspvdlz73r";
46 }) "eng-deu" "en_EN";
47 nld2eng = makeDictdDBFreedict (fetchurl {
48 url = "mirror://sourceforge/freedict/nld-eng.tar.gz";
49 sha256 = "1vhw81pphb64fzsjvpzsnnyr34ka2fxizfwilnxyjcmpn9360h07";
50 }) "nld-eng" "nl_NL";
51 eng2nld = makeDictdDBFreedict (fetchurl {
52 url = "mirror://sourceforge/freedict/eng-nld.tar.gz";
53 sha256 = "0rcg28ldykv0w2mpxc6g4rqmfs33q7pbvf68ssy1q9gpf6mz7vcl";
54 }) "eng-nld" "en_UK";
55 eng2rus = makeDictdDBFreedict (fetchurl {
56 url = "mirror://sourceforge/freedict/eng-rus.tar.gz";
57 sha256 = "15409ivhww1wsfjr05083pv6mg10bak8v5pg1wkiqybk7ck61rry";
58 }) "eng-rus" "en_UK";
59 fra2eng = makeDictdDBFreedict (fetchurl {
60 url = "mirror://sourceforge/freedict/fra-eng.tar.gz";
61 sha256 = "0sdd88s2zs5whiwdf3hd0s4pzzv75sdsccsrm1wxc87l3hjm85z3";
62 }) "fra-eng" "fr_FR";
63 eng2fra = makeDictdDBFreedict (fetchurl {
64 url = "mirror://sourceforge/freedict/eng-fra.tar.gz";
65 sha256 = "0fi6rrnbqnhc6lq8d0nmn30zdqkibrah0mxfg27hsn9z7alwbj3m";
66 }) "eng-fra" "en_UK";
67 epo2eng = makeDictdDB (fetchurl {
68 url = "https://download.freedict.org/dictionaries/epo-eng/1.0.1/freedict-epo-eng-1.0.1.dictd.tar.xz";
69 sha256 = "095xwqfc43dnm0g74i83lg03542f064jy2xbn3qnjxiwysz9ksnz";
70 }) "epo-eng" "epo-eng" "eo";
71 jpn2eng = makeDictdDB (fetchurl {
72 url =
73 let
74 version = "0.1";
75 in
76 "mirror://sourceforge/freedict/jpn-eng/${version}/freedict-jpn-eng-${version}.dictd.tar.xz";
77 sha256 = "sha256-juJBoEq7EztLZzOomc7uoZhXVaQPKoUvIxxPLB0xByc=";
78 }) "jpn-eng" "jpn-eng" "ja_JP";
79 eng2jpn = makeDictdDB (fetchurl {
80 url =
81 let
82 version = "2022.04.06";
83 in
84 "https://download.freedict.org/dictionaries/eng-jpn/${version}/freedict-eng-jpn-${version}.dictd.tar.xz";
85 sha256 = "sha256-kfRT2kgbV3XKarCr4mqDRT5A1jR8M8APky5M5MFYatE=";
86 }) "eng-jpn" "eng-jpn" "en_UK";
87 mueller_eng2rus_pkg = makeDictdDB (fetchurl {
88 url = "mirror://sourceforge/mueller-dict/mueller-dict-3.1.tar.gz";
89 sha256 = "04r5xxznvmcb8hkxqbjgfh2gxvbdd87jnhqn5gmgvxxw53zpwfmq";
90 }) "mueller-eng-rus" "mueller-dict-*/dict" "en_UK";
91 mueller_enru_abbr = {
92 outPath = "${mueller_eng2rus_pkg}/share/dictd/mueller-abbrev";
93 name = "mueller-abbr";
94 dbName = "mueller-abbr";
95 locale = "en_UK";
96 };
97 mueller_enru_base = {
98 outPath = "${mueller_eng2rus_pkg}/share/dictd/mueller-base";
99 name = "mueller-base";
100 dbName = "mueller-base";
101 locale = "en_UK";
102 };
103 mueller_enru_dict = {
104 outPath = "${mueller_eng2rus_pkg}/share/dictd/mueller-dict";
105 name = "mueller-dict";
106 dbName = "mueller-dict";
107 locale = "en_UK";
108 };
109 mueller_enru_geo = {
110 outPath = "${mueller_eng2rus_pkg}/share/dictd/mueller-geo";
111 name = "mueller-geo";
112 dbName = "mueller-geo";
113 locale = "en_UK";
114 };
115 mueller_enru_names = {
116 outPath = "${mueller_eng2rus_pkg}/share/dictd/mueller-names";
117 name = "mueller-names";
118 dbName = "mueller-names";
119 locale = "en_UK";
120 };
121 wordnet = callPackage ./dictd-wordnet.nix { };
122 wiktionary = callPackage ./wiktionary { };
123}