···
# Respect overrides that already exist in the passed package and
# concat it with values passed via the module.
extraComponents = oldArgs.extraComponents or [] ++ extraComponents;
66
-
extraPackages = ps: (oldArgs.extraPackages or (_: []) ps) ++ (cfg.extraPackages ps);
66
+
extraPackages = ps: (oldArgs.extraPackages or (_: []) ps)
67
+
++ (cfg.extraPackages ps)
68
+
++ (lib.concatMap (component: component.propagatedBuildInputs or []) cfg.customComponents);
# Create a directory that holds all lovelace modules
···
A popular example is `python3Packages.psycopg2`
for PostgreSQL support in the recorder component.
157
+
customComponents = mkOption {
158
+
type = types.listOf types.package;
160
+
example = literalExpression ''
161
+
with pkgs.home-assistant-custom-components; [
165
+
description = lib.mdDoc ''
166
+
List of custom component packages to install.
168
+
Available components can be found below `pkgs.home-assistant-custom-components`.
···
rm -f "${cfg.configDir}/www/nixos-lovelace-modules"
469
+
copyCustomComponents = ''
470
+
mkdir -p "${cfg.configDir}/custom_components"
472
+
# remove components symlinked in from below the /nix/store
473
+
components="$(find "${cfg.configDir}/custom_components" -maxdepth 1 -type l)"
474
+
for component in "$components"; do
475
+
if [[ "$(readlink "$component")" =~ ^${escapeShellArg builtins.storeDir} ]]; then
480
+
# recreate symlinks for desired components
481
+
declare -a components=(${escapeShellArgs cfg.customComponents})
482
+
for component in "''${components[@]}"; do
483
+
path="$(dirname $(find "$component" -name "manifest.json"))"
484
+
ln -fns "$path" "${cfg.configDir}/custom_components/"
(optionalString (cfg.config != null) copyConfig) +
(optionalString (cfg.lovelaceConfig != null) copyLovelaceConfig) +
455
-
copyCustomLovelaceModules
490
+
copyCustomLovelaceModules +
491
+
copyCustomComponents
environment.PYTHONPATH = package.pythonPath;