{ pkgs, ... }@all: with all;
{
  # i18n.inputMethod = {
  #   type = "fcitx5";
  #   enable = true;
  #   fcitx5.addons = with pkgs; [
  #     fcitx5-gtk             # alternatively, kdePackages.fcitx5-qt
  #     fcitx5-chinese-addons  # table input method support
  #     fcitx5-nord            # a color theme
  #   ];
  # };
  i18n.inputMethod = {
    enable = true;
    type = "fcitx5";
    fcitx5.waylandFrontend = true;
    fcitx5.addons = with pkgs; [
      fcitx5-gtk             # alternatively, kdePackages.fcitx5-qt
      fcitx5-chinese-addons  # table input method support
      fcitx5-nord            # a color theme
    ];
  };
  # i18n.inputMethod = {
  #   enabled = "fcitx5";
  #   ignoreUserConfig = true;
  #   waylandFrontend = true;
  #   fcitx5 = {
  #     addons = with pkgs-unstable; [
  #       rime-data
  #       fcitx5-rime

  #       # Chinese
  #       fcitx5-chinese-addons
  #       fcitx5-table-extra
  #       fcitx5-pinyin-moegirl
  #       fcitx5-pinyin-zhwiki

  #       # Japanese
  #       # fcitx5-mozc
  #     ];
  #     settings = {
        # globalOptions = {
        #   Hotkey = {
        #     # Enumerate when press trigger key repeatedly
        #     EnumerateWithTriggerKeys = "True";
        #     # Skip first input method while enumerating
        #     EnumerateSkipFirst = "False";
        #   };
        #   "Hotkey/EnumerateForwardKeys"  = { "0" = "Control+space";       };
        #   "Hotkey/EnumerateBackwardKeys" = { "0" = "Control+Shift+space"; };
        #   "Hotkey/PrevPage"              = { "0" = "Up";                  };
        #   "Hotkey/NextPage"              = { "0" = "Down";                };
        #   "Hotkey/PrevCandidate"         = { "0" = "Shift+Tab";           };
        #   "Hotkey/NextCandidate"         = { "0" = "Tab";                 };
        #   Behavior = {
        #     ActiveByDefault = "False";                       # Active By Default
        #     ShareInputState = "No";                          # Share Input State
        #     PreeditEnabledByDefault = "True";                # Show preedit in application
        #     ShowInputMethodInformation = "True";             # Show Input Method Information when switch input method
        #     showInputMethodInformationWhenFocusIn = "False"; # Show Input Method Information when changing focus
        #     CompactInputMethodInformation = "True";          # Show compact input method information
        #     ShowFirstInputMethodInformation = "True";        # Show first input method information
        #     DefaultPageSize = "5";                           # Default page size
        #     OverrideXkbOption = "False";                     # Override Xkb Option
        #     PreloadInputMethod = "True";                     # Preload input method to be used by default
        #   };
        # };
        # inputMethod = {
        #   "Groups/0" = {
        #     "Name" = "Default";
        #     "Default Layout" = "us";
        #     "DefaultIM" = "mozc";
        #   };
        #   "Groups/0/Items/0" = {
        #     "Name" = "keyboard-us";
        #     "Layout" = null;
        #   };
        #   "Groups/0/Items/1" = {
        #     "Name" = "mozc";
        #     "Layout" = null;
        #   };
        #   "GroupOrder" = {
        #     "0" = "Default";
        #   };
        # };
      # };
    # };
  # };
}
