diff --git a/hosts/common/default.nix b/hosts/common/default.nix
index 0101b57..0f5cce8 100644
--- a/hosts/common/default.nix
+++ b/hosts/common/default.nix
@@ -3,6 +3,7 @@
   imports = [
     ./autoupdate.nix
     ./garbage-collect.nix
+    ./keyd.nix
     ./optimise.nix
   ];
 
diff --git a/hosts/common/keyd.nix b/hosts/common/keyd.nix
new file mode 100644
index 0000000..a8b0c41
--- /dev/null
+++ b/hosts/common/keyd.nix
@@ -0,0 +1,23 @@
+{ ... }:
+{
+
+  services.keyd = {
+    enable = true;
+    keyboards.default = {
+      ids = [ "*" ];
+      settings = {
+        main = {
+          rightalt = "overload(altgr, rightalt)";
+	  capslock = "overload(control, esc)";
+	};
+	altgr = {
+          a = ''macro(compose a ")'';
+          o = ''macro(compose o ")'';
+	  u = ''macro(compose u ")'';
+	  s = ''macro(compose s s)'';
+	};
+      };
+    };
+  };
+
+}
diff --git a/users/willifan/desktop/hyprland/common/hyprland.nix b/users/willifan/desktop/hyprland/common/hyprland.nix
index 826a70d..035d72b 100644
--- a/users/willifan/desktop/hyprland/common/hyprland.nix
+++ b/users/willifan/desktop/hyprland/common/hyprland.nix
@@ -41,7 +41,7 @@
             kb_layout = "us";
             kb_variant = "";
             kb_model = "";
-            kb_options = "";
+            kb_options = "compose:menu";
             kb_rules = "";
 
             follow_mouse = 1;