main
1{
2 sources ? import ../../nix,
3 pkgs ? sources.nixpkgs { },
4}:
5
6with pkgs;
7let
8 avrlibc = pkgsCross.avr.libcCross;
9in
10rec {
11 qmkSource = fetchgit {
12 url = "https://github.com/qmk/qmk_firmware";
13 rev = "0.10.50";
14 sha256 = "162rvhqyx25fz39395vhhk3allbfn4bd8c1afj8ip9r27zwnqrwd";
15 fetchSubmodules = true;
16 };
17
18 layout = stdenv.mkDerivation rec {
19 name = "ergodox_ez_sbr.hex";
20
21 src = qmkSource;
22
23 buildInputs = [
24 dfu-programmer
25 dfu-util
26 diffutils
27 git
28 python3
29 pkgsCross.avr.buildPackages.binutils
30 pkgsCross.avr.buildPackages.gcc8
31 avrlibc
32 avrdude
33 ];
34
35 AVR_CFLAGS = [
36 "-isystem ${avrlibc}/avr/include"
37 "-L${avrlibc}/avr/lib/avr5"
38 ];
39
40 AVR_ASFLAGS = AVR_CFLAGS;
41
42 patches = [ ./increase-tapping-delay.patch ];
43
44 postPatch = ''
45 mkdir keyboards/ergodox_ez/keymaps/sbr
46 cp ${./keymap.c} keyboards/ergodox_ez/keymaps/sbr/keymap.c
47 cp ${./config.h} keyboards/ergodox_ez/keymaps/sbr/config.h
48 cp ${./rules.mk} keyboards/ergodox_ez/keymaps/sbr/rules.mk
49 '';
50
51 buildPhase = ''
52 make ergodox_ez:sbr
53 '';
54
55 installPhase = ''
56 cp ergodox_ez_sbr.hex $out
57 '';
58 };
59
60 flash = writeShellScript "flash.sh" ''
61 ${teensy-loader-cli}/bin/teensy-loader-cli \
62 -v \
63 --mcu=atmega32u4 \
64 -w ${layout}
65 '';
66
67 meta.targets = [ "layout" ];
68}