This commit is contained in:
Nadia 2024-05-01 18:38:43 +05:45 committed by GitHub
commit 72a07e6174
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 84 additions and 2 deletions

View File

@ -22,13 +22,14 @@ let
'';
in {
imports = [ ./fcitx5.nix ./hime.nix ./kime.nix ./nabi.nix ./uim.nix ];
imports =
[ ./fcitx5.nix ./hime.nix ./kime.nix ./nabi.nix ./uim.nix ./ibus.nix ];
options.i18n = {
inputMethod = {
enabled = mkOption {
type = types.nullOr
(types.enum [ "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" ]);
(types.enum [ "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" "ibus" ]);
default = null;
example = "fcitx5";
description = ''
@ -58,6 +59,9 @@ in {
`kime`
: A Korean IME.
`ibus`
: The intelligent input bus.
'';
};

View File

@ -0,0 +1,72 @@
{ config, pkgs, lib, ... }:
with lib;
let
im = config.i18n.inputMethod;
cfg = im.ibus;
impanel = optionalString (cfg.panel != null) "--panel=${cfg.panel}";
ibusEngine = types.package // {
name = "ibus-engine";
check = x:
(lib.types.package.check x)
&& (attrByPath [ "meta" "isIbusEngine" ] false x);
};
ibusPackage = pkgs.ibus-with-plugins.override { inherit (cfg) engines; };
in {
options = {
i18n.inputMethod.ibus = {
engines = mkOption {
type = with types; listOf ibusEngine;
default = [ ];
example = literalExpression "with pkgs.ibus-engines; [ mozc hangul ]";
description = ''
Enabled IBus engines.
'';
};
panel = mkOption {
type = with types; nullOr path;
default = null;
example = literalExpression ''
"''${pkgs.plasma5Packages.plasma-desktop}/libexec/kimpanel-ibus-panel"'';
description = ''
Replace the IBus panel with another panel.
'';
};
};
};
config = mkIf (im.enabled == "ibus") {
i18n.inputMethod.package = ibusPackage;
home.sessionVariables = {
GLFW_IM_MODULE = "ibus";
GTK_IM_MODULE = "ibus";
QT_IM_MODULE = "ibus";
XMODIFIERS = "@im=ibus";
};
# Without dconf enabled it is impossible to use IBus
programs.dconf.enable = true;
programs.dconf.packages = [ ibusPackage ];
services.dbus.packages = [ ibusPackage ];
xdg.portal.extraPortals = mkIf config.xdg.portal.enable [ ibusPackage ];
systemd.user.services.ibus-daemon = {
Unit = {
Description = "IBus input method editor";
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${ibusPackage}/bin/ibus-daemon --replace --xim ${impanel}";
ExecReload = "${ibusPackage}/bin/ibus restart";
ExecStop = "${ibusPackage}/bin/ibus exit";
};
Install.WantedBy = [ "graphical-session.target" ];
};
};
meta.maintainers = with maintainers; [ nyadiia ];
}

View File

@ -237,6 +237,12 @@
github = "nilp0inter";
githubId = 1224006;
};
nyadiia = {
name = "Nadia";
email = "nyadiia@pm.me";
github = "nyadiia";
githubId = 43252360;
};
seylerius = {
email = "sable@seyleri.us";
name = "Sable Seyler";