From 1ad941e98454237d269057d5f68cc1e76ca35dd4 Mon Sep 17 00:00:00 2001 From: Lukas Werling Date: Sun, 24 Sep 2017 21:34:47 +0200 Subject: [PATCH] Add shell.nix for NixOS users --- docs/getting_started_build_tools.md | 10 +++++++++- shell.nix | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 shell.nix 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 {} +, 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; +}