|
|
| Line 292: |
Line 292: |
| }]; | | }]; |
| }; | | }; |
| </syntaxHighlight>
| |
|
| |
| == Add custom lovelace modules ==
| |
|
| |
| There are many useful and pretty lovelace components out there that you might want to integrate into your dashboards. Some of them are packaged up inside NUR repositories.
| |
|
| |
| Usually you would install these into <code>/var/lib/hass/www</code>, but that comes with issues on NixOS, as their internal webserver does not follow symlinks. You could then think about exposing that directory over your webserver, but you'll notice that your webserver user has no permissions to enter the home assistant users state directory, which is due to proper hardening on the <code>home-assistant.service</code>.
| |
|
| |
| <syntaxHighlight lang=nix>
| |
| let
| |
| # https://nur.nix-community.org/repos/mweinelt/
| |
| nur = import (builtins.fetchTarball "https://github.com/mweinelt/nur-packages/archive/master.tar.gz") {};
| |
|
| |
| mkLovelaceModule = name: {
| |
| # https://www.home-assistant.io/lovelace/dashboards-and-views/#resources
| |
| url = "/local/${name}.js?${nur.hassLovelaceModules."${name}".version}";
| |
| type = "module";
| |
| };
| |
| in {
| |
| # Install lovelace components into temporary directory that can be
| |
| # served by nginx.
| |
| systemd.tmpfiles.rules = [
| |
| "d /run/hass 0700 nginx nginx"
| |
| "L+ /run/hass/mini-graph-card.js - - - - ${nur.hassLovelaceModules.mini-graph-card}/mini-graph-card-bundle.js"
| |
| "L+ /run/hass/mini-media-player.js - - - - ${nur.hassLovelaceModules.mini-media-player}/mini-media-player-bundle.js"
| |
| "L+ /run/hass/multiple-entity-row.js - - - - ${nur.hassLovelaceModules.multiple-entity-row}/multiple-entity-row.js"
| |
| ];
| |
|
| |
| # Instruct home-assistant to load these resources in the lovelace frontend
| |
| services.home-assistant.config.lovelace = {
| |
| resources = [
| |
| (mkLovelaceModule "mini-graph-card") # https://github.com/kalkih/mini-graph-card
| |
| (mkLovelaceModule "mini-media-player") # https://github.com/kalkih/mini-media-player
| |
| (mkLovelaceModule "multiple-entity-row") # https://github.com/benct/lovelace-multiple-entity-row
| |
| ];
| |
| };
| |
|
| |
| services.nginx.virtualHosts."home.example.com" = {
| |
| locations."/local/" = {
| |
| alias = "/run/hass/";
| |
| };
| |
| };
| |
| }
| |
|
| |
| </syntaxHighlight>
| |
|
| |
| == Add custom components ==
| |
|
| |
| In order to install a custom component, you have to place it in <code>/var/lib/hass/custom_components</code>. This can be achieved using systemd tmpfiles like so (for sonoff custom component):
| |
|
| |
| <syntaxHighlight lang=nix>
| |
| systemd.tmpfiles.rules = [
| |
| "C /var/lib/hass/custom_components/sonoff - - - - ${sources.sonoff-lan}/custom_components/sonoff"
| |
| "Z /var/lib/hass/custom_components 770 hass hass - -"
| |
| ];
| |
| </syntaxHighlight> | | </syntaxHighlight> |
|
| |
|