Compare commits

...

4 Commits

Author SHA1 Message Date
Giulio De Pasquale
c95d66caab refactor(home-assistant.nix): remove home-assistant configuration 2024-12-09 10:36:37 +00:00
Giulio De Pasquale
0fb70b7ff8 fix(sonarr.nix): add "lan" to dnsInterfaces 2024-12-09 10:36:22 +00:00
Giulio De Pasquale
1443218ae7 fix(nextcloud.nix): add group "nginx" to nextcloud-admin and nextcloud-database secrets 2024-12-09 10:36:10 +00:00
Giulio De Pasquale
203a4edcd6 feat(architect): add Home Assistant configuration
- Added `homeassistant.nix` to the list of services in `default.nix`
- Configured Home Assistant with basic settings and extra components
- Set up vhost for Home Assistant with specified domain and network interfaces
- Included necessary Python packages for Home Assistant components
2024-12-09 10:35:38 +00:00
5 changed files with 64 additions and 69 deletions

View File

@ -40,6 +40,7 @@ in
./teslamate.nix ./teslamate.nix
./postgres.nix ./postgres.nix
./netdata.nix ./netdata.nix
./homeassistant.nix
]; ];
age.identityPaths = [ "/root/.ssh/id_ed25519" ]; age.identityPaths = [ "/root/.ssh/id_ed25519" ];

View File

@ -1,68 +0,0 @@
{ lib, config, pkgs, ... }:
let
domain = "home.giugl.io";
network = import ./network.nix;
host = "127.0.0.1";
port = 8123;
in
{
services = {
mosquitto = {
enable = true;
listeners = [{
acl = [ "pattern readwrite #" ];
omitPasswordAuth = true;
settings.allow_anonymous = true;
}];
};
home-assistant = {
enable = true;
extraComponents = [
# Components required to complete the onboarding
"met"
"radio_browser"
];
config = {
default_config = { };
http = {
server_port = port;
server_host = host;
trusted_proxies = [ host ];
use_x_forwarded_for = true;
};
homeassistant = {
name = "Manduria";
latitude = 40.4;
longitude = 17.63;
unit_system = "metric";
time_zone = "Europe/Rome";
external_url = "http://${domain}";
};
};
};
nginx.virtualHosts.${domain} = {
# forceSSL = true;
# enableACME = true;
locations."/" = {
proxyPass = "http://${host}:${toString port}";
extraConfig = ''
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
allow 10.0.0.0/24;
${lib.concatMapStrings (x: "allow ${x};") network.gdevices}
deny all;
'';
};
};
};
networking.extraHosts = ''
${network.architect-lan} ${domain}
${network.architect-wg} ${domain}
${network.architect-ts} ${domain}
'';
}

View File

@ -0,0 +1,60 @@
{ config, pkgs, ... }:
let
domain = "home.giugl.io";
in
{
services.home-assistant = {
enable = true;
config = {
http = {
server_host = "127.0.0.1";
server_port = 8123;
use_x_forwarded_for = true;
trusted_proxies = [ "127.0.0.1" ];
};
homeassistant = {
name = "Underwood House";
unit_system = "metric";
};
default_config = { };
};
extraComponents = [
"otbr"
"litterrobot"
"apple_tv"
"homekit"
"homekit_controller"
"spotify"
"hue"
"sonos"
"tplink"
"ollama"
"wyoming"
"whisper"
"piper"
"isal"
"radarr"
"sonarr"
];
extraPackages = python3Packages: with python3Packages; [
pkgs.openai-whisper
openai-whisper
pkgs.piper-tts
pkgs.wyoming-piper
];
};
architect.vhost.${domain} = with config.architect.networks; {
dnsInterfaces = [ "tailscale" "lan" ];
locations."/" = {
port = config.services.home-assistant.config.http.server_port;
allowLan = true;
proxyWebsockets = true;
allow = [
tailscale.net
];
};
};
}

View File

@ -12,10 +12,12 @@ in
nextcloud-admin = { nextcloud-admin = {
file = ../../secrets/nextcloud-admin.age; file = ../../secrets/nextcloud-admin.age;
owner = "nextcloud"; owner = "nextcloud";
group ="nginx";
}; };
nextcloud-database = { nextcloud-database = {
file = ../../secrets/nextcloud-database.age; file = ../../secrets/nextcloud-database.age;
owner = "nextcloud"; owner = "nextcloud";
group = "nginx";
}; };
}; };

View File

@ -11,7 +11,7 @@ in
}; };
architect.vhost.${domain} = with config.architect.networks; { architect.vhost.${domain} = with config.architect.networks; {
dnsInterfaces = [ "tailscale" ]; dnsInterfaces = [ "tailscale" "lan" ];
locations."/" = { locations."/" = {
port = 8989; port = 8989;