1
0
mirror of https://github.com/kmein/niveum synced 2026-03-22 04:41:07 +01:00

feat(stardict): wrap

This commit is contained in:
2022-01-12 10:00:33 +01:00
parent 7f79744a13
commit 237f7d7c96

View File

@@ -1,6 +1,7 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
classicsDictionaries = { dictionaries = {
classics = {
Pape = pkgs.fetchzip { Pape = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/pape_gr-de.zip"; url = "http://tovotu.de/data/stardict/pape_gr-de.zip";
sha256 = "1kmbdjqinrcxkc6jdyyrq5rl2wzhnrychyynnh91yhrjwjxlh44k"; sha256 = "1kmbdjqinrcxkc6jdyyrq5rl2wzhnrychyynnh91yhrjwjxlh44k";
@@ -26,7 +27,7 @@ let
url = "http://tovotu.de/data/stardict/georges_de-lat.zip"; url = "http://tovotu.de/data/stardict/georges_de-lat.zip";
sha256 = "1gx4vv64bi9lxw2zgd861j469jvw4f2hhfwy1gglb12id8r7rdrl"; sha256 = "1gx4vv64bi9lxw2zgd861j469jvw4f2hhfwy1gglb12id8r7rdrl";
}; };
Georges-Lat-De = pkgs.fetchzip { # TODO find out why this does not work with sdcv Georges-Lat-De = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/georges_lat-de.zip"; url = "http://tovotu.de/data/stardict/georges_lat-de.zip";
sha256 = "0cc5xipn60anxvq8z2mw53d4gi1k92wbrj9m4ws3g9rh87fmkvgz"; sha256 = "0cc5xipn60anxvq8z2mw53d4gi1k92wbrj9m4ws3g9rh87fmkvgz";
}; };
@@ -39,8 +40,7 @@ let
sha256 = "0mhik7gjxl8ncr9g5z2l4pfk60k1c5n0gc1w0cnp2x1v6lqvb57h"; sha256 = "0mhik7gjxl8ncr9g5z2l4pfk60k1c5n0gc1w0cnp2x1v6lqvb57h";
}; };
}; };
englishGerman = {
englishGermanDictionaries = {
Etymonline = pkgs.fetchzip { Etymonline = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/etymonline.zip"; url = "http://tovotu.de/data/stardict/etymonline.zip";
sha256 = "1bjja3n3layfd08xa1r0a6375dxh5zi6hlv7chkhgnx800cx7hxn"; sha256 = "1bjja3n3layfd08xa1r0a6375dxh5zi6hlv7chkhgnx800cx7hxn";
@@ -94,8 +94,7 @@ let
# sha256 = "1lw2i8dzxpx929cpgvv0x366dnh4drr10wzqmrhcd0kvwglqawgm"; # sha256 = "1lw2i8dzxpx929cpgvv0x366dnh4drr10wzqmrhcd0kvwglqawgm";
# }; # };
}; };
sanskrit = {
sanskritDictionaries = {
BoehtlingkRoth = pkgs.fetchzip { BoehtlingkRoth = pkgs.fetchzip {
url = "https://c.krebsco.de/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch.zip"; url = "https://c.krebsco.de/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch.zip";
sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly"; sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly";
@@ -112,11 +111,43 @@ let
stripRoot = false; stripRoot = false;
}; };
}; };
oed = {
OED1 = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2";
sha256 = "0i5vv1rv44yfwyf9bfbdrb9brzhhpvz2jnh39fv8hh107nkv2vcf";
};
OED2 = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2";
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
};
};
russian = {
LingvoGermanRussian = builtins.fetchTarball {
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "0p353gs2z4vj70hqsdhffjaaw3a4zlmcs46flipmf35lm5wmaj0g";
};
LingvoRussianGerman = builtins.fetchTarball {
url = "http://download.huzheng.org/lingvo/stardict-RG-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8";
};
};
};
makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: { inherit name path; }) dicts); makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: { inherit name path; }) dicts);
makeStardict = name: dicts: pkgs.writers.writeDashBin name ''
set -efu
export SDCV_PAGER=${toString sdcvPager}
exec ${pkgs.sdcv}/bin/sdcv --only-data-dir --data-dir ${makeStardictDataDir dicts} "$@"
'';
sdcvPager = pkgs.writeDash "sdcvPager" '' sdcvPager = pkgs.writeDash "sdcvPager" ''
export PATH=${lib.makeBinPath [pkgs.gnused pkgs.ncurses]} export PATH=${lib.makeBinPath [pkgs.gnused pkgs.ncurses pkgs.less]}
sed " sed "
s!<sup>1</sup>!¹!g
s!<sup>2</sup>!²!g
s!<sup>3</sup>!³!g
s!<sup>4</sup>!!g
s! style=\"color: #...\"!!g; s! style=\"color: #...\"!!g;
s!<span class=\"zenoTXSpaced\">\([^<>]*\)</span>!\1!g; s!<span class=\"zenoTXSpaced\">\([^<>]*\)</span>!\1!g;
s!</\?dictionary[^>]*>!!g; s!</\?dictionary[^>]*>!!g;
@@ -138,6 +169,7 @@ let
s!</\?xr[^>]*>!!g s!</\?xr[^>]*>!!g
s!</\?pron[^>]*>!!g s!</\?pron[^>]*>!!g
s!</\?gen[^>]*>!!g s!</\?gen[^>]*>!!g
s!</\?tns[^>]*>!!g
s!</\?etym[^>]*>!!g s!</\?etym[^>]*>!!g
s!<foreign[^>]*>!$(tput sitm)!g s!<foreign[^>]*>!$(tput sitm)!g
s!</foreign[^>]*>!$(tput sgr0)!g s!</foreign[^>]*>!$(tput sgr0)!g
@@ -189,6 +221,7 @@ let
s:<font color=0000FF>\([^<>]*\)</font>:$(tput bold)\\1$(tput sgr0):g; s:<font color=0000FF>\([^<>]*\)</font>:$(tput bold)\\1$(tput sgr0):g;
s:<IMG src=\"223E9A06.bmp\"[^>]*>:ː:g; s:<IMG src=\"223E9A06.bmp\"[^>]*>:ː:g;
s:<IMG src=\"502F5DDA.bmp\"[^>]*>::g; s:<IMG src=\"502F5DDA.bmp\"[^>]*>::g;
s:<IMG src=\"8DAD7054.bmp\"[^>]*>:n̩:g
s!</\?TABLE>!!g s!</\?TABLE>!!g
s!</\?TR[^>]*>!!g s!</\?TR[^>]*>!!g
s!</\?TD>!!g s!</\?TD>!!g
@@ -204,7 +237,7 @@ let
s!<span lang=\"gr\">!!g # unbalanced in Frisk s!<span lang=\"gr\">!!g # unbalanced in Frisk
s!^\s*[0-9])!$(tput setaf 5)&$(tput sgr0)!g s!^\s*[0-9])!$(tput setaf 5)&$(tput sgr0)!g
s#^\(-->.*\)\$#$(tput bold)\1$(tput sgr0)# s#^\(-->.*\)\$#$(tput bold)\1$(tput sgr0)#
" " | less -FR
''; '';
in in
{ {
@@ -214,19 +247,11 @@ in
# http://download.huzheng.org/bigdict/stardict-Concise_Oxford_Thesaurus_2nd_Ed-2.4.2.tar.bz2 # http://download.huzheng.org/bigdict/stardict-Concise_Oxford_Thesaurus_2nd_Ed-2.4.2.tar.bz2
# http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P1-2.4.2.tar.bz2 # http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P1-2.4.2.tar.bz2
# http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P2-2.4.2.tar.bz2 # http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P2-2.4.2.tar.bz2
environment.etc.stardict.source = toString (makeStardictDataDir (classicsDictionaries // { environment.etc.stardict.source = toString (makeStardictDataDir ({
Crum = builtins.fetchTarball { Crum = builtins.fetchTarball {
url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2"; url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9"; sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
}; };
LingvoGermanRussian = builtins.fetchTarball {
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "0p353gs2z4vj70hqsdhffjaaw3a4zlmcs46flipmf35lm5wmaj0g";
};
LingvoRussianGerman = builtins.fetchTarball {
url = "http://download.huzheng.org/lingvo/stardict-RG-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8";
};
SmithBiographyMythology = pkgs.fetchzip { SmithBiographyMythology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip"; url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip";
sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2"; sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2";
@@ -235,24 +260,14 @@ in
url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip"; url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb"; sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
}; };
OED1 = builtins.fetchTarball { } // dictionaries.classics // dictionaries.sanskrit // dictionaries.oed // dictionaries.russian // dictionaries.englishGerman));
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2";
sha256 = "0i5vv1rv44yfwyf9bfbdrb9brzhhpvz2jnh39fv8hh107nkv2vcf";
};
OED2 = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2";
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
};
} // sanskritDictionaries // englishGermanDictionaries));
environment.variables = {
SDCV_PAGER = toString sdcvPager;
};
environment.systemPackages = [ environment.systemPackages = [
pkgs.goldendict pkgs.goldendict
(pkgs.writers.writeDashBin "sd-classics" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir classicsDictionaries} "$@"'') (makeStardict "sd-classics" dictionaries.classics)
(pkgs.writers.writeDashBin "sd-sanskrit" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir sanskritDictionaries} "$@"'') (makeStardict "sd-sanskrit" dictionaries.sanskrit)
(pkgs.writers.writeDashBin "sd" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir englishGermanDictionaries} "$@"'') (makeStardict "sd-oed" dictionaries.oed)
(makeStardict "sd-russian" dictionaries.russian)
(makeStardict "sd" dictionaries.englishGerman)
]; ];
} }