nixpkgs/pkgs/servers/home-assistant/custom-components
2024-09-21 14:50:18 +02:00
..
adaptive_lighting home-assistant-custom-components.adaptive_lighting: 1.19.1 -> 1.22.0 2024-06-15 22:34:07 +01:00
alarmo home-assistant-custom-components.alarmo: init at 1.10.4 2024-07-14 14:24:58 -04:00
auth-header home-assistant-custom-components.auth-header: init at 1.10-unstable-2024-02-26 2024-03-02 13:22:01 -07:00
average home-assistant-custom-components.average: init at 2.3.4 2024-09-13 13:46:49 +02:00
awtrix home-assistant-custom-components.awtrix: init at unstable-2024-05-26 2024-06-22 17:28:58 +02:00
better_thermostat home-assistant-custom-components.better_thermostat: 1.5.0 -> 1.6.0 2024-08-25 20:11:12 -07:00
dwd home-assistant-custom-components.dwd: add emilylange as maintainer 2024-09-16 23:56:25 +02:00
elevenlabs_tts home-assistant-custom-components.elevenlabs_tts: init at 2.3.0 2024-07-14 14:11:13 -04:00
emporia_vue
epex_spot home-assistant-custom-component-epex_spot: 2.3.7 -> 2.3.8 2024-07-01 00:59:03 +02:00
frigate home-assistant-custom-components.frigate: 5.2.0 -> 5.3.0 2024-08-01 03:16:21 +02:00
garmin_connect home-assistant-custom-components.garmin_connect: Add dmadisetti as maintainer 2024-09-05 12:54:38 +02:00
govee-lan treewide: replace all pytest-cov patching outside of pythonPackages with pytest-cov-stub 2024-08-27 20:47:13 +02:00
gpio
homematicip_local home-assistant-custom-components.homematicip_local: 1.64.0 -> 1.65.0 2024-08-26 10:49:54 -07:00
indego home-assistant-custom-components.indego: 5.7.2 -> 5.7.4 2024-07-23 01:48:40 +02:00
local_luftdaten home-assistant-custom-components.local_luftdaten: init at 2.3.1 2024-04-08 20:57:35 +02:00
localtuya home-assistant-custom-components.localtuya: 5.2.1 -> 5.2.2 2024-08-28 19:00:08 +02:00
mass treewide: replace all pytest-cov patching outside of pythonPackages with pytest-cov-stub (#336777) 2024-08-28 22:17:38 -04:00
midea_ac home-assistant-custom-components.midea_ac: init at 2024.9.2 2024-09-14 16:46:14 +02:00
midea_ac_lan home-assistant-custom-components.midea_ac_lan: init at 0.3.22 2024-05-17 14:06:45 +03:00
midea-air-appliances-lan home-assistant-components.midea-air-appliances-lan: 0.9.2 -> 0.9.4 2024-04-13 10:04:50 +03:00
miele treewide: Remove indefinite article from meta.description 2024-06-09 23:07:45 +02:00
moonraker home-assistant-custom-components.moonraker: 1.3.4 -> 1.3.5 2024-09-08 11:20:39 +02:00
ntfy home-assistant-custom-component.ntfy: 1.0.2 -> 1.1.0-pre.2 2024-05-10 10:14:17 +02:00
omnik_inverter treewide: Remove the definite article from meta.description 2024-06-09 23:08:46 +02:00
prometheus_sensor home-assistant-custom-components.prometheus_sensor: 1.0.0 -> 1.1.0 2024-05-20 16:41:56 +02:00
samsungtv-smart treewide: remove trailing space in description 2024-07-26 03:38:50 +02:00
sensi home-assistant-custom-components.sensi: 1.3.1 -> 1.3.4 2024-03-21 03:53:58 +00:00
smartir home-assistant-custom-components.smartir: replace disutils with packaging 2024-05-13 23:11:09 +08:00
smartthinq-sensors home-assistant-custom-components.smartthinq-sensors: 0.39.0 -> 0.39.2 2024-06-06 12:40:46 +03:00
solax_modbus home-assistant-custom-components.solax_modbus: init at 2024.09.4 2024-09-20 17:30:58 +02:00
solis-sensor home-assistant-custom-components.solis-sensor: 3.6.0 -> 3.7.0 2024-09-06 18:31:36 +01:00
somweb home-assistant-custom-components.somweb: init at 1.1.0 2024-08-20 14:14:02 +02:00
spook home-assistant-custom-components.spook: init at 3.0.1 2024-06-23 22:03:37 +02:00
tuya_local home-assistant-custom-components.tuya_local: 2024.6.0 -> 2024.8.0 2024-09-03 21:15:31 +02:00
volkswagen_we_connect_id home-assistant-custom-components.volkswagen_we_connect_id: init at 0.2.0 2024-08-10 09:19:41 -07:00
volkswagencarnet home-assistant-custom-components.volkswagencarnet: init at 5.0.3 2024-07-22 08:14:16 -07:00
waste_collection_schedule home-assistant-custom-components.waste_collection_schedule: 2.1.0 -> 2.2.0 2024-09-10 12:31:06 -07:00
xiaomi_gateway3 home-assistant-custom-components.xiaomi_gateway3: 4.0.5 -> 4.0.6 2024-09-05 18:30:22 +08:00
xiaomi_miot home-assistant-custom-components.xiaomi_miot: 0.7.19 -> 0.7.20 2024-08-23 04:55:01 +00:00
yassi treewide: Remove indefinite article from meta.description 2024-06-09 23:07:45 +02:00
default.nix home-assistant-custom-components.solax_modbus: init at 2024.09.4 2024-09-20 17:30:58 +02:00
README.md home-assistant-custom-components: fix typo 2024-07-22 08:14:17 -07:00

Packaging guidelines

buildHomeAssistantComponent

Custom components should be packaged using the buildHomeAssistantComponent function, that is provided at top-level. It builds upon buildPythonPackage but uses a custom install and check phase.

Python runtime dependencies can be directly consumed as unqualified function arguments. Pass them into propagatedBuildInputs, for them to be available to Home Assistant.

Out-of-tree components need to use Python packages from home-assistant.python.pkgs as to not introduce conflicting package versions into the Python environment.

Example Boilerplate:

{ lib
, buildHomeAssistantComponent
, fetchFromGitHub
}:

buildHomeAssistantComponent {
  # owner, domain, version

  src = fetchFromGithub {
    # owner, repo, rev, hash
  };

  propagatedBuildInputs = [
    # python requirements, as specified in manifest.json
  ];

  meta = with lib; {
    # changelog, description, homepage, license, maintainers
  };
}

Package attribute

The attribute name must reflect the domain as seen in the manifest.json, which in turn will match the python module name below in the custom_components/ directory.

Example:

The project mweinelt/ha-prometheus-sensor would receive the attribute name "prometheus_sensor", because both domain in the manifest.json as well as the module name are prometheus_sensor.

Package name

The pname attribute is a composition of both owner and domain.

Don't set pname, set owner and domain instead.

Exposing the domain attribute separately allows checking for conflicting components at eval time.

Manifest check

The buildHomeAssistantComponent builder uses a hook to check whether the dependencies specified in the manifest.json are present and inside the specified version range. It also makes sure derivation and manifest agree about the domain name.

There shouldn't be a need to disable this hook, but you can set dontCheckManifest to true in the derivation to achieve that.