diff --git a/pkgs/by-name/es/esphome/dashboard.nix b/pkgs/by-name/es/esphome/dashboard.nix index cdbab8d18f13..301bb8ae675b 100644 --- a/pkgs/by-name/es/esphome/dashboard.nix +++ b/pkgs/by-name/es/esphome/dashboard.nix @@ -13,19 +13,19 @@ buildPythonPackage rec { pname = "esphome-dashboard"; - version = "20250514.0"; + version = "20250814.0"; pyproject = true; src = fetchFromGitHub { owner = "esphome"; repo = "dashboard"; rev = "refs/tags/${version}"; - hash = "sha256-t0+YlITnxgnLrK/SN0bSmMIv3djR9DKMlnFrR9Btwx8="; + hash = "sha256-WQsyv3s3LKKOwYEkX5GcAPnbH061q1ts7TU4HU6I8CI="; }; npmDeps = fetchNpmDeps { inherit src; - hash = "sha256-Uiz26kPxoz32t/GRppiYiVBVwWcQqUzPr0kScVUZak8="; + hash = "sha256-ShuJPS7qP2XZ3lwJrFeKRkQwX7tvyiC/0L7sGn0cMn8="; }; build-system = [ setuptools ]; diff --git a/pkgs/by-name/es/esphome/esp32-post-build-esptool-reference.patch b/pkgs/by-name/es/esphome/esp32-post-build-esptool-reference.patch new file mode 100644 index 000000000000..6f323145e85f --- /dev/null +++ b/pkgs/by-name/es/esphome/esp32-post-build-esptool-reference.patch @@ -0,0 +1,13 @@ +diff --git a/esphome/components/esp32/post_build.py.script b/esphome/components/esp32/post_build.py.script +index c99521423..e29821d7e 100644 +--- a/esphome/components/esp32/post_build.py.script ++++ b/esphome/components/esp32/post_build.py.script +@@ -88,8 +88,6 @@ def merge_factory_bin(source, target, env): + output_path = firmware_path.with_suffix(".factory.bin") + python_exe = f'"{env.subst("$PYTHONEXE")}"' + cmd = [ +- python_exe, +- "-m", + "esptool", + "--chip", + chip, diff --git a/pkgs/by-name/es/esphome/package.nix b/pkgs/by-name/es/esphome/package.nix index ef77f7baaf53..fce4a85e7f8c 100644 --- a/pkgs/by-name/es/esphome/package.nix +++ b/pkgs/by-name/es/esphome/package.nix @@ -34,16 +34,24 @@ let in python.pkgs.buildPythonApplication rec { pname = "esphome"; - version = "2025.7.5"; + version = "2025.8.0"; pyproject = true; src = fetchFromGitHub { owner = "esphome"; repo = "esphome"; tag = version; - hash = "sha256-f6HBgjg6yiFCQk6hIvQMYw+5/KjIVvUJaK+c/xmIseM="; + hash = "sha256-LOHsiSiqeCLrKLcVfAiPZl54aDTaYuKw073h0XMDiTE="; }; + patches = [ + # Use the esptool executable directly in the ESP32 post build script, that + # gets executed by platformio. This is required, because platformio uses its + # own python environment through `python -m esptool` and then fails to find + # the esptool library. + ./esp32-post-build-esptool-reference.patch + ]; + build-system = with python.pkgs; [ setuptools ]; diff --git a/pkgs/development/embedded/platformio/core.nix b/pkgs/development/embedded/platformio/core.nix index 541c119f3051..f0afbb6b5642 100644 --- a/pkgs/development/embedded/platformio/core.nix +++ b/pkgs/development/embedded/platformio/core.nix @@ -72,6 +72,7 @@ buildPythonApplication rec { click click-completion colorama + esp-idf-size git intelhex lockfile @@ -81,6 +82,7 @@ buildPythonApplication rec { pyserial pyyaml requests + rich-click semantic-version setuptools spdx-license-list-data.json diff --git a/pkgs/development/python-modules/esp-idf-size/default.nix b/pkgs/development/python-modules/esp-idf-size/default.nix new file mode 100644 index 000000000000..71b492d97f74 --- /dev/null +++ b/pkgs/development/python-modules/esp-idf-size/default.nix @@ -0,0 +1,59 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + + # dependencies + pyyaml, + rich, + + # tests + esptool, + jsonschema, + pytestCheckHook, + distutils, +}: + +buildPythonPackage rec { + pname = "esp-idf-size"; + version = "1.7.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "espressif"; + repo = "esp-idf-size"; + tag = "v${version}"; + hash = "sha256-dgvmrwnaipudKyNJ/xFAwvfjGmtDRnFbXxI2VuC/SKo="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + pyyaml + rich + ]; + + doCheck = false; # requires ESP-IDF + + nativeCheckInputs = [ + distutils + esptool + jsonschema + pytestCheckHook + ]; + + pythonImportsCheck = [ + "esp_idf_size" + ]; + + meta = { + description = ""; + homepage = "https://github.com/espressif/esp-idf-size"; + changelog = "https://github.com/espressif/esp-idf-size/blob/${src.tag}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ hexa ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index afb3dbb3fda4..aafdab065454 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4739,6 +4739,8 @@ self: super: with self; { esig = callPackage ../development/python-modules/esig { }; + esp-idf-size = callPackage ../development/python-modules/esp-idf-size { }; + espeak-phonemizer = callPackage ../development/python-modules/espeak-phonemizer { }; esper = callPackage ../development/python-modules/esper { };