Add Home Assistant
This commit is contained in:
parent
1c7dcb5b77
commit
518bfe9cd4
4 changed files with 89 additions and 0 deletions
hosts/nixedo
|
@ -18,6 +18,7 @@
|
|||
};
|
||||
|
||||
gitea-actions-runner.enable = true;
|
||||
home-assistant.enable = true;
|
||||
|
||||
homepage-dashboard = {
|
||||
enable = true;
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
"code"
|
||||
"eric"
|
||||
"florida-drupalcamp-tailwind-css"
|
||||
"home"
|
||||
"jellyfin"
|
||||
"luke"
|
||||
"nixedo"
|
||||
|
|
|
@ -18,6 +18,7 @@ with lib;
|
|||
./cloudflared.nix
|
||||
./containers
|
||||
./forgejo.nix
|
||||
./home-assistant.nix
|
||||
./immich.nix
|
||||
./jellyfin.nix
|
||||
./nginx
|
||||
|
|
86
hosts/nixedo/modules/home-assistant.nix
Normal file
86
hosts/nixedo/modules/home-assistant.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue