blog.anqou.net
rss
author
tags

NixOS で Karukan を使う

Karukan は GPT-2 を利用した日本語入力システムです。 Linux と macOS で動作します。Linux では Fcitx5 のアドオンとして動くようになっています。これを NixOS で動かしてみます。Karukan は現在のところ nixpkgs には収録されていません。 Karukan の(Linux 用の karukan-im の)ドキュメントには Ubuntu を想定したインストール方法のみが記載されているので、これを参考に Nix でビルドできるようにします。

まず以下のような Nix プログラムを karukan.nix のような名前で保存します[1]

{
  cmake,
  fetchFromGitHub,
  libxkbcommon,
  openssl,
  pkg-config,
  rustPlatform,
  kdePackages,
  fcitx5,
}:
rustPlatform.buildRustPackage (finalAttrs: {
  pname = "karukan";
  version = "0.1.0";

  src = fetchFromGitHub {
    owner = "togatoga";
    repo = "karukan";
    rev = "3a96300e1005a80f6acb98b3dba877ed2041f8ba";
    hash = "sha256-KMC7YYFi0UbOkZM7Q/s1eYUXeV9R5JdQj9wtJj5bWBI=";
  };

  cargoHash = "sha256-4j43EwFsNdJ1HqMwdEE8IKC0y/2gKh0+zNUP5ViIy9k=";

  nativeBuildInputs = [
    cmake
    kdePackages.extra-cmake-modules
    libxkbcommon
    pkg-config
    rustPlatform.bindgenHook # cf. https://github.com/NixOS/nixpkgs/issues/52447#issuecomment-1915060425
    fcitx5
  ];

  buildInputs = [
    kdePackages.extra-cmake-modules
    fcitx5
    libxkbcommon
    openssl
  ];

  doCheck = false;

  configurePhase = ''
    pushd karukan-im/fcitx5-addon
    cmakeConfigurePhase
    popd
  '';

  buildPhase = ''
    runHook preBuild
    pushd karukan-im/fcitx5-addon
    cmake --build build
    popd
    runHook postBuild
  '';

  installPhase = ''
    runHook preInstall
    pushd karukan-im/fcitx5-addon
    cmake --install build
    popd
    runHook postInstall
  '';
})

次に karukan を Fcitx5 のアドオンとして追加します。NixOS の場合は i18n.inputMethod.fcitx5.addons に設定します:

  i18n.inputMethod = {
    fcitx5.addons = [
      (pkgs.callPackage ./karukan.nix {})
    ];
  };

あとは Karukan のインストールドキュメントに従って Fcitx5 の GUI ツールから設定すると使えるようになります。この記事は上記のようにビルドした Karukan を使って書きました。

注釈

  1. 正直この Nix プログラムはまだ荒削りでもう少しどうにかなる気がしますが、とりあえず今日の成果ということで書いています。