about summary refs log tree commit diff
path: root/pkgs/servers/home-assistant/custom-components
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2023-11-25 16:32:41 +0100
committerMartin Weinelt <hexa@darmstadt.ccc.de>2023-12-06 03:55:33 +0100
commit01616e5331d2790127aa2e61c126fff9467889f2 (patch)
treee00117db74b6800f478e9404bb036d970d641b25 /pkgs/servers/home-assistant/custom-components
parent8c87a98ce1e8850faee64a0a540acff233b66bd2 (diff)
downloadnixlib-01616e5331d2790127aa2e61c126fff9467889f2.tar
nixlib-01616e5331d2790127aa2e61c126fff9467889f2.tar.gz
nixlib-01616e5331d2790127aa2e61c126fff9467889f2.tar.bz2
nixlib-01616e5331d2790127aa2e61c126fff9467889f2.tar.lz
nixlib-01616e5331d2790127aa2e61c126fff9467889f2.tar.xz
nixlib-01616e5331d2790127aa2e61c126fff9467889f2.tar.zst
nixlib-01616e5331d2790127aa2e61c126fff9467889f2.zip
buildHomeAssistantComponent: migrate from pname to owner/domain
Also make the attribute name to match the domain name.

This is more in line with the home-assistant custom component ecosystem
and allows additional validation between the derivation and the manifest.

Also, at a later time, this will enable us to check for domain conflicts
at eval time.
Diffstat (limited to 'pkgs/servers/home-assistant/custom-components')
-rw-r--r--pkgs/servers/home-assistant/custom-components/README.md30
-rw-r--r--pkgs/servers/home-assistant/custom-components/default.nix2
-rw-r--r--pkgs/servers/home-assistant/custom-components/prometheus_sensor/default.nix (renamed from pkgs/servers/home-assistant/custom-components/prometheus-sensor/default.nix)3
3 files changed, 26 insertions, 9 deletions
diff --git a/pkgs/servers/home-assistant/custom-components/README.md b/pkgs/servers/home-assistant/custom-components/README.md
index a7244b25c173..d7137e5c62f7 100644
--- a/pkgs/servers/home-assistant/custom-components/README.md
+++ b/pkgs/servers/home-assistant/custom-components/README.md
@@ -25,7 +25,7 @@ versions into the Python environment.
 }:
 
 buildHomeAssistantComponent {
-  # pname, version
+  # owner, domain, version
 
   src = fetchFromGithub {
     # owner, repo, rev, hash
@@ -40,18 +40,34 @@ buildHomeAssistantComponent {
   }
 }
 
-## Package name normalization
+## Package attribute
 
-Apply the same normalization rules as defined for python packages in
-[PEP503](https://peps.python.org/pep-0503/#normalized-names).
-The name should be lowercased and dots, underlines or multiple
-dashes should all be replaced by a single dash.
+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](https://github.com/mweinelt/ha-prometheus-sensor/blob/1.0.0/custom_components/prometheus_sensor/manifest.json#L2)
+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.
+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.
diff --git a/pkgs/servers/home-assistant/custom-components/default.nix b/pkgs/servers/home-assistant/custom-components/default.nix
index 4a96b305964a..15bd721c72e8 100644
--- a/pkgs/servers/home-assistant/custom-components/default.nix
+++ b/pkgs/servers/home-assistant/custom-components/default.nix
@@ -2,5 +2,5 @@
 }:
 
 {
-  prometheus-sensor = callPackage ./prometheus-sensor {};
+  prometheus_sensor = callPackage ./prometheus_sensor {};
 }
diff --git a/pkgs/servers/home-assistant/custom-components/prometheus-sensor/default.nix b/pkgs/servers/home-assistant/custom-components/prometheus_sensor/default.nix
index 07bcd9abec1c..2368d85552b2 100644
--- a/pkgs/servers/home-assistant/custom-components/prometheus-sensor/default.nix
+++ b/pkgs/servers/home-assistant/custom-components/prometheus_sensor/default.nix
@@ -4,7 +4,8 @@
 }:
 
 buildHomeAssistantComponent rec {
-  pname = "prometheus-sensor";
+  owner = "mweinelt";
+  domain = "prometheus_sensor";
   version = "1.0.0";
 
   src = fetchFromGitHub {