diff options
author | Lukas Werling <lukas.werling@gmail.com> | 2017-09-24 21:34:47 +0200 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2017-09-25 13:14:20 -0400 |
commit | 1ad941e98454237d269057d5f68cc1e76ca35dd4 (patch) | |
tree | c7f97fcc2107151fdbcb6389aa8f64c1deea1db4 | |
parent | 809c9258c11d8e502004f3187d8c22e23bf69dec (diff) |
Add shell.nix for NixOS users
-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 10c0b6984d..0617252b2c 100644 --- a/docs/getting_started_build_tools.md +++ b/docs/getting_started_build_tools.md @@ -36,7 +36,15 @@ Debian/Ubuntu example: 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 diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000000..302899c52b --- /dev/null +++ b/shell.nix @@ -0,0 +1,26 @@ +{ 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; +} |