profiles/i18n: modularize common config into separate options

This commit is contained in:
Gabriel Arazas 2022-09-12 18:51:09 +08:00
parent b95f6d7fd2
commit 39e11eac71
2 changed files with 86 additions and 48 deletions

View File

@ -3,13 +3,27 @@
let let
cfg = config.profiles.i18n; cfg = config.profiles.i18n;
in { in
options.profiles.i18n.enable = lib.mkEnableOption "i18n-related options"; {
options.profiles.i18n = {
enable = lib.mkEnableOption "i18n-related options";
ibus.enable = lib.mkEnableOption "i18n config with ibus";
fcitx5.enable = lib.mkEnableOption "i18n config with fcitx5";
};
config = lib.mkIf cfg.enable (lib.mkMerge [
{
assertions = let enabledi18nConfigs = lib.countAttrs (_: setup: lib.isAttrs setup && setup.enable) cfg; in
[{
assertion = enabledi18nConfigs < 1;
message = ''
Only one i18n setup should be enabled at any given time.
'';
}];
config = lib.mkIf cfg.enable {
# I don't speak all of the listed languages. It's just nice to have some # I don't speak all of the listed languages. It's just nice to have some
# additional language packs for it. ;p # additional language packs for it. ;p
i18n.supportedLocales = [ i18n.supportedLocales = lib.mkBefore [
"en_US.UTF-8/UTF-8" "en_US.UTF-8/UTF-8"
"ja_JP.UTF-8/UTF-8" "ja_JP.UTF-8/UTF-8"
"ko_KR.UTF-8/UTF-8" "ko_KR.UTF-8/UTF-8"
@ -39,5 +53,38 @@ in {
source-han-serif source-han-serif
source-han-mono source-han-mono
]; ];
}
(lib.mkIf cfg.ibus.enable {
i18n.inputMethod = {
enabled = "ibus";
ibus.engines = with pkgs.ibus-engines; [
mozc
rime
hangul
table
table-others
typing-booster
uniemoji
];
}; };
})
(lib.mkIf cfg.fcitx5.enable {
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5 = {
enableRimeData = true;
addons = with pkgs; [
fcitx5-lua
fcitx5-mozc
fcitx5-rime
fcitx5-table-extra
fcitx5-table-other
fcitx5-unikey
];
};
};
})
]);
} }

View File

@ -110,18 +110,9 @@ in
}; };
services.packagekit.enable = false; services.packagekit.enable = false;
profiles.i18n = {
i18n.inputMethod = { enable = true;
enabled = "ibus"; ibus.enable = true;
ibus.engines = with pkgs.ibus-engines; [
mozc
rime
hangul
table
table-others
typing-booster
uniemoji
];
}; };
# Since we're using KDE Connect, we'll have to use gsconnect. # Since we're using KDE Connect, we'll have to use gsconnect.