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}