Files
nix-mdk/flake.nix
andromeda 377aeedafb init
2026-04-08 00:52:29 +02:00

73 lines
2.3 KiB
Nix

{
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
outputs = {
nixpkgs,
self,
...
}: let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
src = pkgs.fetchzip {
url = "https://github.com/cpq/mdk/archive/e2c1d4e4bd9b152dfa32b48a7c0ae5f5a8b8276d.zip";
sha256 = "sha256-IBlM/c75KscqxKccGbiiiyjcxyLvUQb+ycHFGEpFAn8=";
};
esp32c3example = {exampleName}: (pkgs.callPackage ({
pkgsCross,
gitMinimal,
fetchzip,
esputil,
lib,
...
}:
pkgsCross.riscv64-embedded.stdenv.mkDerivation {
pname = "esp32c3-${exampleName}";
version = "0.0.2";
inherit src;
MDK = "/build/source"; # so it jumps to build directory for
ARCH = "esp32c3";
TOOLCHAIN = "riscv64-none-elf";
nativeBuildInputs = [
gitMinimal
];
patchPhase = ''
cp ${esputil}/bin/esputil esputil
'';
buildPhase = ''
git init
echo $ESPUTIL
make -C examples/${exampleName} build
'';
installPhase = ''
mkdir -p $out/bin
cp ./examples/${exampleName}/firmware.{bin,elf} $out/bin/
cat<<EOF>$out/bin/esp32c3-${exampleName}
#!/usr/bin/env bash
${esputil}/bin/esputil flash 0 $(echo $out)/bin/firmware.bin
EOF
chmod +x $out/bin/esp32c3-${exampleName}
'';
}) {esputil = self.packages.x86_64-linux.esputil;});
in {
packages.x86_64-linux.esputil = pkgs.callPackage ({
stdenv,
fetchzip,
...
}:
stdenv.mkDerivation {
pname = "esputil";
version = "1.0.1";
src = fetchzip {
url = "https://github.com/cpq/esputil/archive/refs/tags/1.0.1.zip";
sha256 = "sha256-yP/JPmk+5X7Ok89rOjqtiyQmIryxTiLZ0/Eil0XJHLA=";
};
installPhase = ''
mkdir -p $out/bin
cp ./esputil $out/bin/esputil -r
'';
}) {};
packages.x86_64-linux.esp32c3-blinky = esp32c3example {exampleName = "blinky";};
packages.x86_64-linux.esp32c3-bme280 = esp32c3example {exampleName = "bme280";};
packages.x86_64-linux.esp32c3-button = esp32c3example {exampleName = "button";};
packages.x86_64-linux.esp32c3-ws2812 = esp32c3example {exampleName = "ws2812";};
};
}