improve flake

This commit is contained in:
Ricardo (XenGi) Band 2026-05-30 19:26:30 +02:00
commit 041956c137
No known key found for this signature in database

View file

@ -29,14 +29,101 @@
"python3.13-ecdsa-0.19.1"
];
};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
(esp-idf-full.override {
autoSerialPort = pkgs.writeShellScriptBin "esp-port" ''
set -euo pipefail
# Try common ESP USB serial patterns
# TODO: reduce to Waveshare ESP32-S3 detection
PORT=$(
for p in /dev/serial/by-id/*; do
case "$p" in
*CP210*|*ch340*|*USB*|*ESP*) echo "$p"; break ;;
esac
done
)
if [ -z "$PORT" ]; then
echo "No ESP serial device found in /dev/serial/by-id"
echo "Fallback: listing /dev/ttyUSB* /dev/ttyACM*"
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null || true
exit 1
fi
echo "$PORT"
'';
esp-idf = pkgs.esp-idf-full.override {
rev = "v6.0.1";
sha256 = "sha256-4KJa686qc+u7XkF/GS2o53l1SpwP2EmdqAn/qmlL1yU=";
})
};
in
{
apps = {
menuconfig = {
type = "app";
program = "${pkgs.writeShellScriptBin "idf-menuconfig" ''
${esp-idf}/tools/idf.py menuconfig
''}/bin/idf-menuconfig";
};
build = {
type = "app";
program = "${pkgs.writeShellScriptBin "idf-build" ''
${esp-idf}/tools/idf.py build
''}/bin/idf-build";
};
flash = {
type = "app";
program = "${pkgs.writeShellScriptBin "idf-flash" ''
set -euo pipefail
PORT=$(${autoSerialPort}/bin/esp-port)
echo "Flashing on: $PORT"
${esp-idf}/tools/idf.py -p "$PORT" flash
''}/bin/idf-flash";
};
monitor = {
type = "app";
program = "${pkgs.writeShellScriptBin "idf-monitor" ''
set -euo pipefail
PORT=$(${autoSerialPort}/bin/esp-port)
echo "Monitoring: $PORT"
${esp-idf}/tools/idf.py -p "$PORT" monitor
''}/bin/idf-monitor";
};
clean = {
type = "app";
program = "${pkgs.writeShellScriptBin "idf-clean" ''
${esp-idf}/tools/idf.py clean
''}/bin/idf-clean";
};
full = {
type = "app";
program = "${pkgs.writeShellScriptBin "idf-full" ''
set -euo pipefail
PORT=$(${autoSerialPort}/bin/esp-port)
echo "Building..."
${esp-idf}/tools/idf.py build
echo "Flashing on $PORT..."
${esp-idf}/tools/idf.py -p "$PORT" flash
echo "Starting monitor..."
${esp-idf}/tools/idf.py -p "$PORT" monitor
''}/bin/idf-full";
};
};
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
esp-idf
git
minicom
usbutils
gawk
coreutils
cmake
ninja
];
};
}