{
  writeShellScript,
  lib,
  curl,
  jq,
  git,
  gnugrep,
  gnused,
  nix-update,
}:

writeShellScript "update-esphome" ''
  PATH=${
    lib.makeBinPath [
      curl
      gnugrep
      gnused
      jq
      git
      nix-update
    ]
  }

  LATEST=$(curl https://api.github.com/repos/esphome/esphome/releases/latest | jq -r '.name')
  echo "Latest version: $LATEST"

  DASHBOARD_VERSION=$(curl https://raw.githubusercontent.com/esphome/esphome/$LATEST/requirements.txt | \
    grep "esphome-dashboard==" | sed "s/.*=//")
  echo "Dashboard version: $DASHBOARD_VERSION"

  nix-update esphome.dashboard --version $DASHBOARD_VERSION
  nix-update esphome --version $LATEST
''