53 lines
1.2 KiB
Nix
53 lines
1.2 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
cfg = config.opts.kb-input;
|
|
in {
|
|
options = {
|
|
opts.kb-input = {
|
|
enable = lib.mkEnableOption "input method and custom keyboard layout";
|
|
enableMinimak = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Enable Minimak keyboard layout";
|
|
};
|
|
enableFcitx = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Enable Fcitx5 input method";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
services.xserver.xkb.extraLayouts = lib.mkIf cfg.enableMinimak {
|
|
minimak-4 = {
|
|
description = "English (US, Minimak-4)";
|
|
languages = [ "eng" ];
|
|
symbolsFile = ./minimak;
|
|
};
|
|
minimak-8 = {
|
|
description = "English (US, Minimak-8)";
|
|
languages = [ "eng" ];
|
|
symbolsFile = ./minimak;
|
|
};
|
|
minimak-12 = {
|
|
description = "English (US, Minimak-12)";
|
|
languages = [ "eng" ];
|
|
symbolsFile = ./minimak;
|
|
};
|
|
};
|
|
|
|
i18n.inputMethod = lib.mkIf cfg.enableFcitx {
|
|
enable = true;
|
|
type = "fcitx5";
|
|
fcitx5.waylandFrontend = true;
|
|
fcitx5.plasma6Support = true;
|
|
fcitx5.addons = [ pkgs.fcitx5-mozc ];
|
|
};
|
|
};
|
|
}
|