Add Home Assistant

This commit is contained in:
Oliver Davies 2025-05-03 20:40:47 +01:00
parent 1c7dcb5b77
commit 518bfe9cd4
4 changed files with 89 additions and 0 deletions

View file

@ -18,6 +18,7 @@
};
gitea-actions-runner.enable = true;
home-assistant.enable = true;
homepage-dashboard = {
enable = true;

View file

@ -26,6 +26,7 @@
"code"
"eric"
"florida-drupalcamp-tailwind-css"
"home"
"jellyfin"
"luke"
"nixedo"

View file

@ -18,6 +18,7 @@ with lib;
./cloudflared.nix
./containers
./forgejo.nix
./home-assistant.nix
./immich.nix
./jellyfin.nix
./nginx

View file

@ -0,0 +1,86 @@
{ config, lib, ... }:
with lib;
let
cfg = homelab.services.${service};
homelab = config.homelab;
service = "home-assistant";
in
{
options.homelab.services.${service} = {
enable = mkEnableOption "Enable ${service}";
url = mkOption {
default = "home.${homelab.domain}";
type = types.str;
};
homepage.name = mkOption {
default = "Home Assisant";
type = types.str;
};
homepage.description = mkOption {
default = "Open source home automation that puts local control and privacy first.";
type = types.str;
};
homepage.icon = mkOption {
default = "home-assistant";
type = types.str;
};
homepage.category = mkOption {
default = "Services";
type = types.str;
};
};
config = mkIf cfg.enable {
services = {
home-assistant = {
enable = true;
config = {
external_url = "https://home.${homelab.domain}";
name = "Home";
time_zone = "Europe/London";
unit_system = "metric";
http = {
trusted_proxies = [
"127.0.0.1"
"::1"
];
use_x_forwarded_for = true;
};
};
extraComponents = [
"default_config"
"elgato"
"hive"
"met"
"mobile_app"
"sia"
"weather"
"webostv"
];
openFirewall = true;
};
nginx.virtualHosts."${cfg.url}" = {
forceSSL = true;
useACMEHost = homelab.domain;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.${service}.config.http.server_port}";
proxyWebsockets = true;
recommendedProxySettings = true;
};
};
};
};
}