diff --git a/pkgs/by-name/es/esphome/dashboard.nix b/pkgs/by-name/es/esphome/dashboard.nix index 444d9205f16c..8c9df558a942 100644 --- a/pkgs/by-name/es/esphome/dashboard.nix +++ b/pkgs/by-name/es/esphome/dashboard.nix @@ -13,14 +13,14 @@ buildPythonPackage (finalAttrs: { pname = "esphome-dashboard"; - version = "20260210.0"; + version = "20260408.1"; pyproject = true; src = fetchFromGitHub { owner = "esphome"; repo = "dashboard"; tag = finalAttrs.version; - hash = "sha256-Edd2ZOSBAZSrGVjbncyPhhjFjE0CxBHz16ZHXyzx9LI="; + hash = "sha256-OY7s/b0rWmjI9QfmEwj3VxbTFrj99fyf9x1tPl24RbI="; }; npmDeps = fetchNpmDeps { diff --git a/pkgs/by-name/es/esphome/package.nix b/pkgs/by-name/es/esphome/package.nix index 1d7fb10189f6..7dd6ee371525 100644 --- a/pkgs/by-name/es/esphome/package.nix +++ b/pkgs/by-name/es/esphome/package.nix @@ -31,16 +31,16 @@ let }; }; in -python.pkgs.buildPythonApplication rec { +python.pkgs.buildPythonApplication (finalAttrs: { pname = "esphome"; - version = "2026.3.3"; + version = "2026.4.3"; pyproject = true; src = fetchFromGitHub { owner = "esphome"; repo = "esphome"; - tag = version; - hash = "sha256-yMPHz6IZIGM4oJw1wspEL3lIIiPv4WZALUJ7J1UWukY="; + tag = finalAttrs.version; + hash = "sha256-+esSczOBIT4dJEyzqmEv6YMU4wGkN4lFGmuZKRp5/bo="; }; patches = [ @@ -49,6 +49,10 @@ python.pkgs.buildPythonApplication rec { # own python environment through `python -m esptool` and then fails to find # the esptool library. ./esp32-post-build-esptool-reference.patch + # Call the platformio binary directly instead of `python -m + # esphome.platformio_runner`, which tries to import platformio as a Python + # module. + ./platformio-binary-reference.patch ]; build-system = with python.pkgs; [ @@ -119,7 +123,7 @@ python.pkgs.buildPythonApplication rec { }" # The dashboard requires esphome to be importable # dependencies are added to show better error messages - "--prefix PYTHONPATH : $out/${python.sitePackages}:${python.pkgs.makePythonPath dependencies}" + "--prefix PYTHONPATH : $out/${python.sitePackages}:${python.pkgs.makePythonPath finalAttrs.passthru.dependencies}" "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ stdenv.cc.cc ]}" "--set ESPHOME_USE_SUBPROCESS ''" # https://github.com/NixOS/nixpkgs/issues/362193 @@ -173,9 +177,10 @@ python.pkgs.buildPythonApplication rec { "test_clean_all" "test_clean_all_partial_exists" # tries to use esptool, which is wrapped in an fhsenv - "test_upload_using_esptool_path_conversion" - "test_upload_using_esptool_with_file_path" "test_upload_using_esptool_passes_crystal_callback" + "test_upload_using_esptool_path_conversion" + "test_upload_using_esptool_skips_missing_extra_flash_images" + "test_upload_using_esptool_with_file_path" # AssertionError: Expected 'run_external_command' to have been called once. Called 0 times. "test_run_platformio_cli_sets_environment_variables" # Expects a full git clone @@ -190,7 +195,7 @@ python.pkgs.buildPythonApplication rec { }; meta = { - changelog = "https://github.com/esphome/esphome/releases/tag/${version}"; + changelog = "https://github.com/esphome/esphome/releases/tag/${finalAttrs.src.tag}"; description = "Make creating custom firmwares for ESP32/ESP8266 super easy"; homepage = "https://esphome.io/"; license = with lib.licenses; [ @@ -201,7 +206,8 @@ python.pkgs.buildPythonApplication rec { hexa picnoir thanegill + karlbeecken ]; mainProgram = "esphome"; }; -} +}) diff --git a/pkgs/by-name/es/esphome/platformio-binary-reference.patch b/pkgs/by-name/es/esphome/platformio-binary-reference.patch new file mode 100644 index 000000000000..7022c0fc0c72 --- /dev/null +++ b/pkgs/by-name/es/esphome/platformio-binary-reference.patch @@ -0,0 +1,13 @@ +diff --git a/esphome/platformio_api.py b/esphome/platformio_api.py +index fc21977f..e5059f1d 100644 +--- a/esphome/platformio_api.py ++++ b/esphome/platformio_api.py +@@ -63,7 +63,7 @@ def run_platformio_cli(*args, **kwargs) -> str | int: + os.environ.setdefault("PYTHONWARNINGS", "ignore::SyntaxWarning") + # Increase uv retry count to handle transient network errors (default is 3) + os.environ.setdefault("UV_HTTP_RETRIES", "10") +- cmd = [sys.executable, "-m", "esphome.platformio_runner"] + list(args) ++ cmd = ["platformio"] + list(args) + + return run_external_process(*cmd, **kwargs) +