52 lines
1.4 KiB
Nix
52 lines
1.4 KiB
Nix
{ lib, pkgs, ... }:
|
||
let
|
||
makebinds = attrs: lib.pipe attrs [
|
||
(attr: builtins.mapAttrs (_: keys: (builtins.map (key: "<${key}>") keys)) attr)
|
||
(attr: (builtins.mapAttrs (_: keys: (builtins.concatStringsSep " " keys)) attr))
|
||
(attr: (lib.attrsets.mapAttrsToList (sum: keys: ''<Multi_key> ${keys} : "${sum}"'') attr))
|
||
(attr: builtins.concatStringsSep "\n" attr)
|
||
];
|
||
|
||
binds = lib.concatStringsSep "\n" [
|
||
# ''include "%L"''
|
||
(makebinds {
|
||
"ě" = [ "e" "j" ];
|
||
|
||
"ѣ" = [ "Cyrillic_ie" "Cyrillic_ie" ];
|
||
"Ѣ" = [ "Cyrillic_IE" ];
|
||
"ѳ" = [ "Cyrillic_ef" ];
|
||
"ѵ" = [ "Cyrillic_i" ];
|
||
"ґ" = [ "Cyrillic_ghe" ];
|
||
"є" = [ "Cyrillic_ie" "Cyrillic_e" ];
|
||
|
||
"љ" = [ "Cyrillic_el" "Cyrillic_el" ];
|
||
"њ" = [ "Cyrillic_en" "Cyrillic_en" ];
|
||
|
||
"ѧ" = [ "Cyrillic_e" "Cyrillic_en" ];
|
||
"ѩ" = [ "Cyrillic_ie" "Cyrillic_en" ];
|
||
"ѫ" = [ "Cyrillic_o" "Cyrillic_en" ];
|
||
"ѭ" = [ "Cyrillic_io" "Cyrillic_en" ];
|
||
|
||
"¨" = [ "Colon" ];
|
||
|
||
"α" = [ "g" "a" ];
|
||
"β" = [ "g" "b" ];
|
||
"γ" = [ "g" "g" ];
|
||
"λ" = [ "g" "l" ];
|
||
})
|
||
];
|
||
|
||
in {
|
||
environment.variables.XCOMPOSEFILE = ".XCompose";
|
||
hm = {
|
||
home.file.".XCompose" = {
|
||
enable = true;
|
||
target = ".XCompose";
|
||
recursive = false;
|
||
text = binds;
|
||
};
|
||
|
||
programs.niri.settings.input.keyboard.xkb.file = toString (pkgs.writeText "compose.xkb" binds);
|
||
};
|
||
}
|