]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Add shell.nix for NixOS users
authorLukas Werling <lukas.werling@gmail.com>
Sun, 24 Sep 2017 19:34:47 +0000 (21:34 +0200)
committerJack Humbert <jack.humb@gmail.com>
Mon, 25 Sep 2017 17:14:20 +0000 (13:14 -0400)
docs/getting_started_build_tools.md
shell.nix [new file with mode: 0644]

index 10c0b6984dbcea0c402739ae7eebd57d17139267..0617252b2c2eb403e6e140afde1cc8ffd2e74273 100644 (file)
@@ -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 (file)
index 0000000..302899c
--- /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;
+}