depot/ops/nixos/totoro/home-assistant.nix

71 lines
1.8 KiB
Nix

{ depot, lib, pkgs, ... }:
let
inherit (depot.ops) secrets;
in {
services.home-assistant = {
enable = true;
autoExtraComponents = true;
applyDefaultConfig = true;
configWritable = true;
lovelaceConfigWritable = true;
config = {
homeassistant = {
name = "117 Malden Road";
time_zone = "Europe/London";
external_url = "https://ha.lukegb.com";
internal_url = "https://ha.lukegb.com";
};
notify = [{
name = "pushover-luke";
platform = "pushover";
api_key = secrets.pushover.tokens.home-assistant;
user_key = secrets.pushover.userKey;
}];
http = {
use_x_forwarded_for = true;
trusted_proxies = [ "::1" "127.0.0.1" ];
};
lifx.light = {};
light = [{
platform = "group";
name = "Bedroom Lights";
entities = map (x: "light.overhead_${x.side}_${x.n}") (lib.cartesianProductOfSets { side = [ "left" "right" ]; n = [ "1" "2" "3" "4" ]; });
}];
cast = {};
plex = {};
default_config = {};
};
lovelaceConfig = {
title = "117 Malden Road";
views = [{
title = "Bedroom Lights";
cards = [{
type = "light";
entity = "light.bedroom_lights";
} {
type = "light";
entity = "light.bedside_lamp";
icon = "mdi:webcam";
}];
}];
};
};
security.acme.certs."ha.lukegb.com" = {
dnsProvider = "cloudflare";
credentialsFile = secrets.cloudflareCredentials;
domain = "ha.lukegb.com";
postRun = ''
systemctl reload nginx
'';
};
services.nginx.virtualHosts."ha.lukegb.com" = {
forceSSL = true;
useACMEHost = "ha.lukegb.com";
locations."/" = {
proxyPass = "http://localhost:8123/";
proxyWebsockets = true;
};
};
}