nix-configs/modules/desktop/ibus.nix
Lucy Hochkamp 6002b09ca6
Some checks failed
ci/woodpecker/push/build-cache Pipeline failed
ci/woodpecker/cron/dependency-pr Pipeline was successful
moar -> moor
2025-10-27 15:52:41 +01:00

52 lines
1.5 KiB
Nix

{
pkgs,
config,
lib,
...
}:
with lib;
let
cfg = config.xyno.desktop.ibus;
in
{
options.xyno.desktop.ibus.enable = mkEnableOption "enable ibus input daemon thing";
options.xyno.desktop.ibus.wantedBy = mkOption {
type = types.str;
default = "niri.service";
};
config = mkIf cfg.enable {
services.libinput.enable = true;
# just... enable ibus as input method and maybe now we have consistent unicode input everywhere
# fuck qt tbh
i18n.inputMethod = {
enable = true;
type = "ibus";
};
systemd.user.services.ibus =
let
ibusPackage = config.i18n.inputMethod.package;
in
assert hasPrefix "ibus-with-plugins" ibusPackage.name;
{
# panel is weird...
# default is ${ibusPackage}/libexec/ibus-ui-gtk3 which works but sends a notification that it's misconfigured
# wayland support can be enabled with --enable-wayland-im but that segfaults (possible due to zwp_input_method_v1 not being available?)
script = ''
exec ${ibusPackage}/bin/ibus-daemon --xim --replace --panel '${ibusPackage}/libexec/ibus-ui-gtk3'
'';
serviceConfig = {
Type = "dbus";
BusName = "org.freedesktop.IBus";
Restart = "on-abnormal";
};
unitConfig = {
CollectMode = "inactive-or-failed";
};
# yeah we hardcoding this now, fuck it
wantedBy = [ cfg.wantedBy ];
partOf = [ "graphical-session.target" ];
};
};
}