Setting caps lock as ctrl not working

Comes from https://discourse.nixos.org/t/does-services-xserver-xkbdir-not-work-for-gnome-gdm-on-wayland/28383

I customize keymap by services.xserver.xkbDir = ./xkb, and I find for gnome X11, it can work (services.xserver.displayManager.gdm.wayland = false) but for gnome wayland it cannot work. I try

gsettings reset org.gnome.desktop.input-sources xkb-options
gsettings reset org.gnome.desktop.input-sources sources

But it cannot work for me.

The following is localetctl:

$ localectl
System Locale: LANG=en_US.UTF-8
    VC Keymap: /nix/store/j3r9if1sn1i73a1j4ikv1m65vsc77na1-xkb-console-keymap
   X11 Layout: us
    X11 Model: pc104
  X11 Options: terminate:ctrl_alt_bksp