init
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
result*
|
||||||
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# nix-mdk
|
||||||
|
|
||||||
|
this is a nix flake for the [mdk](https://github.com/cpq/mdk) single-header ESP32C3 SDK. It also provides the awesome [esputil](https://github.com/cpq/esputil) flashing utility.
|
||||||
|
|
||||||
|
## todo
|
||||||
|
|
||||||
|
- add support for ESP32
|
||||||
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767313136,
|
||||||
|
"narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
72
flake.nix
Normal file
72
flake.nix
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
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";};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user