Nix flake to build the customized QMK firmware of my keyboard, a Anne Pro 2 (C18).
  • C 62.6%
  • Nix 31%
  • Shell 6.3%
  • Makefile 0.1%
Find a file
2026-03-01 23:40:06 +01:00
geoffreyfrogeye Reboot once for LEDs 2026-03-01 23:40:06 +01:00
.gitignore Update and use Nix 2026-03-01 23:40:05 +01:00
flake.lock Update and hopefully reliable Bluetooth? 2026-03-01 23:40:06 +01:00
flake.nix Update and hopefully reliable Bluetooth? 2026-03-01 23:40:06 +01:00
keyboard.nix Update and hopefully reliable Bluetooth? 2026-03-01 23:40:06 +01:00
README.md Update and hopefully reliable Bluetooth? 2026-03-01 23:40:06 +01:00
run.sh Update and use Nix 2026-03-01 23:40:05 +01:00
shine.nix Update and hopefully reliable Bluetooth? 2026-03-01 23:40:06 +01:00
tools.nix Update and hopefully reliable Bluetooth? 2026-03-01 23:40:06 +01:00

Keyboard

Nix flake to build the customized QMK firmware of my keyboard, a Anne Pro 2 (C18).

(Yes, https://github.com/qmk/qmk_userspace is a thing but adding the flasher + shine firmware + nix goodness would be annoying)

Development

Best to do qmk clone and prepare environment as the packages do here.

Improvements

  • Somewhat reproducible building
  • Use macros to replicate more of vim outside of vim
  • Can control mouse with it

Issues & attempted fixes

  • LED turns on when plugging in only sometimes without possibility of reflashing (but always after flashing)
    • Upgraded to 2025 version
    • Tried reducing baud rate
    • Fixed other issues
    • Add a reboot button (doesn't seem to do anyting)
    • Fix reboot button (now it works, and fixes the issues sometimes...)
  • Can't set default animation (or manual mode?), either from post_init() or buttons
    • Tried running post_init() on demand (e.g. on Caps Lock)
    • Tried not setting masks on boot
  • LED color updates visibly propagates
    • Tried using manual mode and setting by row (get overriden by animation since can't enable manual mode)
    • Setting by rows using mask
  • Sometimes it goes into a glitch state where it only types \
    • Figure out which pattern sequence triggers that
    • Upgraded to 2025 version (fixed it, it seems!)
  • LSHIFT + RSHIFT + B doesn't set it in IAP mode (anymore?)
    • Find where it used to be in the code (didn't find anything)
    • Reimplement it myself
    • Enable commands
  • Make bluetooth work https://github.com/qmk/qmk_firmware/issues/18547

Other

In case ever needed (though flasher can even do BLE so why would you), obinskit is super slow to download, I have it backed up.

It can be run with:

nix-store --add-fixed sha256 ObinsKit_1.2.11_x64.tar.gz
NIXPKGS_ALLOW_UNFREE=1 NIXPKGS_ALLOW_INSECURE=1 nix run --impure nixpkgs/nixos-23.11#obinskit