dotfiles

25 commits
Updated 2026-04-29 19:10:52
system
system/keyboard.nix
{ pkgs, ... }:

{
  services.xserver.enable = true;
  services.xserver.xkb = {
    layout = "fr";
  };

  services.udev.packages = [
    pkgs.vial
    pkgs.qmk-udev-rules
  ];

  console.keyMap = "fr";

  boot.kernelModules = [ "uinput" ];

  users.groups.uinput = {
    gid = 77;
  };

  hardware.uinput.enable = true;

  services.kanata = {
    enable = true;
    keyboards.default.config = ''
      (deflocalkeys-linux
          a 16
          q 30
          z 17
          w 44
          m 39
          , 50
          ; 51
          : 52
          ! 53
          ù 40
          * 43
          ^ 26
          $ 27
          ² 41
          & 2
          é 3
          dq 4
          ' 5
          op 6
          - 7
          è 8
          udr 9
          ç 10
          à 11
          cp 12
          = 13
          < 86
      )

      (defsrc
          ²           &       é       dq      '       op      -       è      udr      ç       à       cp       =      bspc
          tab         a       z       e       r       t       y       u       i       o       p       ^       $
          caps        q       s       d       f       g       h       j       k       l       m       ù       *       ret
          lsft        <       w       x       c       v       b       n       ,       ;       :       !       rsft    up
          lctl        lmet  lalt              spc                             ralt            rctl            left    down    right
      )

      (defalias
          cap (tap-hold 200 200 caps lrld)
          tab_a (tap-hold 200 200 tab (layer-switch azerty))
          tab_c (tap-hold 200 200 tab (layer-switch colemak))
      )

      (deflayer azerty
          ²           &       é       dq      '       op      -       è      udr      ç       à       cp      =       bspc
          @tab_c      a       z       e       r       t       y       u       i       o       p       ^       $
          @cap        q       s       d       f       g       h       j       k       l       m       ù       *       ret
          lsft        <       w       x       c       v       b       n       ,       ;       :       !       rsft    up
          lctl        lmet  lalt              spc                             ralt            rctl            left    down    right
      )

      (defalias
          dot S-;
          1   S-&
          2   S-é
          3   S-dq
          4   S-'
          5   S-op
          6   S--
          7   S-è
          8   S-udr
          9   S-ç
          0   S-à

          ctrl (layer-while-held colemak-ctrl)

          switch1 (tap-hold-press 0 500 (one-shot 1000 (layer-while-held colemak-accent)) (layer-while-held colemak-code))
          switch2 (tap-hold-press 0 500 (one-shot 1000 lsft) (layer-while-held colemak-code))
      )

      (deflayer colemak
          XX          @1      @2      @3      @4      @5      @6      @7      @8      @9      @0      XX      XX      XX
          @tab_a      q       w       f       p       b       j       l       u       y       @dot    XX      XX
          lsft        a       r       s       t       g       m       n       e       i       o       ,       XX      ret
          bspc        z       x       c       d       v       k       k       h       '       dq      XX      XX      up
          @ctrl       lmet      @switch1          spc                           @switch2        XX              left    down    right
      )

      (deflayer colemak-ctrl
          XX          XX      XX      XX      XX      XX      XX      XX      XX      XX      XX      XX      XX      XX
          @tab_a      C-a     C-z     XX      C-r     C-t     C-y     C-u     C-i     C-o     C-p     XX      XX
          XX          XX      C-s     C-d     C-f    home     end C-S-left C-S-up C-S-right   C-m     XX      XX       XX
          C-bspc      XX      C-w     C-x     C-c     C-v     XX      XX      XX    C-S-down  XX      XX      XX      up
          XX          XX      XX              spc                             XX              XX              left    down    right
      )

      (defalias
          % S-ù
          at RA-à
          # RA-dq
          ^ (macro ^ ^)
          + S-=
          > S-<
          [ RA-op
          ] RA-cp
          { RA-'
          } RA-=
          / S-:
          \ RA-udr
          | RA--
          ? S-,
          ` RA-è
          ~ RA-2
      )

      (deflayer colemak-code
          XX          !       @at     @#      $       @%      @^      &       *       op      cp      XX      XX      XX
          @tab_a      XX      @[      =       @]      XX      XX      @+      udr     -       XX      XX      XX
          XX          tab     @{      :       @}      XX      @`     left     up     right    ret      ;       XX      XX
          bspc        XX      @/      XX      @\      @|      @~      @?      <      down     @>      XX      XX      up
          lctl        XX      XX              spc                             XX              XX              left    down    right
      )

      (defalias
          â (macro ^ a)
          ê (macro ^ e)
          î (macro ^ i)
          ô (macro ^ o)
          û (macro ^ u)

          ë (macro S-^ e)
          ï (macro S-^ i)
      )

      (deflayer colemak-accent
          XX          XX      XX      XX      XX      XX      XX      XX      XX      XX      XX      XX      XX      XX
          @tab_a      q       w       f       p       b       j       @û      ù       @ï      @ë      XX      XX
          XX          à       @â      s       t       g       @ê      è       é       @î      @ô      XX      XX      XX
          bspc        XX      XX      ç       d       XX      XX      XX      XX      XX      XX      XX      XX      up
          XX          XX      XX            XX                                XX              XX              left    down    right
      )
    '';
  };
}