Custom, out-of-tree QMK firmwares, with clangd LSP setup.
- ZSA Moonlander MK I
- Cross-OS shortcuts (ctrl vs. cmd shortcuts on Linux vs. macOS)
- TogKey Pad Plus
- Cross-OS Shortcuts: Same physical keys adapt to macOS (CMD) vs Linux (CTRL) automatically using QMK's OS detection.
- LSP setup: Autocomplete and type checking for QMK firmware development.
- The
devShellsets up a.clangdfile in the proeject root (.gitignored) - This sets up a bunch of path hacks required since the code is not nested inside the
qmk_firmwaretree, so it references/nix/store/*paths
- The
- Nix-managed: Reproducible builds, all dependencies handled auatomatically
You can use direnv to manage the Nix devShell. I highly recommend using nix-direnv.
direnv allow
# from now on, the devShell will activate whenever you `cd` into the project
# the repo root should have an auto-generated .clangd config file
nvim src/keymap.cBuilding the firmware is a Nix derivation:
nix build .#moonlander.build
nix build .#togkey.build
# outputs to ./result/bin/*You can also build + flash the firmware in one step by running:
nix run .#moonlander.flash
nix run .#togkey.flash