2022-12-10 10:47:34 +00:00
|
|
|
# System-wide i18n options. This is primarily used for desktop installations.
|
|
|
|
# Unless there is really good reasons for setting i18n options on the server,
|
|
|
|
# this module will stay aiming for desktop.
|
2022-07-13 23:58:39 +00:00
|
|
|
{ config, options, lib, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
cfg = config.profiles.i18n;
|
2022-09-12 10:51:09 +00:00
|
|
|
in
|
|
|
|
{
|
|
|
|
options.profiles.i18n = {
|
2022-10-10 03:45:22 +00:00
|
|
|
enable = lib.mkEnableOption "main i18n config";
|
2022-09-12 10:51:09 +00:00
|
|
|
ibus.enable = lib.mkEnableOption "i18n config with ibus";
|
|
|
|
fcitx5.enable = lib.mkEnableOption "i18n config with fcitx5";
|
2022-07-13 23:58:39 +00:00
|
|
|
};
|
2022-09-12 10:51:09 +00:00
|
|
|
|
|
|
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
|
|
|
{
|
|
|
|
assertions = let enabledi18nConfigs = lib.countAttrs (_: setup: lib.isAttrs setup && setup.enable) cfg; in
|
|
|
|
[{
|
2022-09-19 12:57:49 +00:00
|
|
|
assertion = enabledi18nConfigs <= 1;
|
2022-09-12 10:51:09 +00:00
|
|
|
message = ''
|
|
|
|
Only one i18n setup should be enabled at any given time.
|
|
|
|
'';
|
|
|
|
}];
|
|
|
|
|
2022-11-29 13:07:05 +00:00
|
|
|
# I don't speak all of the languages. It's just nice to have some
|
2022-09-12 10:51:09 +00:00
|
|
|
# additional language packs for it. ;p
|
2022-11-29 13:07:05 +00:00
|
|
|
i18n.supportedLocales = lib.mkForce [ "all" ];
|
2022-09-12 10:51:09 +00:00
|
|
|
|
|
|
|
# The most minimal set of packages for most locales.
|
2023-07-29 05:21:20 +00:00
|
|
|
fonts.packages = with pkgs; [
|
2022-09-12 10:51:09 +00:00
|
|
|
noto-fonts
|
|
|
|
noto-fonts-cjk
|
|
|
|
noto-fonts-cjk-sans
|
|
|
|
noto-fonts-cjk-serif
|
|
|
|
|
|
|
|
source-code-pro
|
|
|
|
source-sans-pro
|
|
|
|
source-han-sans
|
|
|
|
source-serif-pro
|
|
|
|
source-han-serif
|
|
|
|
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 = {
|
|
|
|
addons = with pkgs; [
|
|
|
|
fcitx5-lua
|
|
|
|
fcitx5-mozc
|
|
|
|
fcitx5-rime
|
|
|
|
fcitx5-table-extra
|
|
|
|
fcitx5-table-other
|
|
|
|
fcitx5-unikey
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
})
|
|
|
|
]);
|
2022-07-13 23:58:39 +00:00
|
|
|
}
|