nix-config/packages/fcitx5-mozc.nix

149 lines
3.7 KiB
Nix
Raw Normal View History

2024-11-18 08:53:02 +01:00
{
bazel_6,
buildBazelPackage,
fcitx5,
fetchFromGitHub,
gettext,
lib,
mozc,
nixosTests,
pkg-config,
python3,
stdenv,
unzip,
}:
buildBazelPackage {
pname = "fcitx5-mozc";
version = "2.30.5544.102";
src = fetchFromGitHub {
owner = "fcitx";
repo = "mozc";
fetchSubmodules = true;
rev = "57e67f2a25e4c0861e0e422da0c7d4c232d89fcc";
hash = "sha256-1EZjEbMl+LRipH5gEgFpaKP8uEKPfupHmiiTNJc/T1k=";
};
nativeBuildInputs = [
gettext
pkg-config
python3
unzip
];
buildInputs = [
mozc
fcitx5
];
postPatch = ''
sed -i -e 's|^\(LINUX_MOZC_SERVER_DIR = \).\+|\1"${mozc}/lib/mozc"|' src/config.bzl
'';
bazel = bazel_6;
removeRulesCC = false;
dontAddBazelOpts = true;
bazelFlags = [
"--config"
"oss_linux"
"--compilation_mode"
"opt"
];
bazelTargets = [
"unix/fcitx5:fcitx5-mozc.so"
"unix/icons"
];
fetchAttrs = {
preInstall = ''
rm -rf $bazelOut/external/fcitx5
'';
sha256 = "sha256-rrRp/v1pty7Py80/6I8rVVQvkeY72W+nlixUeYkjp+o=";
};
preConfigure = ''
cd src
'';
buildAttrs = {
installPhase = ''
runHook preInstall
install -Dm444 ../LICENSE $out/share/licenses/fcitx5-mozc/LICENSE
install -Dm444 data/installer/credits_en.html $out/share/licenses/fcitx5-mozc/Submodules
install -Dm555 bazel-bin/unix/fcitx5/fcitx5-mozc.so $out/lib/fcitx5/fcitx5-mozc.so
install -Dm444 unix/fcitx5/mozc-addon.conf $out/share/fcitx5/addon/mozc.conf
install -Dm444 unix/fcitx5/mozc.conf $out/share/fcitx5/inputmethod/mozc.conf
for pofile in unix/fcitx5/po/*.po; do
filename=$(basename $pofile)
lang=''${filename/.po/}
mofile=''${pofile/.po/.mo}
msgfmt $pofile -o $mofile
install -Dm444 $mofile $out/share/locale/$lang/LC_MESSAGES/fcitx5-mozc.mo
done
msgfmt --xml -d unix/fcitx5/po/ --template unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml.in -o unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml
install -Dm444 unix/fcitx5/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml $out/share/metainfo/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml
cd bazel-bin/unix
unzip -o icons.zip
# These are relative symlinks, they will always resolve to files within $out
install -Dm444 mozc.png $out/share/icons/hicolor/128x128/apps/org.fcitx.Fcitx5.fcitx_mozc.png
ln -s org.fcitx.Fcitx5.fcitx_mozc.png $out/share/icons/hicolor/128x128/apps/fcitx_mozc.png
for svg in \
alpha_full.svg \
alpha_half.svg \
direct.svg \
hiragana.svg \
katakana_full.svg \
katakana_half.svg \
outlined/dictionary.svg \
outlined/properties.svg \
outlined/tool.svg
do
name=$(basename -- $svg)
path=$out/share/icons/hicolor/scalable/apps
prefix=org.fcitx.Fcitx5.fcitx_mozc
install -Dm444 $svg $path/$prefix_$name
ln -s $prefix_$name $path/fcitx_mozc_$name
done
runHook postInstall
'';
};
passthru.tests = lib.optionalAttrs stdenv.hostPlatform.isLinux {
inherit (nixosTests) fcitx5;
};
meta = with lib; {
description = "Mozc - a Japanese Input Method Editor designed for multi-platform";
homepage = "https://github.com/fcitx/mozc";
license = with licenses; [
asl20 # abseil-cpp
bsd3 # mozc, breakpad, gtest, gyp, japanese-usage-dictionary, protobuf
mit # wil
naist-2003 # IPAdic
publicDomain # src/data/test/stress_test, Okinawa dictionary
unicode-30 # src/data/unicode, breakpad
];
maintainers = with maintainers; [
berberman
govanify
musjj
];
platforms = platforms.linux;
};
}