at 15.09-beta 1.1 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.programs.ibus; 7in 8{ 9 options = { 10 11 programs.ibus = { 12 enable = mkOption { 13 type = types.bool; 14 default = false; 15 example = true; 16 description = "Enable IBus input method"; 17 }; 18 plugins = mkOption { 19 type = lib.types.listOf lib.types.path; 20 default = []; 21 description = '' 22 IBus plugin packages 23 ''; 24 }; 25 }; 26 27 }; 28 29 config = mkIf cfg.enable { 30 environment.systemPackages = [ pkgs.ibus ]; 31 32 gtkPlugins = [ pkgs.ibus ]; 33 qtPlugins = [ pkgs.ibus-qt ]; 34 35 environment.variables = 36 let 37 env = pkgs.buildEnv { 38 name = "ibus-env"; 39 paths = [ pkgs.ibus ] ++ cfg.plugins; 40 }; 41 in { 42 GTK_IM_MODULE = "ibus"; 43 QT_IM_MODULE = "ibus"; 44 XMODIFIERS = "@im=ibus"; 45 46 IBUS_COMPONENT_PATH = "${env}/share/ibus/component"; 47 }; 48 49 services.xserver.displayManager.sessionCommands = "${pkgs.ibus}/bin/ibus-daemon --daemonize --xim --cache=none"; 50 }; 51}