shell.nix 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. { avr ? true, arm ? true, teensy ? true }:
  2. let
  3. nixpkgs = builtins.fetchTarball {
  4. url = "https://github.com/NixOS/nixpkgs/archive/1f77a4c8c74bbe896053994836790aa9bf6dc5ba.tar.gz";
  5. sha256 = "1j62nmzz3w33dplzf1xz1pg1pfkxii7lwdqmsxmc71cs9cm3s7n1";
  6. };
  7. pkgs = import nixpkgs { };
  8. pythonEnv = pkgs.python3.withPackages (p: with p; [
  9. # requirements.txt
  10. appdirs
  11. argcomplete
  12. colorama
  13. dotty-dict
  14. hjson
  15. jsonschema
  16. milc
  17. pygments
  18. # requirements-dev.txt
  19. nose2
  20. flake8
  21. pep8-naming
  22. yapf
  23. ]);
  24. in
  25. with pkgs;
  26. let
  27. avrlibc = pkgsCross.avr.libcCross;
  28. avr_incflags = [
  29. "-isystem ${avrlibc}/avr/include"
  30. "-B${avrlibc}/avr/lib/avr5"
  31. "-L${avrlibc}/avr/lib/avr5"
  32. "-B${avrlibc}/avr/lib/avr35"
  33. "-L${avrlibc}/avr/lib/avr35"
  34. "-B${avrlibc}/avr/lib/avr51"
  35. "-L${avrlibc}/avr/lib/avr51"
  36. ];
  37. in
  38. mkShell {
  39. name = "qmk-firmware";
  40. buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv ]
  41. ++ lib.optional avr [
  42. pkgsCross.avr.buildPackages.binutils
  43. pkgsCross.avr.buildPackages.gcc8
  44. avrlibc
  45. avrdude
  46. ]
  47. ++ lib.optional arm [ gcc-arm-embedded ]
  48. ++ lib.optional teensy [ teensy-loader-cli ];
  49. AVR_CFLAGS = lib.optional avr avr_incflags;
  50. AVR_ASFLAGS = lib.optional avr avr_incflags;
  51. shellHook = ''
  52. # Prevent the avr-gcc wrapper from picking up host GCC flags
  53. # like -iframework, which is problematic on Darwin
  54. unset NIX_CFLAGS_COMPILE_FOR_TARGET
  55. '';
  56. }