diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 8b2617f06216..d95ef24e998e 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -197,10 +197,12 @@ in
};
xkeyboardconfig = attrs: attrs // {
- #TODO: resurrect patches for US_intl and Esperanto?
buildInputs = attrs.buildInputs ++ [args.intltool];
+ #TODO: resurrect patches for US_intl?
+ patches = [ ./xkeyboard-config-eo.patch ];
+
# 1: compatibility for X11/xkb location
# 2: I think pkgconfig/ is supposed to be in /lib/
postInstall = ''
diff --git a/pkgs/servers/x11/xorg/xkeyboard-config-eo.patch b/pkgs/servers/x11/xorg/xkeyboard-config-eo.patch
new file mode 100644
index 000000000000..f288a5c0f6dd
--- /dev/null
+++ b/pkgs/servers/x11/xorg/xkeyboard-config-eo.patch
@@ -0,0 +1,71 @@
+diff --git a/rules/base.xml.in b/rules/base.xml.in
+index ec321f8..e9c3546 100644
+--- a/rules/base.xml.in
++++ b/rules/base.xml.in
+@@ -1786,6 +1786,13 @@
+
+
+
++ eo
++ <_shortDescription>Esp
++ <_description>Esperanto
++
++
++
++
+ ir
+ <_shortDescription>Irn
+ <_description>Iran
+diff --git a/symbols/Makefile.am b/symbols/Makefile.am
+index 97c816d..d7e3a4e 100644
+--- a/symbols/Makefile.am
++++ b/symbols/Makefile.am
+@@ -10,7 +10,7 @@ bt by braille \
+ ca cd \
+ ch cn cz \
+ de dk \
+-ee es et epo \
++ee eo es et epo \
+ fi fo fr \
+ gb ge gh gn \
+ gr hr hu \
+diff --git a/symbols/Makefile.in b/symbols/Makefile.in
+index b5be077..5cddcc7 100644
+--- a/symbols/Makefile.in
++++ b/symbols/Makefile.in
+@@ -222,7 +222,7 @@ bt by braille \
+ ca cd \
+ ch cn cz \
+ de dk \
+-ee es et epo \
++ee eo es et epo \
+ fi fo fr \
+ gb ge gh gn \
+ gr hr hu \
+diff --git a/symbols/eo b/symbols/eo
+new file mode 100644
+index 0000000..d6358c9
+--- /dev/null
++++ b/symbols/eo
+@@ -0,0 +1,21 @@
++// $XFree86$
++
++partial alphanumeric_keys
++xkb_symbols "basic" {
++
++ // Describes the differences between a very simple en_US
++ // keyboard and a simple Esperanto keyboard
++ // Press AltGr or Windows Menu key together with C, H, J, S, U
++ // to get accented letters.
++ // 2001 by Radovan Garabik
++
++ key.type = "FOUR_LEVEL";
++
++ key { [w,W, ubreve,Ubreve ] };
++ key { [u,U, ubreve, Ubreve ] };
++ key { [s,S, scircumflex, Scircumflex ] };
++ key { [g,G, gcircumflex,Gcircumflex ] };
++ key { [h,H, hcircumflex,Hcircumflex ] };
++ key { [j,J, jcircumflex,Jcircumflex ] };
++ key { [c,C, ccircumflex,Ccircumflex ] };
++};