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;
|
gitea-actions-runner.enable = true;
|
||||||
|
home-assistant.enable = true;
|
||||||
|
|
||||||
homepage-dashboard = {
|
homepage-dashboard = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
"code"
|
"code"
|
||||||
"eric"
|
"eric"
|
||||||
"florida-drupalcamp-tailwind-css"
|
"florida-drupalcamp-tailwind-css"
|
||||||
|
"home"
|
||||||
"jellyfin"
|
"jellyfin"
|
||||||
"luke"
|
"luke"
|
||||||
"nixedo"
|
"nixedo"
|
||||||
|
|
|
@ -18,6 +18,7 @@ with lib;
|
||||||
./cloudflared.nix
|
./cloudflared.nix
|
||||||
./containers
|
./containers
|
||||||
./forgejo.nix
|
./forgejo.nix
|
||||||
|
./home-assistant.nix
|
||||||
./immich.nix
|
./immich.nix
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
./nginx
|
./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