depot/third_party/nixpkgs/pkgs/tools/inputmethods/skk/skk-dicts/default.nix
Default email 472aeafc57 Project import generated by Copybara.
GitOrigin-RevId: c31898adf5a8ed202ce5bea9f347b1c6871f32d1
2024-10-04 18:56:33 +02:00

202 lines
5.2 KiB
Nix

{ lib
, stdenvNoCC
, fetchFromGitHub
, nix-update-script
, nkf
, skktools
, useUtf8 ? false
}:
let
suffix = lib.optionalString useUtf8 ".utf8";
mkDictNameValue =
{ name
, description
, license # it's written in the beginning of each file
, files ? [ "SKK-JISYO.${name}" ]
}: {
name = lib.toLower (builtins.replaceStrings [ "." ] [ "_" ] name);
value = stdenvNoCC.mkDerivation {
pname = "skk-jisyo-" + lib.toLower name;
version = "0-unstable-2024-08-28";
src = fetchFromGitHub {
owner = "skk-dev";
repo = "dict";
rev = "4eb91a3bbfef70bde940668ec60f3beae291e971";
sha256 = "sha256-sWz85Q6Bu2WoKsckSp5SlcuPUQN2mcq+BHMqNXQ/aho=";
};
nativeBuildInputs = lib.optionals useUtf8 [ nkf ];
strictDeps = true;
buildPhase = ''
runHook preBuild
'' + lib.concatMapStrings
(file: ''
nkf -w ${file} \
| LC_ALL=C sed 's/coding: [^ ]\{1,\}/coding: utf-8/' \
> ${file + suffix}
'')
(lib.optionals useUtf8 (map lib.escapeShellArg files)) + ''
runHook postBuild
'';
installPhase = ''
runHook preInstall
'' + lib.concatMapStrings
(file: ''
install -Dm644 \
${lib.escapeShellArg file} \
$out/share/skk/${lib.escapeShellArg (baseNameOf file)}
'')
(map (file: file + suffix) files) + ''
runHook postInstall
'';
doInstallCheck = true;
installCheckPhase = ''
emptydict=': 0 candidates$'
${skktools}/bin/skkdic-count /dev/null | grep "$emptydict"
${skktools}/bin/skkdic-count $out/share/skk/* | grep -v "$emptydict"
'';
passthru.updateScript = nix-update-script {
extraArgs = ["--version" "branch"];
};
meta = with lib; {
inherit description license;
longDescription = ''
This package provides a kana-to-kanji conversion dictionary for the
SKK Japanese input method.
'';
homepage = "https://github.com/skk-dev/dict";
maintainers = with maintainers; [ yuriaisaka midchildan ];
platforms = platforms.all;
};
};
};
in
lib.listToAttrs (map mkDictNameValue [
{
name = "L";
description = "The standard SKK dictionary";
license = lib.licenses.gpl2Plus;
}
{
name = "S";
description = "Small SKK dictionary";
license = lib.licenses.gpl2Plus;
}
{
name = "M";
description = "Medium sized SKK dictionary";
license = lib.licenses.gpl2Plus;
}
{
name = "ML";
description = "Medium to large sized SKK dictionary";
license = lib.licenses.gpl2Plus;
}
{
name = "jinmei";
description = "SKK dictionary for names";
license = lib.licenses.gpl2Plus;
}
{
name = "fullname";
description = "SKK dictionary for celebrities";
license = lib.licenses.gpl2Plus;
}
{
name = "geo";
description = "SKK dictionary for locations";
license = lib.licenses.gpl2Plus;
}
{
name = "propernoun";
description = "SKK dictionary for proper nouns";
license = lib.licenses.gpl2Plus;
}
{
name = "station";
description = "SKK dictionary for stations";
license = lib.licenses.gpl2Plus;
}
{
name = "law";
description = "SKK dictionary for legal terms";
license = lib.licenses.gpl2Plus;
}
{
name = "okinawa";
description = "SKK dictionary for the Okinawan language";
license = lib.licenses.publicDomain;
}
{
name = "china_taiwan";
description = "SKK dictionary for Chinese & Taiwanese locations";
license = lib.licenses.gpl2Plus;
}
{
name = "assoc";
description = "SKK dictionary for abbreviated input";
license = lib.licenses.gpl2Plus;
}
{
name = "edict";
description = "SKK dictionary for English to Japanese translation";
license = lib.licenses.cc-by-sa-30;
}
{
name = "zipcode";
description = "SKK dictionary for Japanese zipcodes";
files = [ "zipcode/SKK-JISYO.zipcode" "zipcode/SKK-JISYO.office.zipcode" ];
license = lib.licenses.publicDomain;
}
{
name = "JIS2";
description = "SKK dictionary for JIS level 2 kanjis";
license = lib.licenses.gpl2Plus;
}
{
name = "JIS3_4";
description = "SKK dictionary for JIS level 3 and 4 kanjis";
license = lib.licenses.gpl2Plus;
}
{
name = "JIS2004";
description = ''
A complementary SKK dictionary for JIS3_4 with JIS X 0213:2004 additions"
'';
license = lib.licenses.gpl2Plus;
}
{
name = "itaiji";
description = "SKK dictionary for variant kanjis";
license = lib.licenses.publicDomain;
}
{
name = "itaiji.JIS3_4";
description = "SKK dictionary for JIS level 3 and 4 variant kanjis";
license = lib.licenses.gpl2Plus;
}
{
name = "mazegaki";
description = "SKK dictionary for mazegaki";
license = lib.licenses.gpl2Plus;
}
{
name = "emoji";
description = "SKK dictionary for emojis";
license = lib.licenses.unicode-dfs-2016;
}
{
name = "pinyin";
description = "SKK dictionary for pinyin to simplified Chinese input";
license = lib.licenses.gpl1Plus;
}
])