sudo apt-get update
sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
-# Mac
+## Nix
+
+If you're on [NixOS](https://nixos.org/), or have Nix installed on Linux or macOS, run `nix-shell` from the repository root to get a build environment.
+
+By default, this will download compilers for both AVR and ARM. If you don't need both, disable the `avr` or `arm` arguments, e.g.:
+
+ nix-shell --arg arm false
+
+## Mac
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
brew tap osx-cross/avr
--- /dev/null
+{ pkgs ? import <nixpkgs> {}
+, avr ? true, arm ? true }:
+
+with pkgs;
+let
+ 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"
+ ];
+in
+
+stdenv.mkDerivation {
+ name = "qmk-firmware";
+
+ buildInputs = [ dfu-programmer dfu-util diffutils git ]
+ ++ lib.optional avr [ avrbinutils avrgcc avrlibc ]
+ ++ lib.optional arm [ gcc-arm-embedded ];
+
+ CFLAGS = lib.optional avr avr_incflags;
+ ASFLAGS = lib.optional avr avr_incflags;
+}