{ ... }:
let
  # stickTap = action: "tap-hold-press 0 200 (one-shot-press-pcancel 1000 (${action})) (${action})";

  mkConfig =
    {
      blueTrigger,
      redTrigger,
      chordDelay,
    }:
    ''
      ;; {{{ Source layout
      (defsrc
        grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc
        tab  q    w    e    r    t    y    u    i    o    p    [    ]    \
        caps a    s    d    f    g    h    j    k    l    ;    '    ret
        lsft z    x    c    v    b    n    m    ,    .    /    rsft
        lctl lmet ${redTrigger}           spc            ${blueTrigger}
      )
      ;; }}}
      ;; {{{ Layer & utility aliases
      (defalias
        red (layer-while-held red)
        blue (layer-while-held blue)
        purple (layer-while-held purple)

        em (unicode —)
      )
      ;; }}}

      (defchordsv2-experimental
        ;; {{{ Left modifiers
        (a s d f) (multi lctl lalt lsft) ${toString chordDelay} all-released ()
        (a s d  ) (multi lalt lsft) ${toString chordDelay} all-released ()
        (  s d f) (multi lctl lsft) ${toString chordDelay} all-released ()
        (a s    ) lalt ${toString chordDelay} all-released ()
        (  s d  ) lsft ${toString chordDelay} all-released ()
        (  s   f) lctl ${toString chordDelay} all-released ()
        ;; }}}
        ;; {{{ Right modifiers
        (j k l ;) (multi rctl ralt rsft) ${toString chordDelay} all-released ()
        (j k l  ) (multi rctl rsft) ${toString chordDelay} all-released ()
        (  k l ;) (multi ralt rsft) ${toString chordDelay} all-released ()
        (j   l  ) rctl ${toString chordDelay} all-released ()
        (  k l  ) rsft ${toString chordDelay} all-released ()
        (    l ;) ralt ${toString chordDelay} all-released ()
        ;; }}}
        ;; {{{ Special keys
        (d f) tab ${toString chordDelay} all-released ()
        (e f) ret ${toString chordDelay} all-released ()
        (q w) esc ${toString chordDelay} all-released ()

        (g h) bspc ${toString chordDelay} all-released ()
        (n l) rmet ${toString chordDelay} all-released ()

        (j k) f10 ${toString chordDelay} all-released ()
        (c p) f11 ${toString chordDelay} all-released ()
        (j i) f12 ${toString chordDelay} all-released ()
        ;; }}}
        ;; {{{ Wm keybinds
        (n l k) M-p ${toString chordDelay} all-released ()
        (n l q) M-1 ${toString chordDelay} all-released ()
        (n l w) M-2 ${toString chordDelay} all-released ()
        (n l e) M-3 ${toString chordDelay} all-released ()
        (n l r) M-4 ${toString chordDelay} all-released ()
        (n l t) M-5 ${toString chordDelay} all-released ()
        (n l a) M-6 ${toString chordDelay} all-released ()
        (n l s) M-7 ${toString chordDelay} all-released ()
        (n l d) M-8 ${toString chordDelay} all-released ()
        (n l f) M-9 ${toString chordDelay} all-released ()
        (n l g) M-0 ${toString chordDelay} all-released ()
        ;; }}}
      )

      ;; {{{ Qwerty
      (deflayer qwerty
        XX   XX   XX   XX   XX   XX   XX   XX   XX   XX   XX   XX   XX   XX
        XX   q    w    e    r    t    y    u    i    o    p    XX   XX   XX
        XX   a    s    d    f    g    h    j    k    l    ;    XX   XX
        lsft z    x    c    v    b    n    m    ,    .    '    XX
        XX   lmet @red           spc           @blue
      )
      ;; }}}
      ;; {{{ Transparent template
      (deflayer template
        _    _    _    _    _    _    _    _    _    _    _    _    _    _
        _    _    _    _    _    _    _    _    _    _    _    _    _    _
        _    _    _    _    _    _    _    _    _    _    _    _    _
        _    _    _    _    _    _    _    _    _    _    _    _
        _    _    _              _              _
      )
      ;; }}}
      ;; {{{ Blue
      (deflayer blue
        _    _    _    _    _    _    _    _    _    _    _    _    _    _
        _    S-=  S-2  S-3  S-4  S-5  S--  S-7  S-8  grv S-grv _    _    _
        _    S-,  S-[  [    S-9  S-/  S-\  -    /    =    S-;  _    _
        _    S-.  S-]  ]    S-0  S-1  @em  S-6  _    _    S-'  _
        _    _    @purple        \              _
      )
      ;; }}}
      ;; {{{ Red
      (deflayer red
        _    _    _    _    _    _    _    _    _    _    _    _    _    _
        _    1    2    3    4    5    home pgdn pgup end  del  _    _    _
        _    6    7    8    9    0    left down up   rght _    _    _
        _    _    _    _    _    _    _    _    _    _    _    _
        _    _    _              _           @purple
      )
      ;; }}}
      ;; {{{ Purple
      (defalias
        ;; Press once to active caps lock for a word (revert after being idle
        ;; for 2s), or twice for real caps lock.
        cps (tap-dance 200 ((caps-word 2000) caps))
        udo (arbitrary-code 131) ;; undo
        cpy (arbitrary-code 133) ;; copy
        pst (arbitrary-code 135) ;; paste
        cut (arbitrary-code 137) ;; cut
      )

      (deflayer purple
        _    _    _    _    _    _    _    _    _    _    _    _    _    _
        _    f1   f2   f3   f4   f5   @cps @cpy next volu brup _    _    _
        _    f6   f7   f8   f9   f10  @udo @pst pp   vold brdn _    _
        _    f11  f12  _    _    _    _    @cut prev mute _    _
        _    _    _              _              _
      )
      ;; }}}
    '';

  extraDefCfg = ''
    concurrent-tap-hold true ;; Required by chords
  '';
in
{
  services.kanata = {
    enable = true;
    keyboards.tethysLaptop = {
      inherit extraDefCfg;

      devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ];

      config = mkConfig {
        redTrigger = "lalt";
        blueTrigger = "ralt";
        chordDelay = 25;
      };
    };

    keyboards.keychronK6 = {
      inherit extraDefCfg;

      devices = [ "/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd" ];

      config = mkConfig {
        redTrigger = "lalt";
        blueTrigger = "rctl";
        chordDelay = 30;
      };
    };
  };
}