You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.7 KiB

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