diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000000..233d62f3f1 --- /dev/null +++ b/shell.nix @@ -0,0 +1,49 @@ +# A Nix shell for tmk_keyboard. +# Based on the shell for qmk/qmk_firmware: +# https://github.com/qmk/qmk_firmware/blob/master/shell.nix + +with import { + config = { + allowUnsupportedSystem = true; + }; +}; + +let + avrbinutils = pkgsCross.avr.buildPackages.binutils; + avrlibc = pkgsCross.avr.libcCross; + + avr_incflags = [ + "-isystem ${avrlibc}/avr/include" + "-B${avrlibc}/avr/lib/avr5" + "-L${avrlibc}/avr/lib/avr5" + "-B${avrlibc}/avr/lib/avr35" + "-L${avrlibc}/avr/lib/avr35" + "-B${avrlibc}/avr/lib/avr51" + "-L${avrlibc}/avr/lib/avr51" + ]; + + avrgcc = pkgsCross.avr.buildPackages.gcc.overrideAttrs (oldAttrs: rec { + name = "avr-gcc-8.1.0"; + src = fetchurl { + url = "mirror://gcc/releases/gcc-8.1.0/gcc-8.1.0.tar.xz"; + sha256 = "0lxil8x0jjx7zbf90cy1rli650akaa6hpk8wk8s62vk2jbwnc60x"; + }; + }); +in + +stdenv.mkDerivation { + name = "tmk_keyboard"; + + buildInputs = [ + diffutils + dfu-programmer + dfu-util + avrbinutils + avrgcc + avrlibc + avrdude + ]; + + CFLAGS = avr_incflags; + ASFLAGS = avr_incflags; +} diff --git a/tmk_core/doc/build.md b/tmk_core/doc/build.md index 57a36ac42b..87d103a91c 100644 --- a/tmk_core/doc/build.md +++ b/tmk_core/doc/build.md @@ -14,6 +14,7 @@ Download and Install If you use PJRC Teensy you don't need step 2 and 3 above, just get [Teensy loader][teensy-loader]. +If you use NixOS or the Nix package manager, just run `nix-shell`. ### 2. Download source You can find firmware source at github: