biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / inputmethods / skk / skk-dicts / default.nix
blob9b2dd3c182dd0a484ad3aa7bdb94a9820772a6ce
1 { lib
2 , stdenvNoCC
3 , fetchFromGitHub
4 , nix-update-script
5 , nkf
6 , skktools
7 , useUtf8 ? false
8 }:
10 let
11   suffix = lib.optionalString useUtf8 ".utf8";
13   mkDictNameValue =
14     { name
15     , description
16     , license # it's written in the beginning of each file
17     , files ? [ "SKK-JISYO.${name}" ]
18     }: {
19       name = lib.toLower (builtins.replaceStrings [ "." ] [ "_" ] name);
20       value = stdenvNoCC.mkDerivation {
21         pname = "skk-jisyo-" + lib.toLower name;
22         version = "0-unstable-2024-08-28";
24         src = fetchFromGitHub {
25           owner = "skk-dev";
26           repo = "dict";
27           rev = "4eb91a3bbfef70bde940668ec60f3beae291e971";
28           sha256 = "sha256-sWz85Q6Bu2WoKsckSp5SlcuPUQN2mcq+BHMqNXQ/aho=";
29         };
31         nativeBuildInputs = lib.optionals useUtf8 [ nkf ];
33         strictDeps = true;
35         buildPhase = ''
36           runHook preBuild
37         '' + lib.concatMapStrings
38           (file: ''
39             nkf -w ${file} \
40               | LC_ALL=C sed 's/coding: [^ ]\{1,\}/coding: utf-8/' \
41               > ${file + suffix}
42           '')
43           (lib.optionals useUtf8 (map lib.escapeShellArg files)) + ''
44           runHook postBuild
45         '';
47         installPhase = ''
48           runHook preInstall
49         '' + lib.concatMapStrings
50           (file: ''
51             install -Dm644 \
52               ${lib.escapeShellArg file} \
53               $out/share/skk/${lib.escapeShellArg (baseNameOf file)}
54           '')
55           (map (file: file + suffix) files) + ''
56           runHook postInstall
57         '';
59         doInstallCheck = true;
60         installCheckPhase = ''
61           emptydict=': 0 candidates$'
62           ${skktools}/bin/skkdic-count /dev/null | grep "$emptydict"
63           ${skktools}/bin/skkdic-count $out/share/skk/* | grep -v "$emptydict"
64         '';
66         passthru.updateScript = nix-update-script {
67           extraArgs = ["--version" "branch"];
68         };
70         meta = with lib; {
71           inherit description license;
72           longDescription = ''
73             This package provides a kana-to-kanji conversion dictionary for the
74             SKK Japanese input method.
75           '';
76           homepage = "https://github.com/skk-dev/dict";
77           maintainers = with maintainers; [ yuriaisaka midchildan ];
78           platforms = platforms.all;
79         };
80       };
81     };
83 lib.listToAttrs (map mkDictNameValue [
84   {
85     name = "L";
86     description = "The standard SKK dictionary";
87     license = lib.licenses.gpl2Plus;
88   }
89   {
90     name = "S";
91     description = "Small SKK dictionary";
92     license = lib.licenses.gpl2Plus;
93   }
94   {
95     name = "M";
96     description = "Medium sized SKK dictionary";
97     license = lib.licenses.gpl2Plus;
98   }
99   {
100     name = "ML";
101     description = "Medium to large sized SKK dictionary";
102     license = lib.licenses.gpl2Plus;
103   }
104   {
105     name = "jinmei";
106     description = "SKK dictionary for names";
107     license = lib.licenses.gpl2Plus;
108   }
109   {
110     name = "fullname";
111     description = "SKK dictionary for celebrities";
112     license = lib.licenses.gpl2Plus;
113   }
114   {
115     name = "geo";
116     description = "SKK dictionary for locations";
117     license = lib.licenses.gpl2Plus;
118   }
119   {
120     name = "propernoun";
121     description = "SKK dictionary for proper nouns";
122     license = lib.licenses.gpl2Plus;
123   }
124   {
125     name = "station";
126     description = "SKK dictionary for stations";
127     license = lib.licenses.gpl2Plus;
128   }
129   {
130     name = "law";
131     description = "SKK dictionary for legal terms";
132     license = lib.licenses.gpl2Plus;
133   }
134   {
135     name = "okinawa";
136     description = "SKK dictionary for the Okinawan language";
137     license = lib.licenses.publicDomain;
138   }
139   {
140     name = "china_taiwan";
141     description = "SKK dictionary for Chinese & Taiwanese locations";
142     license = lib.licenses.gpl2Plus;
143   }
144   {
145     name = "assoc";
146     description = "SKK dictionary for abbreviated input";
147     license = lib.licenses.gpl2Plus;
148   }
149   {
150     name = "edict";
151     description = "SKK dictionary for English to Japanese translation";
152     license = lib.licenses.cc-by-sa-30;
153   }
154   {
155     name = "zipcode";
156     description = "SKK dictionary for Japanese zipcodes";
157     files = [ "zipcode/SKK-JISYO.zipcode" "zipcode/SKK-JISYO.office.zipcode" ];
158     license = lib.licenses.publicDomain;
159   }
160   {
161     name = "JIS2";
162     description = "SKK dictionary for JIS level 2 kanjis";
163     license = lib.licenses.gpl2Plus;
164   }
165   {
166     name = "JIS3_4";
167     description = "SKK dictionary for JIS level 3 and 4 kanjis";
168     license = lib.licenses.gpl2Plus;
169   }
170   {
171     name = "JIS2004";
172     description = ''
173       A complementary SKK dictionary for JIS3_4 with JIS X 0213:2004 additions"
174     '';
175     license = lib.licenses.gpl2Plus;
176   }
177   {
178     name = "itaiji";
179     description = "SKK dictionary for variant kanjis";
180     license = lib.licenses.publicDomain;
181   }
182   {
183     name = "itaiji.JIS3_4";
184     description = "SKK dictionary for JIS level 3 and 4 variant kanjis";
185     license = lib.licenses.gpl2Plus;
186   }
187   {
188     name = "mazegaki";
189     description = "SKK dictionary for mazegaki";
190     license = lib.licenses.gpl2Plus;
191   }
192   {
193     name = "emoji";
194     description = "SKK dictionary for emojis";
195     license = lib.licenses.unicode-dfs-2016;
196   }
197   {
198     name = "pinyin";
199     description = "SKK dictionary for pinyin to simplified Chinese input";
200     license = lib.licenses.gpl1Plus;
201   }