Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { pkgs, ... }:
 | ||
| 
 | ||
| with pkgs;
 | ||
| 
 | ||
| let avrlibc = pkgsCross.avr.libcCross; in
 | ||
| 
 | ||
| rec {
 | ||
|   qmkSource = fetchgit {
 | ||
|     url = "https://github.com/qmk/qmk_firmware";
 | ||
|     rev = "ab1650606c36f85018257aba65d9c3ff8ec42e71";
 | ||
|     sha256 = "1k59flkvhjzmfl0yz9z37lqhvad7m9r5wy1p1sjk5274rsmylh79";
 | ||
|     fetchSubmodules = true;
 | ||
|   };
 | ||
| 
 | ||
|   layout = stdenv.mkDerivation rec {
 | ||
|     name = "ergodox_ez_grfn.hex";
 | ||
| 
 | ||
|     src = qmkSource;
 | ||
| 
 | ||
|     buildInputs = [
 | ||
|       dfu-programmer
 | ||
|       dfu-util
 | ||
|       diffutils
 | ||
|       git
 | ||
|       python3
 | ||
|       pkgsCross.avr.buildPackages.binutils
 | ||
|       pkgsCross.avr.buildPackages.gcc
 | ||
|       avrlibc
 | ||
|       avrdude
 | ||
|     ];
 | ||
| 
 | ||
|     AVR_CFLAGS = [
 | ||
|       "-isystem ${avrlibc}/avr/include"
 | ||
|       "-L${avrlibc}/avr/lib/avr5"
 | ||
|       # GCC 12 has improved array-bounds warnings, failing the build of QMK.
 | ||
|       # Newer versions of the firmware would work probably, but they heavily
 | ||
|       # altered the build system, so it is non-trivial. Backporting the patch
 | ||
|       # that fixes it seems difficult – the next change to the offending matrix.c
 | ||
|       # after the pinned qmkSource commit is
 | ||
|       # https://github.com/qmk/qmk_firmware/commit/11c308d436180974b7719ce78cdffdd83a1302c0
 | ||
|       # which heavily changes the way the code works.
 | ||
|       #
 | ||
|       # TODO(grfn): address this properly
 | ||
|       "-Wno-error=array-bounds"
 | ||
|     ];
 | ||
| 
 | ||
|     AVR_ASFLAGS = AVR_CFLAGS;
 | ||
| 
 | ||
|     patches = [ ./increase-tapping-delay.patch ];
 | ||
| 
 | ||
|     postPatch = ''
 | ||
|       mkdir keyboards/ergodox_ez/keymaps/grfn
 | ||
|       cp ${./keymap.c} keyboards/ergodox_ez/keymaps/grfn/keymap.c
 | ||
|     '';
 | ||
| 
 | ||
|     buildPhase = ''
 | ||
|       make ergodox_ez:grfn
 | ||
|     '';
 | ||
| 
 | ||
|     installPhase = ''
 | ||
|       cp ergodox_ez_grfn.hex $out
 | ||
|     '';
 | ||
|   };
 | ||
| 
 | ||
|   flash = writeShellScript "flash.sh" ''
 | ||
|     ${teensy-loader-cli}/bin/teensy-loader-cli \
 | ||
|       -v \
 | ||
|       --mcu=atmega32u4 \
 | ||
|       -w ${layout}
 | ||
|   '';
 | ||
| 
 | ||
|   meta.ci.targets = [ "layout" ];
 | ||
| }
 |