From 2b55c419ea72225030c884ce818a571ef0247b42 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 9 Jul 2020 08:50:01 +1200 Subject: [PATCH] shell.nix improvements, and fix problems on Darwin (#9551) --- shell.nix | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/shell.nix b/shell.nix index 78bc005f7e5..93db7b371db 100644 --- a/shell.nix +++ b/shell.nix @@ -1,25 +1,40 @@ { avr ? true, arm ? true, teensy ? true }: let - overlay = self: super: - let addDarwinSupport = pkg: pkg.overrideAttrs (oldAttrs: { - meta.platforms = (oldAttrs.meta.platforms or []) ++ self.lib.platforms.darwin; - }); - in { - dfu-programmer = addDarwinSupport super.dfu-programmer; - teensy-loader-cli = addDarwinSupport super.teensy-loader-cli; - }; - nixpkgs = builtins.fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/903266491b7b9b0379e88709feca0af900def0d9.tar.gz"; sha256 = "1b5wjrfgyha6s15k1yjyx41hvrpmd5szpkpkxk6l5hyrfqsr8wip"; }; - pkgs = import nixpkgs { overlays = [ overlay ]; }; + pkgs = import nixpkgs { }; + + hjson = with pkgs.python3Packages; buildPythonPackage rec { + pname = "hjson"; + version = "3.0.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "1yaimcgz8w0ps1wk28wk9g9zdidp79d14xqqj9rjkvxalvx2f5qx"; + }; + doCheck = false; + }; + + pythonEnv = pkgs.python3.withPackages (p: with p; [ + # requirements.txt + appdirs + argcomplete + colorama + hjson + # requirements-dev.txt + nose2 + flake8 + pep8-naming + yapf + ]); in with pkgs; -let +let avrlibc = pkgsCross.avr.libcCross; avr_incflags = [ @@ -32,11 +47,11 @@ let "-L${avrlibc}/avr/lib/avr51" ]; in -stdenv.mkDerivation { +mkShell { name = "qmk-firmware"; - buildInputs = [ dfu-programmer dfu-util diffutils git python3 ] - ++ lib.optional avr [ + buildInputs = [ dfu-programmer dfu-util diffutils git pythonEnv ] + ++ lib.optional avr [ pkgsCross.avr.buildPackages.binutils pkgsCross.avr.buildPackages.gcc8 avrlibc @@ -47,4 +62,9 @@ stdenv.mkDerivation { AVR_CFLAGS = lib.optional avr avr_incflags; AVR_ASFLAGS = lib.optional avr avr_incflags; + shellHook = '' + # Prevent the avr-gcc wrapper from picking up host GCC flags + # like -iframework, which is problematic on Darwin + unset NIX_TARGET_CFLAGS_COMPILE + ''; }