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.

50 lines
1.4 KiB

  1. { avr ? true, arm ? true, teensy ? true }:
  2. let
  3. overlay = self: super:
  4. let addDarwinSupport = pkg: pkg.overrideAttrs (oldAttrs: {
  5. meta.platforms = (oldAttrs.meta.platforms or []) ++ self.lib.platforms.darwin;
  6. });
  7. in {
  8. dfu-programmer = addDarwinSupport super.dfu-programmer;
  9. teensy-loader-cli = addDarwinSupport super.teensy-loader-cli;
  10. };
  11. nixpkgs = builtins.fetchTarball {
  12. url = "https://github.com/NixOS/nixpkgs/archive/903266491b7b9b0379e88709feca0af900def0d9.tar.gz";
  13. sha256 = "1b5wjrfgyha6s15k1yjyx41hvrpmd5szpkpkxk6l5hyrfqsr8wip";
  14. };
  15. pkgs = import nixpkgs { overlays = [ overlay ]; };
  16. in
  17. with pkgs;
  18. let
  19. avrlibc = pkgsCross.avr.libcCross;
  20. avr_incflags = [
  21. "-isystem ${avrlibc}/avr/include"
  22. "-B${avrlibc}/avr/lib/avr5"
  23. "-L${avrlibc}/avr/lib/avr5"
  24. "-B${avrlibc}/avr/lib/avr35"
  25. "-L${avrlibc}/avr/lib/avr35"
  26. "-B${avrlibc}/avr/lib/avr51"
  27. "-L${avrlibc}/avr/lib/avr51"
  28. ];
  29. in
  30. stdenv.mkDerivation {
  31. name = "qmk-firmware";
  32. buildInputs = [ dfu-programmer dfu-util diffutils git python3 ]
  33. ++ lib.optional avr [
  34. pkgsCross.avr.buildPackages.binutils
  35. pkgsCross.avr.buildPackages.gcc8
  36. avrlibc
  37. avrdude
  38. ]
  39. ++ lib.optional arm [ gcc-arm-embedded ]
  40. ++ lib.optional teensy [ teensy-loader-cli ];
  41. AVR_CFLAGS = lib.optional avr avr_incflags;
  42. AVR_ASFLAGS = lib.optional avr avr_incflags;
  43. }