diff options
| -rw-r--r-- | docs/getting_started_build_tools.md | 10 | ||||
| -rw-r--r-- | shell.nix | 26 |
2 files changed, 35 insertions, 1 deletions
diff --git a/docs/getting_started_build_tools.md b/docs/getting_started_build_tools.md index 10c0b6984..0617252b2 100644 --- a/docs/getting_started_build_tools.md +++ b/docs/getting_started_build_tools.md | |||
| @@ -36,7 +36,15 @@ Debian/Ubuntu example: | |||
| 36 | sudo apt-get update | 36 | sudo apt-get update |
| 37 | 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 | 37 | 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 |
| 38 | 38 | ||
| 39 | # Mac | 39 | ## Nix |
| 40 | |||
| 41 | 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. | ||
| 42 | |||
| 43 | 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.: | ||
| 44 | |||
| 45 | nix-shell --arg arm false | ||
| 46 | |||
| 47 | ## Mac | ||
| 40 | If you're using [homebrew,](http://brew.sh/) you can use the following commands: | 48 | If you're using [homebrew,](http://brew.sh/) you can use the following commands: |
| 41 | 49 | ||
| 42 | brew tap osx-cross/avr | 50 | brew tap osx-cross/avr |
diff --git a/shell.nix b/shell.nix new file mode 100644 index 000000000..302899c52 --- /dev/null +++ b/shell.nix | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | { pkgs ? import <nixpkgs> {} | ||
| 2 | , avr ? true, arm ? true }: | ||
| 3 | |||
| 4 | with pkgs; | ||
| 5 | let | ||
| 6 | avr_incflags = [ | ||
| 7 | "-isystem ${avrlibc}/avr/include" | ||
| 8 | "-B${avrlibc}/avr/lib/avr5" | ||
| 9 | "-L${avrlibc}/avr/lib/avr5" | ||
| 10 | "-B${avrlibc}/avr/lib/avr35" | ||
| 11 | "-L${avrlibc}/avr/lib/avr35" | ||
| 12 | "-B${avrlibc}/avr/lib/avr51" | ||
| 13 | "-L${avrlibc}/avr/lib/avr51" | ||
| 14 | ]; | ||
| 15 | in | ||
| 16 | |||
| 17 | stdenv.mkDerivation { | ||
| 18 | name = "qmk-firmware"; | ||
| 19 | |||
| 20 | buildInputs = [ dfu-programmer dfu-util diffutils git ] | ||
| 21 | ++ lib.optional avr [ avrbinutils avrgcc avrlibc ] | ||
| 22 | ++ lib.optional arm [ gcc-arm-embedded ]; | ||
| 23 | |||
| 24 | CFLAGS = lib.optional avr avr_incflags; | ||
| 25 | ASFLAGS = lib.optional avr avr_incflags; | ||
| 26 | } | ||
