nixos-config/modules/nixos/profiles/i18n.nix

91 lines
2.1 KiB
Nix
Raw Normal View History

2022-07-13 23:58:39 +00:00
# System-wide i18n options.
{ config, options, lib, pkgs, ... }:
let
cfg = config.profiles.i18n;
in
{
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";
2022-07-13 23:58:39 +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;
message = ''
Only one i18n setup should be enabled at any given time.
'';
}];
# I don't speak all of the listed languages. It's just nice to have some
# additional language packs for it. ;p
i18n.supportedLocales = lib.mkBefore [
"en_US.UTF-8/UTF-8"
"ja_JP.UTF-8/UTF-8"
"ko_KR.UTF-8/UTF-8"
"zh_CN.UTF-8/UTF-8"
"zh_HK.UTF-8/UTF-8"
"zh_SG.UTF-8/UTF-8"
"tl_PH.UTF-8/UTF-8"
"fr_FR.UTF-8/UTF-8"
"it_IT.UTF-8/UTF-8"
];
environment.systemPackages = with pkgs; [
goldendict
];
# The most minimal set of packages for most locales.
fonts.fonts = with pkgs; [
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 = {
enableRimeData = true;
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
}