mirror of
https://github.com/kmein/niveum
synced 2026-03-20 12:01:06 +01:00
keyboard: add gujarati and refactor
This commit is contained in:
@@ -6,50 +6,39 @@
|
|||||||
commaSep = builtins.concatStringsSep ",";
|
commaSep = builtins.concatStringsSep ",";
|
||||||
xkbOptions = ["compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle"];
|
xkbOptions = ["compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle"];
|
||||||
languages = {
|
languages = {
|
||||||
de = "T3";
|
deutsch = { code = "de"; variant = "T3"; };
|
||||||
gr = "polytonic";
|
greek = { code = "gr"; variant = "polytonic"; };
|
||||||
ru = "phonetic";
|
russian = { code = "ru"; variant = "phonetic"; };
|
||||||
arabic = "";
|
arabic = ../lib/keyboards/arabic;
|
||||||
coptic = "";
|
coptic = ../lib/keyboards/coptic;
|
||||||
avestan = "";
|
avestan = ../lib/keyboards/avestan;
|
||||||
gothic = "";
|
gothic = ../lib/keyboards/gothic;
|
||||||
"in" = "san-kagapa";
|
sanskrit = { code = "in"; variant = "san-kagapa"; };
|
||||||
il = "phonetic";
|
gujarati = {code = "in"; variant = "guj-kagapa"; };
|
||||||
|
hebrew = {code = "il"; variant = "phonetic";};
|
||||||
};
|
};
|
||||||
defaultLanguage = "de";
|
defaultLanguage = languages.deutsch;
|
||||||
in {
|
in {
|
||||||
services.libinput.enable = true;
|
services.libinput.enable = true;
|
||||||
|
|
||||||
# man 7 xkeyboard-config
|
# man 7 xkeyboard-config
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
exportConfiguration = true; # link /usr/share/X11 properly
|
exportConfiguration = true; # link /usr/share/X11 properly
|
||||||
xkb.layout = "de";
|
xkb.layout = defaultLanguage.code;
|
||||||
# T3: https://upload.wikimedia.org/wikipedia/commons/a/a9/German-Keyboard-Layout-T3-Version1-large.png
|
# T3: https://upload.wikimedia.org/wikipedia/commons/a/a9/German-Keyboard-Layout-T3-Version1-large.png
|
||||||
# buckwalter: http://www.qamus.org/transliteration.htm
|
# buckwalter: http://www.qamus.org/transliteration.htm
|
||||||
xkb.variant = "T3";
|
xkb.variant = defaultLanguage.variant;
|
||||||
xkb.options = commaSep xkbOptions;
|
xkb.options = commaSep xkbOptions;
|
||||||
xkb.dir = pkgs.symlinkJoin {
|
xkb.dir = pkgs.symlinkJoin {
|
||||||
name = "x-keyboard-directory";
|
name = "x-keyboard-directory";
|
||||||
paths = [
|
paths = [
|
||||||
"${pkgs.xkeyboard_config}/etc/X11/xkb"
|
"${pkgs.xkeyboard_config}/etc/X11/xkb"
|
||||||
(pkgs.linkFarm "custom-x-keyboards" [
|
(pkgs.linkFarm "custom-x-keyboards" (
|
||||||
{
|
lib.mapAttrsToList (name: value: {
|
||||||
name = "symbols/arabic";
|
name = "symbols/${name}";
|
||||||
path = ../lib/keyboards/arabic;
|
path = value;
|
||||||
}
|
}) (lib.filterAttrs (_: value: builtins.typeOf value == "path") languages)
|
||||||
{
|
))
|
||||||
name = "symbols/coptic";
|
|
||||||
path = ../lib/keyboards/coptic;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "symbols/gothic";
|
|
||||||
path = ../lib/keyboards/gothic;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "symbols/avestan";
|
|
||||||
path = ../lib/keyboards/avestan;
|
|
||||||
}
|
|
||||||
])
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -60,9 +49,13 @@ in {
|
|||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
lib.mapAttrsToList
|
lib.mapAttrsToList
|
||||||
(language: variant:
|
(language: settings:
|
||||||
|
let
|
||||||
|
code = if settings ? "code" then settings.code else language;
|
||||||
|
variant = if settings ? "variant" then settings.variant else "";
|
||||||
|
in
|
||||||
pkgs.writers.writeDashBin "kb-${language}" ''
|
pkgs.writers.writeDashBin "kb-${language}" ''
|
||||||
${pkgs.xorg.setxkbmap}/bin/setxkbmap ${defaultLanguage},${language} ${languages.${defaultLanguage}},${variant} ${toString (map (option: "-option ${option}") xkbOptions)}
|
${pkgs.xorg.setxkbmap}/bin/setxkbmap ${defaultLanguage.code},${code} ${defaultLanguage.variant},${variant} ${toString (map (option: "-option ${option}") xkbOptions)}
|
||||||
'')
|
'')
|
||||||
languages;
|
languages;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user