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.

91 lines
2.0 KiB

3 years ago
  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. milc = with pkgs.python3Packages; buildPythonPackage rec {
  18. pname = "milc";
  19. version = "1.0.10";
  20. src = fetchPypi {
  21. inherit pname version;
  22. sha256 = "1q1p7qrqk78mw67nhv04zgxaq8himmdxmy2vp4fmi7chwgcbpi32";
  23. };
  24. propagatedBuildInputs = [
  25. appdirs
  26. argcomplete
  27. colorama
  28. ];
  29. doCheck = false;
  30. };
  31. pythonEnv = pkgs.python3.withPackages (p: with p; [
  32. # requirements.txt
  33. appdirs
  34. argcomplete
  35. colorama
  36. hjson
  37. milc
  38. pygments
  39. # requirements-dev.txt
  40. nose2
  41. flake8
  42. pep8-naming
  43. yapf
  44. ]);
  45. in
  46. with pkgs;
  47. let
  48. avrlibc = pkgsCross.avr.libcCross;
  49. avr_incflags = [
  50. "-isystem ${avrlibc}/avr/include"
  51. "-B${avrlibc}/avr/lib/avr5"
  52. "-L${avrlibc}/avr/lib/avr5"
  53. "-B${avrlibc}/avr/lib/avr35"
  54. "-L${avrlibc}/avr/lib/avr35"
  55. "-B${avrlibc}/avr/lib/avr51"
  56. "-L${avrlibc}/avr/lib/avr51"
  57. ];
  58. in
  59. mkShell {
  60. name = "qmk-firmware";
  61. buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv ]
  62. ++ lib.optional avr [
  63. pkgsCross.avr.buildPackages.binutils
  64. pkgsCross.avr.buildPackages.gcc8
  65. avrlibc
  66. avrdude
  67. ]
  68. ++ lib.optional arm [ gcc-arm-embedded ]
  69. ++ lib.optional teensy [ teensy-loader-cli ];
  70. AVR_CFLAGS = lib.optional avr avr_incflags;
  71. AVR_ASFLAGS = lib.optional avr avr_incflags;
  72. shellHook = ''
  73. # Prevent the avr-gcc wrapper from picking up host GCC flags
  74. # like -iframework, which is problematic on Darwin
  75. unset NIX_CFLAGS_COMPILE_FOR_TARGET
  76. '';
  77. }