From f3141d61089f3157e86545acfb8c23f27d23b78d Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Mon, 27 Apr 2026 19:57:23 +0200 Subject: [PATCH] feat(i18n): proper multilingual input Use fcitx5 to switch between different inputs. Installed mozc-ut for Japanese input with the bepo layout, as well as fcitx5-chinese to load table-defined layouts for the IPA/X-SAMPA input method. Currently, mozc_server and fcitx5 need to be launched by the compositor (only Hyprland for now), auto-launching from module options needs to be implemented in the future. --- hosts/gampo/configuration.nix | 1 + hosts/marpa/configuration.nix | 1 + system/i18n/default.nix | 1 + system/i18n/input.nix | 24 + users/modules/desktop/hyprland.nix | 9 +- users/phundrak/XCompose | 1673 ++++++++++++++++++++++++++++ users/phundrak/home.nix | 23 +- 7 files changed, 1719 insertions(+), 13 deletions(-) create mode 100644 system/i18n/input.nix create mode 100644 users/phundrak/XCompose diff --git a/hosts/gampo/configuration.nix b/hosts/gampo/configuration.nix index eceacd1..64301aa 100644 --- a/hosts/gampo/configuration.nix +++ b/hosts/gampo/configuration.nix @@ -41,6 +41,7 @@ }; sound.enable = true; }; + i18n.input.enable = true; misc.keymap = "fr-bepo"; networking = { hostname = "gampo"; diff --git a/hosts/marpa/configuration.nix b/hosts/marpa/configuration.nix index ad525a7..ae81c27 100644 --- a/hosts/marpa/configuration.nix +++ b/hosts/marpa/configuration.nix @@ -86,6 +86,7 @@ scarlett.enable = true; }; }; + i18n.input.enable = true; misc.keymap = "fr-bepo"; networking = { hostname = "marpa"; diff --git a/system/i18n/default.nix b/system/i18n/default.nix index 68dfb9d..722d144 100644 --- a/system/i18n/default.nix +++ b/system/i18n/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./input.nix ./locale.nix ]; } diff --git a/system/i18n/input.nix b/system/i18n/input.nix new file mode 100644 index 0000000..9014ae1 --- /dev/null +++ b/system/i18n/input.nix @@ -0,0 +1,24 @@ +{ + lib, + config, + ... +}: +with lib; let + cfg = config.mySystem.i18n.input; +in { + options.mySystem.i18n.input.enable = mkEnableOption "Enable i18n input with fcitx5"; + + config.i18n.inputMethod = mkIf cfg.enable { + enable = true; + type = "fcitx5"; + fcitx5.addons = with pkgs; [ + fcitx5-gtk + fcitx5-mozc-ut # Japanese input support + fcitx5-nord + fcitx5-table-other # X-SAMPA to IPA support + qt6Packages.fcitx5-chinese-addons # allow to load table addons + qt6Packages.fcitx5-configtool + qt6Packages.fcitx5-with-addons + ]; + }; +} diff --git a/users/modules/desktop/hyprland.nix b/users/modules/desktop/hyprland.nix index 3a24ea0..93e732a 100644 --- a/users/modules/desktop/hyprland.nix +++ b/users/modules/desktop/hyprland.nix @@ -50,10 +50,13 @@ in { systemd.enable = false; importantPrefixes = ["$left" "$right" "$up" "$down" "$menu"]; settings = { + env = [ + "XMODIFIERS,@im=fcitx" + "XCURSOR_SIZE,12" + ]; input = { kb_layout = "fr,us"; kb_variant = "bepo_afnor,"; - # kb_options = "caps:ctrl_modifier"; numlock_by_default = true; follow_mouse = 1; touchpad.natural_scroll = false; @@ -106,6 +109,8 @@ in { "pactl load-module module-switch-on-connect" "${pkgs.mpc}/bin/mpc stop" "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" + "${pkgs.mozc}/lib/mozc/mozc_server" + "${pkgs.fcitx5}/bin/fcitx5 -d" ] ++ lib.lists.optional (! caelestiaEnabled) "${pkgs.networkmanagerapplet}/bin/nm-applet"; }; @@ -170,8 +175,6 @@ in { bind = SUPER_SHIFT, minus, movetoworkspace, 8 bind = SUPER_SHIFT, slash, movetoworkspace, 9 bind = SUPER_SHIFT, asterisk, movetoworkspace, 10 - - env = XCURSOR_SIZE,12 ''; }; }; diff --git a/users/phundrak/XCompose b/users/phundrak/XCompose new file mode 100644 index 0000000..a03d592 --- /dev/null +++ b/users/phundrak/XCompose @@ -0,0 +1,1673 @@ +include "%L" + : U025F + : abovedot + : abovedot + : abovedot + : U0307 + : U0307 + : U0307 + : U0307 + : U0307 + : U0307 + : U0307 + : U0307 + : U01D7 + : U01D8 + : acute + : acute + : acute + : acute + : U0301 + : U0301 + : U0301 + : U0301 + : U0301 + : U0301 + : U0301 + : U0301 + : period + : period + : period + : period + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : Abelowdot + : Abrevebelowdot + : Acircumflexbelowdot + : abelowdot + : abrevebelowdot + : acircumflexbelowdot + : U1E04 + : U1E05 + : U1E0C + : U1E0D + : Ebelowdot + : Ecircumflexbelowdot + : ebelowdot + : ecircumflexbelowdot + : U1E24 + : U1E25 + : Ibelowdot + : ibelowdot + : U1E32 + : U1E33 + : Lbelowdot + : lbelowdot + : U1E42 + : U1E43 + : U1E46 + : U1E47 + : Obelowdot + : Ocircumflexbelowdot + : Ohornbelowdot + : obelowdot + : ocircumflexbelowdot + : ohornbelowdot + : U1E5A + : U1E5B + : U1E68 + : U1E62 + : U1E69 + : U1E63 + : U1E6C + : U1E6D + : Ubelowdot + : Uhornbelowdot + : ubelowdot + : uhornbelowdot + : U1E7E + : U1E7F + : U1E88 + : U1E89 + : Ybelowdot + : ybelowdot + : U1E92 + : U1E93 + : period + : period + : period + : period + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : U0323 + : breve + : breve + : breve + : U0306 + : U0306 + : U0306 + : U0306 + : U0306 + : U0306 + : U0306 + : U0306 + : U1E2A + : U1E2B + : U0202 + : U0203 + : U0206 + : U0207 + : U020A + : U020B + : U0216 + : U0217 + : U020E + : U020F + : U0212 + : U0213 + : U0311 + : U0311 + : U0311 + : U0311 + : U032E + : U032E + : U032E + : U032E + : U01D9 + : U01DA + : caron + : caron + : caron + : U030C + : U030C + : U030C + : U030C + : U030C + : U030C + : U030C + : U030C + : U032C + : U032C + : U032C + : U032C + : U032C + : U032C + : U032C + : U032C + : cedilla + : cedilla + : cedilla + : U0327 + : U0327 + : U0327 + : U0327 + : U0327 + : U0327 + : U0327 + : U0327 + : asciicircum + : asciicircum + : asciicircum + : U0302 + : U0302 + : U0302 + : U0302 + : U0302 + : U0302 + : U0302 + : U0302 + : U1E12 + : U1E13 + : U1E18 + : U1E19 + : U1E3C + : U1E3D + : U1E4A + : U1E4B + : U1E70 + : U1E71 + : U1E76 + : U1E77 + : U032D + : U032D + : U032D + : U032D + : U032D + : U032D + : U032D + : U032D + : comma + : comma + : comma + : U0326 + : U0326 + : U0326 + : U0326 + : U0326 + : U0326 + : U0326 + : U0326 + : U20B3 + : U060B + : Thai_baht + : U20BF + : ColonSign + : U20B5 + : cent + : CruzeiroSign + : U20AF + : DongSign + : EcuSign + : FFrancSign + : function + : U20B2 + : U20B4 + : U17DB + : UFDFC + : U20AD + : LiraSign + : U20BA + : U20B6 + : U20BE + : U2133 + : MillSign + : U20BB + : U20BC + : NairaSign + : U0AF1 + : U0BF9 +

: PesetaSign +

: U01A4 +

: U01A5 + : U02A0 + : U01AC + : U01AD + : UAB52 + : U01B2 + : U028B + : U2C72 + : U2C73 + : U01B3 + : U01B4 + : U1F918 + : U031B + : U031B + : U031B + : U031B + : U031B + : U031B + : U031B + : U031B + : U1E06 + : U1E07 + : U1E0E + : U1E0F + : U1E96 + : U1E34 + : U1E35 + : U1E3A + : U1E3B + : U1E48 + : U1E49 + : U1E5E + : U1E5F + : U1E6E + : U1E6F + : U1E94 + : U1E95 + : underscore + : underscore + : underscore + : underscore + : U0331 + : U0331 + : U0331 + : U0331 + : U0331 + : U0331 + : U0331 + : U0331 + : U01D5 + : U01D6 + : macron + : macron + : macron + : U0304 + : U0304 + : U0304 + : U0304 + : U0304 + : U0304 + : U0304 + : U0304 + : ogonek + : ogonek + : ogonek + : U0328 + : U0328 + : U0328 + : U0328 + : U0328 + : U0328 + : U0328 + : U0328 + : degree + : degree + : degree + : degree + : U030A + : U030A + : U030A + : U030A + : U030A + : U030A + : U030A + : U030A + : U1E00 + : U1E01 + : U0325 + : U0325 + : U0325 + : U0325 + : U0325 + : U0325 + : U0325 + : U0325 + <2> : U01BB + : U0243 + : U0180 + : U2422 + : UA792 + : UA793 + : Dstroke + : dstroke + : UA798 + : UA799 + : U01E4 + : U01E5 + : UA7A0 + : UA7A1 + : Hstroke + : hstroke + : U0197 + : U0268 + : U0248 + : U0249 + : UA740 + : UA741 + : UA7A2 + : UA7A3 + : UA742 + : UA743 + : U023D + : U019A + : UA748 + : UA7A4 + : UA7A5 + : UA74A + : UA74B + : Obarred + : obarred +

: U2C63 +

: U1D7D +

: UA750 + : UA751 + : UA756 + : UA757 + : UA758 + : UA759 + : U024C + : U03FC + : U024D + : UA7A6 + : UA7A7 + : UA7A8 + : UA7A9 + : U1D13 + : U1E9C + : U1E9D + : Tslash + : tslash + : U023E + : U2C66 + : UA7B8 + : UA7B9 + : U0244 + : U0289 + : U1D7F + : UA75E + : UA75F + : U024E + : U024F + : Zstroke + : zstroke + : slash + : slash + : slash + : U0338 + : U0338 + : U0338 + : U0338 + : U0338 + : U0338 + : U0338 + : U0338 + : endash + : endash + : endash + : endash + : U0335 + : U0335 + : U0335 + : U0335 + : U0336 + : U0336 + : U0336 + : U0336 + : U2C60 + : U2C61 + : U1D0C + : U1D0C + : U1D7E + : U1D7E + : U1D7B + : U1D7B + : U1D03 + : U1D03 + : similarequal + : asciitilde + : asciitilde + : asciitilde + : U0303 + : U0303 + : U0303 + : U0303 + : U0303 + : U0303 + : U0303 + : U0303 + : U1D6C + : U1D6D + : U1D6E + : U2C62 + : U026B + : U1D6F + : U1D70 + : Obarred +
: phonographcopyright + : U0254 + : U0186 + : UA7B7 + : UA7B6 + : U01DD + : U018E + : U203D + : U028C + : U0245 + : eth + : ETH + : U0133 + : U0132 + : ezh + : EZH + : U01BF + : U01F7 + : U0251 + : U2C6D + : UA725 + : UA724 + : U028A + : U01B1 + : U0265 + : UA78D + : U0269 + : U0196 + : schwa + : SCHWA + : Greek_theta + : U03F4 + : thorn + : THORN + : ssharp + : U1E9E + : ssharp + : U1E9E + : eng + : ENG + : masculine + : U0283 + : U01A9 + : U026A + : UA7AE + : UA723 + : UA722 + : U021D + : U021C + : U02BF + : U02BB + : UA78C + : UA78B + : U02BC + : enfilledcircbullet + : U2043 + : enfilledsqbullet + : kra + : U2E2E + : U02BB + : UAB53 + : UA7B3 + : U0263 + : U0194 + : U0242 + : U0241 + : ordfeminine + : signifblank + : emspace + : U203E + : U203F + : U01EE + : U01EF + : U025A + : UA764 + : UA764 + : UA765 + : UA765 + : UAB30 + : UAB30 + : U1D7C + : U1D7C + : U1D7F + : UAB3F + : UAB3F + : U0284 + : U0284 + : U0284 + : U0284 + : U0284 + : U0284 + : U0284 + : U207D + : U207E + : U207A + : U207B + <0> : zerosuperior + <1> : onesuperior + <2> : twosuperior + <3> : threesuperior + <4> : foursuperior + <5> : fivesuperior + <6> : sixsuperior + <7> : sevensuperior + <8> : eightsuperior + <9> : ninesuperior + : U207C + : U1D2C + : U1D2D + : U1D2E + : U1D30 + : U1D31 + : U1D33 + : U1D34 + : U1D35 + : U1D36 + : U1D37 + : U1D38 + : U1D39 + : U1D3A + : U1D3C +

: U1D56 + : U02B3 + : U02E2 + : U1D57 + : U1D58 + : U1D5B + : U02B7 + : U02E3 + : U02B8 + : U1DBB + : UA7F9 + : U208D + : U208E + : U208A + : U208B + <0> : zerosubscript + <1> : onesubscript + <2> : twosubscript + <3> : threesubscript + <4> : foursubscript + <5> : fivesubscript + <6> : sixsubscript + <7> : sevensubscript + <8> : eightsubscript + <9> : ninesubscript + : U208C + : U1D00 + : U1D01 + : U0299 + : U1D04 + : U1D05 + : U1D07 + : UA730 + : U0262 + : U029C + : U026A + : U1D0A + : U1D0B + : U029F + : U0274 + : U1D0D + : U1D0F + : U0276 +

: U1D18 + : UA7AF + : U0280 + : UA731 + : U1D1B + : U1D1C + : U1D20 + : U1D21 + : U028F + : U1D22 + : U2090 + : U2091 + : U2095 + : U1D62 + : U2C7C + : U2096 + : U2097 + : U2098 + : U2099 + : U2092 +

: U209A + : U1D63 + : U209B + : U209C + : U1D64 + : U1D65 + : U2093 + : femalesymbol + : U263F + : malesymbol + : U2641 + : U2644 + <1> : U2643 + : U2646 + : U2645 + : leftanglebracket + <2> : U226A + : U227A + : rightanglebracket + <3> : U226B + : U227B + : downstile + <4> : upstile + : U228F + : lessthanequal + : U230B + <5> : U2309 + : U2290 + : greaterthanequal + : U27F6 + <6> : U27FC + : U202D + : U20D5 + : U2295 + <7> : U229E + : U228E + : infinity + <8> : variation + : U2297 + <0> : U2217 + : U22C6 + : U2194 + : ifonlyif + : identical + : U21C4 + : U2136 + : U2223 + : upcaret + : U214B + : U21BA + : U21BB +

: U2210 +

: U220F + : jot + : emptyset + : U2300 + : leftarrow + : U21D0 + : rightarrow + : implies + : U21A6 + : U21C0 + : downcaret + : radical + : U22BB + : partialderivative + : U2206 + : nabla + : U22B2 + : U2113 + : U2114 + : uparrow + : downarrow + : U2A21 + : U200B + : U2125 + : U2108 + : U2248 + : U223F + : U2393 + : U2200 + : downshoe + : intersection + : U2129 + : elementof + : U2203 + : leftshoe + : U2286 + : containsas + : rightshoe + : U2287 + : U2201 + : U2103 + : downtack + : uptack + : lefttack + : U22A7 + : integral + : U2211 + : U222E + : dintegral + : U2016 + : U2135 + : U2216 + : U22C9 + : U22CA + : U2219 + : U220E + : U20DB + : U20DC + : approximate + : U2972 + : U21AA + : U21A0 + : U22EF + : U22EE + : U22F1 + : U22F0 + : U27C2 + : U2225 + : U210E + : U210F + : U210F + : U2109 + : U2280 + : U2281 + : notidentical + : U2224 + : U22EA + : notelementof + : U2204 + : U220C + : U2284 + : U2285 + : U228A + : U228B + : U2226 + : U22AC + : U22AD + : U2241 + : U2280 + : U2281 + : notidentical + : U2224 + : U22EA + : notelementof + : U2204 + : U220C + : U2284 + : U2285 + : U228A + : U228B + : U2226 + : U22AC + : U22AD + : U2241 + : U22BC + : U22BD + : U22BC + : U22BD + : U22BC + : U22BD + : U22BC + : U22BD + : U1D552 + : U1D553 + : U1D554 + : U1D555 + : U1D556 + : U1D557 + : U1D558 + : U1D559 + : U1D55A + : U1D55B + : U1D55C + : U1D55D + : U1D55E + : U1D55F + : U1D560 +

: U1D561 + : U1D562 + : U1D563 + : U1D564 + : U1D565 + : U1D566 + : U1D567 + : U1D568 + : U1D569 + : U1D56A + : U1D56B + : U1D538 + : U1D539 + : U2102 + : U1D53B + : U1D53C + : U1D53D + : U1D53E + : U210D + : U1D540 + : U1D541 + : U1D542 + : U1D543 + : U1D544 + : U2115 + : U1D546 +

: U2119 + : U211A + : U211D + : U1D54A + : U1D54B + : U1D54C + : U1D54D + : U1D54E + : U1D54F + : U1D550 + : U2124 + <0> : U1D7D8 + <1> : U1D7D9 + <2> : U1D7DA + <3> : U1D7DB + <4> : U1D7DC + <5> : U1D7DD + <6> : U1D7DE + <7> : U1D7DF + <8> : U1D7E0 + <9> : U1D7E1 + : U301A + : U301B + : U2983 + : U2984 + : U27EC + : U27ED +

: U213C + : U213D + : U213E +

: U213F + : U2140 + : U1D44E + : U1D44F + : U1D450 + : U1D451 + : U1D452 + : U1D453 + : U1D454 + : U210E + : U1D456 + : U1D457 + : U1D458 + : U1D459 + : U1D45A + : U1D45B + : U1D45C +

: U1D45D + : U1D45E + : U1D45F + : U1D460 + : U1D461 + : U1D462 + : U1D463 + : U1D464 + : U1D465 + : U1D466 + : U1D467 + : U1D434 + : U1D435 + : U1D436 + : U1D437 + : U1D438 + : U1D439 + : U1D43A + : U1D43B + : U1D43C + : U1D43D + : U1D43E + : U1D43F + : U1D440 + : U1D441 + : U1D442 +

: U1D443 + : U1D444 + : U1D445 + : U1D446 + : U1D447 + : U1D448 + : U1D449 + : U1D44A + : U1D44B + : U1D44C + : U1D44D + : U1D6FC + : U1D6FD + : U1D713 + : U1D6FF + : U1D700 + : U1D716 + : U1D711 + : U1D719 + : U1D6FE + : U1D702 + : U1D704 + : U1D709 + : U1D705 + : U1D718 + : U1D706 + : U1D707 + : U1D708 + : U1D70A +

: U1D70B + : U1D71B + : U1D70C + : U1D71A + : U1D70E + : U1D70F + : U1D709 + : U1D717 + : U1D714 + : U1D70D + : U1D712 + : U1D710 + : U1D701 + : U1D6E2 + : U1D623 + : U1D6F9 + : U1D6E5 + : U1D6E6 + : U1D6F7 + : U1D6E4 + : U1D6E8 + : U1D6EA + : U1D6EF + : U1D6EB + : U1D6EC + : U1D6ED + : U1D6EE + : U1D6F0 +

: U1D6F1 + : U1D6F2 + : U1D6F4 + : U1D6F5 + : U1D6F3 + : U1D6FA + : U1D6F8 + : U1D6F6 + : U1D6E7 + : U1D715 + : U1D6FB + : U1D6A4 + : U1D6A5 + : U1D468 + : U1D469 + : U1D46A + : U1D46B + : U1D46C + : U1D46D + : U1D46E + : U1D46F + : U1D470 + : U1D471 + : U1D472 + : U1D473 + : U1D474 + : U1D475 + : U1D476 +

: U1D477 + : U1D478 + : U1D479 + : U1D47A + : U1D47B + : U1D47C + : U1D47D + : U1D47E + : U1D47F + : U1D480 + : U1D481 + : U1D482 + : U1D483 + : U1D484 + : U1D485 + : U1D486 + : U1D487 + : U1D488 + : U1D489 + : U1D48A + : U1D48B + : U1D48C + : U1D48D + : U1D48E + : U1D48F + : U1D490 +

: U1D491 + : U1D492 + : U1D493 + : U1D494 + : U1D495 + : U1D496 + : U1D497 + : U1D498 + : U1D499 + : U1D49A + : U1D49B + : U1D736 + : U1D737 + : U1D7D4 + : U1D739 + : U1D73A + : U1D750 + : U1D74B + : U1D753 + : U1D738 + : U1D73C + : U1D73E + : U1D743 + : U1D73F + : U1D752 + : U1D740 + : U1D741 + : U1D742 + : U1D744 +

: U1D745 + : U1D755 + : U1D746 + : U1D754 + : U1D748 + : U1D749 + : U1D73D + : U1D751 + : U1D74E + : U1D747 + : U1D74C + : U1D74A + : U1D73B + : U1D71C + : U1D71D + : U1D733 + : U1D71F + : U1D720 + : U1D731 + : U1D71E + : U1D722 + : U1D724 + : U1D729 + : U1D725 + : U1D726 + : U1D727 + : U1D728 + : U1D72A +

: U1D72B + : U1D72C + : U1D72E + : U1D72F + : U1D72D + : U1D734 + : U1D732 + : U1D730 + : U1D721 + : U1D74F + : U1D735 + : U1D4D0 + : U1D4D1 + : U1D4D2 + : U1D4D3 + : U1D4D4 + : U1D4D5 + : U1D4D6 + : U1D4D7 + : U1D4D8 + : U1D4D9 + : U1D4DA + : U1D4DB + : U1D4DC + : U1D4DD + : U1D4DE +

: U1D4DF + : U1D4E0 + : U1D4E1 + : U1D4E2 + : U1D4E3 + : U1D4E4 + : U1D4E5 + : U1D4E6 + : U1D4E7 + : U1D4E8 + : U1D4E9 + : U1D4EA + : U1D4EB + : U1D4EC + : U1D4ED + : U1D4EE + : U1D4EF + : U1D4F0 + : U1D4F1 + : U1D4F2 + : U1D4F3 + : U1D4F4 + : U1D4F5 + : U1D4F6 + : U1D4F7 + : U1D4F8 +

: U1D4F9 + : U1D4FA + : U1D4FB + : U1D4FC + : U1D4FD + : U1D4FE + : U1D4FF + : U1D500 + : U1D501 + : U1D502 + : U1D503 + : U1D49C + : U212C + : U1D49E + : U1D49F + : U2130 + : U2131 + : U1D4A2 + : U210B + : U2110 + : U1D4A5 + : U1D4A6 + : U2112 + : U2133 + : U1D4A9 + : U1D4AA +

: U1D4AB + : U1D4AC + : U211B + : U1D4AE + : U1D4AF + : U1D4B0 + : U1D4B1 + : U1D4B2 + : U1D4B3 + : U1D4B4 + : U1D4B5 + : U1D4B6 + : U1D4B7 + : U1D4B8 + : U1D4B9 + : U212F + : U1D4BB + : U210A + : U1D4BD + : U1D4BE + : U1D4BF + : U1D4C0 + : U1D4C1 + : U1D4C2 + : U1D4C3 + : U2134 +

: U1D4C5 + : U1D4C6 + : U1D4C7 + : U1D4C8 + : U1D4C9 + : U1D4CA + : U1D4CB + : U1D4CC + : U1D4CD + : U1D4CE + : U1D4CF + : U1D400 + : U1D401 + : U1D402 + : U1D403 + : U1D404 + : U1D405 + : U1D406 + : U1D407 + : U1D408 + : U1D409 + : U1D40A + : U1D40B + : U1D40C + : U1D40D + : U1D40E +

: U1D40F + : U1D410 + : U1D411 + : U1D412 + : U1D413 + : U1D414 + : U1D415 + : U1D416 + : U1D417 + : U1D418 + : U1D419 + : U1D41A + : U1D41B + : U1D41C + : U1D41D + : U1D41E + : U1D41F + : U1D420 + : U1D421 + : U1D422 + : U1D423 + : U1D424 + : U1D425 + : U1D426 + : U1D427 + : U1D428 +

: U1D429 + : U1D42A + : U1D42B + : U1D42C + : U1D42D + : U1D42E + : U1D42F + : U1D430 + : U1D431 + : U1D432 + : U1D433 + <0> : U1D7CE + <1> : U1D7CF + <2> : U1D7D0 + <3> : U1D7D1 + <4> : U1D7D2 + <5> : U1D7D3 + <6> : U1D7D4 + <7> : U1D7D5 + <8> : U1D7D6 + <9> : U1D7D7 + : U2997 + : U2998 + : U1D6C2 + : U1D6C3 + : U1D6D9 + : U1D6C5 + : U1D6C6 + : U1D6D6 + : U1D6D7 + : U1D6DF + : U1D6D4 + : U1D6C8 + : U1D6CA + : U1D6CF + : U1D6CB + : U1D6DE + : U1D6CC + : U1D6CD + : U1D6CE + : U1D6D0 +

: U1D6D1 + : U1D6E1 + : U1D6D2 + : U1D6E0 + : U1D6D4 + : U1D6D5 + : U1D6C9 + : U1D6DD + : U1D6DA + : U1D6D3 + : U1D6D8 + : U1D6D6 + : U1D6C7 + : U1D6A8 + : U1D6A9 + : U1D6BF + : U1D6AB + : U1D6AC + : U1D6BD + : U1D6AA + : U1D6AE + : U1D6B0 + : U1D6B5 + : U1D6B1 + : U1D6B2 + : U1D6B3 + : U1D6B4 + : U1D6B6 +

: U1D6B7 + : U1D6B8 + : U1D6BA + : U1D6BB + : U1D6AF + : U1D6C0 + : U1D6BE + : U1D6BC + : U1D6AD + : U1D6DB + : U1D6C1 + : U1D504 + : U1D505 + : U212D + : U1D507 + : U1D508 + : U1D509 + : U1D50A + : U210C + : U2111 + : U1D50D + : U1D50E + : U1D50F + : U1D510 + : U1D511 + : U1D512 +

: U1D513 + : U1D514 + : U211C + : U1D516 + : U1D517 + : U1D518 + : U1D519 + : U1D51A + : U1D51B + : U1D51C + : U2128 + : U1D51E + : U1D51F + : U1D520 + : U1D521 + : U1D522 + : U1D523 + : U1D524 + : U1D525 + : U1D526 + : U1D527 + : U1D528 + : U1D529 + : U1D52A + : U1D52B + : U1D52C +

: U1D52D + : U1D52E + : U1D52F + : U1D530 + : U1D531 + : U1D532 + : U1D533 + : U1D534 + : U1D535 + : U1D536 + : U1D537 + : U1D56C + : U1D56D + : U1D56E + : U1D56F + : U1D570 + : U1D571 + : U1D572 + : U1D573 + : U1D574 + : U1D575 + : U1D576 + : U1D577 + : U1D578 + : U1D579 + : U1D57A +

: U1D57B + : U1D57C + : U1D57D + : U1D57E + : U1D57F + : U1D580 + : U1D581 + : U1D582 + : U1D583 + : U1D584 + : U1D585 + : U1D586 + : U1D587 + : U1D588 + : U1D589 + : U1D58A + : U1D58B + : U1D58C + : U1D58D + : U1D58E + : U1D58F + : U1D590 + : U1D591 + : U1D592 + : U1D593 + : U1D594 +

: U1D595 + : U1D596 + : U1D597 + : U1D598 + : U1D599 + : U1D59A + : U1D59B + : U1D59C + : U1D59D + : U1D59E + : U1D59F diff --git a/users/phundrak/home.nix b/users/phundrak/home.nix index 1625aa7..2330acb 100644 --- a/users/phundrak/home.nix +++ b/users/phundrak/home.nix @@ -157,16 +157,19 @@ vcs.jj.signing.enable = true; }; fullDesktop = true; - file."${config.home.homeDirectory}/.ssh/allowed_signers" = { - enable = true; - text = lib.strings.join "\n" ( - map (file: let - content = lib.strings.trim (builtins.readFile file); - parts = lib.strings.splitString " " content; - email = lib.lists.last parts; - in "${email} namespaces=\"git\" ${content}") - (lib.filesystem.listFilesRecursive ./keys) - ); + file = { + ".XCompose".source = ./XCompose; + "${config.home.homeDirectory}/.ssh/allowed_signers" = { + enable = true; + text = lib.strings.join "\n" ( + map (file: let + content = lib.strings.trim (builtins.readFile file); + parts = lib.strings.splitString " " content; + email = lib.lists.last parts; + in "${email} namespaces=\"git\" ${content}") + (lib.filesystem.listFilesRecursive ./keys) + ); + }; }; };

: U1D3E + : U1D3F + : U1D40 + : U1D41 + : U2C7D + : U1D42 + : U1D43 + : U1D47 + : U1D9C + : U1D48 + : U1D49 + : U1DA0 + : U1D4D + : U02B0 + : U2071 + : U02B2 + : U1D4F + : U02E1 + : U1D50 + : U207F + : U1D52 +

: U1D71 + : U1D72 + : U1D74 + : U1D75 + : U1D76 + : U1E1A + : U1E1B + : U1E2C + : U1E2D + : U1E74 + : U1E75 + : U2A26 + : U0330 + : U0330 + : U0330 + : U0330 + : U0330 + : U0330 + : U0330 + : U0330 + : UAB38 + : U1E68 + : U1E69 + : Abrevebelowdot + : Abrevebelowdot + : abrevebelowdot + : abrevebelowdot + : Acircumflexbelowdot + : Acircumflexbelowdot + : acircumflexbelowdot + : acircumflexbelowdot + : Ecircumflexbelowdot + : Ecircumflexbelowdot + : ecircumflexbelowdot + : ecircumflexbelowdot + : Ocircumflexbelowdot + : Ocircumflexbelowdot + : ocircumflexbelowdot + : ocircumflexbelowdot + : Ohornbelowdot + : Ohornbelowdot + : ohornbelowdot + : ohornbelowdot + : Uhornbelowdot + : Uhornbelowdot + : uhornbelowdot + : uhornbelowdot + : U1E38 + : U1E38 + : U1E39 + : U1E39 + : U1E5C + : U1E5C + : U1E5D + : U1E5D + : UA744 + : UA744 + : UA745 + : UA745 + : musicalflat + : musicalsharp + : figdash + : U266E + <1> : U2180 + : Greek_horizbar + : U2039 + : U203A + <5> : U2181 + : U205C + : rightpointer + : hyphen + : U2010 + : onethird + : U2042 + <0> : U2182 + : U203B + : twothirds + : U2034 + : U2031 + : U25CC + : U2057 + : UA7B5 + : UA7B4 + : U025B + : U0190 + : U204A +

: U20B1 + : U20B0 + : U20B9 + : U20BD + : RupeeSign + : U20B7 + : NewSheqelSign + : U20AE + : U20B8 + : U09F2 + : U09F3 + : U5713 + : U5143 + : WonSign + : U5186 + : yen + : currency + : diaeresis + : diaeresis + : diaeresis + : diaeresis + : U0308 + : U0308 + : U0308 + : U0308 + : U0308 + : U0308 + : U0308 + : U0308 + : U1E72 + : U1E73 + : U0324 + : U0324 + : U0324 + : U0324 + : U0324 + : U0324 + : U0324 + : U0324 + : Odoubleacute + : odoubleacute + : Udoubleacute + : udoubleacute + : doubleacute + : doubleacute + : doubleacute + : doubleacute + : U030B + : U030B + : U030B + : U030B + : U030B + : U030B + : U030B + : U030B + : U0200 + : U0201 + : U0204 + : U0205 + : U0208 + : U0209 + : U020C + : U020D + : U0210 + : U0211 + : U0214 + : U0215 + : U030F + : U030F + : U030F + : U030F + : U030F + : U030F + : U030F + : U030F + : U01DB + : U01DC + : grave + : grave + : grave + : U0300 + : U0300 + : U0300 + : U0300 + : U0300 + : U0300 + : U0300 + : U0300 + : U1FB9 + : U1FB1 + : Greek_PSI + : Greek_psi + : U1FD9 + : U1FD1 + : Greek_XI + : Greek_xi + : U03FC + : Greek_THETA + : U03D2 + : U1FE9 + : Greek_theta + : U1FE1 + : Greek_OMEGA + : Greek_omega + : Greek_finalsmallsigma + : Greek_CHI + : Greek_chi + : Greek_UPSILON + : Greek_upsilon + : U0189 + : U0256 + : UA726 + : UA727 + : U024A + : U024B + : U2C64 + : U027D + : U01AE + : U0288 + : U03D2 + : U0309 + : U0309 + : U0309 + : U0309 + : U0309 + : U0309 + : U0309 + : U0181 + : U0253 + : U0187 + : U0188 + : U018A + : U0257 + : U0193 + : U0260 + : UA7AA + : U0266 + : U0198 + : U0199 +