Compare commits
No commits in common. "73ff7e32399522a6f6316c832ccca0606f64a062" and "b2256f245906c1c2c61d9dd888e10a8cebd6cfc2" have entirely different histories.
73ff7e3239
...
b2256f2459
|
@ -3,15 +3,10 @@
|
||||||
globals,
|
globals,
|
||||||
nodes,
|
nodes,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
environment.persistence."/persist".directories = [
|
environment.persistence."/persist".directories = [
|
||||||
{
|
|
||||||
directory = "/var/lib/private/esphome";
|
|
||||||
mode = "0700";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
directory = config.services.home-assistant.configDir;
|
directory = config.services.home-assistant.configDir;
|
||||||
user = "hass";
|
user = "hass";
|
||||||
|
@ -19,21 +14,9 @@
|
||||||
mode = "0700";
|
mode = "0700";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
services.esphome = {
|
|
||||||
enable = true;
|
|
||||||
address = "0.0.0.0";
|
|
||||||
port = 3001;
|
|
||||||
#allowedDevices = lib.mkForce ["/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0"];
|
|
||||||
# TODO instead deny the zigbee device
|
|
||||||
};
|
|
||||||
|
|
||||||
wireguard.services = {
|
wireguard.services = {
|
||||||
client.via = "nucnix";
|
client.via = "nucnix";
|
||||||
firewallRuleForNode.${globals.services.nginx.host}.allowedTCPPorts = [
|
firewallRuleForNode.nucnix-nginx.allowedTCPPorts = [ 3000 ];
|
||||||
3000
|
|
||||||
3001
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
services.home-assistant = {
|
services.home-assistant = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -49,12 +32,6 @@
|
||||||
"esphome"
|
"esphome"
|
||||||
#"zha"
|
#"zha"
|
||||||
"mqtt"
|
"mqtt"
|
||||||
"ollama"
|
|
||||||
"solaredge"
|
|
||||||
];
|
|
||||||
customComponents = with pkgs.home-assistant-custom-components; [
|
|
||||||
homematicip_local
|
|
||||||
pkgs.havartastorage
|
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
http = {
|
http = {
|
||||||
|
@ -103,23 +80,15 @@
|
||||||
gtts
|
gtts
|
||||||
fritzconnection
|
fritzconnection
|
||||||
adguardhome
|
adguardhome
|
||||||
aiosolaredge
|
|
||||||
zlib-ng
|
|
||||||
stringcase
|
|
||||||
hahomematic
|
|
||||||
pymodbus
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
networking.hosts = {
|
networking.hosts = {
|
||||||
"${nodes.${globals.services.adguardhome.host}.config.wireguard.services.ipv4}" = [
|
"${nodes.${globals.services.adguardhome.host}.config.wireguard.services.ipv4}" = [
|
||||||
"adguardhome.internal"
|
"adguardhome.internal"
|
||||||
];
|
];
|
||||||
"${nodes.${globals.services.ollama.host}.config.wireguard.services.ipv4}" = [
|
|
||||||
"ollama.internal"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
age.secrets."home-assistant-secrets.yaml" = {
|
age.secrets."home-assistant-secrets.yaml" = {
|
||||||
rekeyFile = config.node.secretsDir + "/secrets.yaml.age";
|
rekeyFile = "${config.node.secretsDir}/secrets.yaml.age";
|
||||||
owner = "hass";
|
owner = "hass";
|
||||||
};
|
};
|
||||||
systemd.services.home-assistant = {
|
systemd.services.home-assistant = {
|
||||||
|
|
|
@ -148,7 +148,6 @@
|
||||||
groups."adguardhome.access" = { };
|
groups."adguardhome.access" = { };
|
||||||
groups."octoprint.access" = { };
|
groups."octoprint.access" = { };
|
||||||
groups."invidious.access" = { };
|
groups."invidious.access" = { };
|
||||||
groups."esphome.access" = { };
|
|
||||||
|
|
||||||
systems.oauth2.oauth2-proxy = {
|
systems.oauth2.oauth2-proxy = {
|
||||||
displayName = "Oauth2-Proxy";
|
displayName = "Oauth2-Proxy";
|
||||||
|
@ -185,11 +184,6 @@
|
||||||
"email"
|
"email"
|
||||||
"profile"
|
"profile"
|
||||||
];
|
];
|
||||||
scopeMaps."esphome.access" = [
|
|
||||||
"openid"
|
|
||||||
"email"
|
|
||||||
"profile"
|
|
||||||
];
|
|
||||||
preferShortUsername = true;
|
preferShortUsername = true;
|
||||||
claimMaps.groups = {
|
claimMaps.groups = {
|
||||||
joinType = "array";
|
joinType = "array";
|
||||||
|
@ -199,7 +193,6 @@
|
||||||
valuesByGroup."ollama.access" = [ "ollama_access" ];
|
valuesByGroup."ollama.access" = [ "ollama_access" ];
|
||||||
valuesByGroup."octoprint.access" = [ "octoprint_access" ];
|
valuesByGroup."octoprint.access" = [ "octoprint_access" ];
|
||||||
valuesByGroup."invidious.access" = [ "invidious_access" ];
|
valuesByGroup."invidious.access" = [ "invidious_access" ];
|
||||||
valuesByGroup."esphome.access" = [ "esphome_access" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,7 @@ in
|
||||||
recommendedSetup = true;
|
recommendedSetup = true;
|
||||||
virtualHosts."${globals.services.netbird.domain}".useACMEHost = "web";
|
virtualHosts."${globals.services.netbird.domain}".useACMEHost = "web";
|
||||||
upstreams.fritz = {
|
upstreams.fritz = {
|
||||||
servers."${lib.net.cidr.host 1 "10.99.2.0/24"}:443" = { };
|
servers."${lib.net.cidr.host 1 "10.99.2.0/24"}" = { };
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
zone fritz 64k ;
|
zone fritz 64k ;
|
||||||
keepalive 5 ;
|
keepalive 5 ;
|
||||||
|
@ -159,7 +159,6 @@ in
|
||||||
(blockOf "homebox" { })
|
(blockOf "homebox" { })
|
||||||
(blockOf "homeassistant" { })
|
(blockOf "homeassistant" { })
|
||||||
(proxyProtect "ollama" { })
|
(proxyProtect "ollama" { })
|
||||||
(proxyProtect "esphome" { port = 3001; })
|
|
||||||
(proxyProtect "firefly" { port = 80; })
|
(proxyProtect "firefly" { port = 80; })
|
||||||
(blockOf "apispotify" {
|
(blockOf "apispotify" {
|
||||||
port = 3000;
|
port = 3000;
|
||||||
|
|
|
@ -1,16 +1,11 @@
|
||||||
{ config, globals, ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
wireguard.services = {
|
wireguard.services = {
|
||||||
client.via = "nucnix";
|
client.via = "nucnix";
|
||||||
firewallRuleForNode.${globals.services.nginx.host}.allowedTCPPorts = [
|
firewallRuleForNode.nucnix-nginx.allowedTCPPorts = [ config.services.open-webui.port ];
|
||||||
config.services.open-webui.port
|
|
||||||
];
|
|
||||||
firewallRuleForNode.${globals.services.homeassistant.host}.allowedTCPPorts = [
|
|
||||||
config.services.ollama.port
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
services.ollama = {
|
services.ollama = {
|
||||||
host = "0.0.0.0";
|
host = "localhost";
|
||||||
port = 3001;
|
port = 3001;
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
@ -39,8 +34,6 @@
|
||||||
directory = "/var/lib/private/open-webui";
|
directory = "/var/lib/private/open-webui";
|
||||||
mode = "0700";
|
mode = "0700";
|
||||||
}
|
}
|
||||||
];
|
|
||||||
environment.persistence."/renaultft".directories = [
|
|
||||||
{
|
{
|
||||||
directory = "/var/lib/private/ollama";
|
directory = "/var/lib/private/ollama";
|
||||||
mode = "0700";
|
mode = "0700";
|
||||||
|
|
|
@ -33,7 +33,6 @@ in
|
||||||
id = 30;
|
id = 30;
|
||||||
cidrv4 = "10.99.${toString id}.0/24";
|
cidrv4 = "10.99.${toString id}.0/24";
|
||||||
cidrv6 = "fd${toString id}::/64";
|
cidrv6 = "fd${toString id}::/64";
|
||||||
dns = false;
|
|
||||||
};
|
};
|
||||||
iot = rec {
|
iot = rec {
|
||||||
id = 40;
|
id = 40;
|
||||||
|
@ -152,10 +151,6 @@ in
|
||||||
domain = "hs.${globals.domains.web}";
|
domain = "hs.${globals.domains.web}";
|
||||||
host = "elisabeth-homeassistant";
|
host = "elisabeth-homeassistant";
|
||||||
};
|
};
|
||||||
esphome = {
|
|
||||||
domain = "esp.${globals.domains.web}";
|
|
||||||
host = "elisabeth-homeassistant";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,9 +115,7 @@
|
||||||
// mkContainer "oauth2-proxy" { }
|
// mkContainer "oauth2-proxy" { }
|
||||||
// mkContainer "vaultwarden" { }
|
// mkContainer "vaultwarden" { }
|
||||||
// mkContainer "ddclient" { }
|
// mkContainer "ddclient" { }
|
||||||
// mkContainer "ollama" {
|
// mkContainer "ollama" { }
|
||||||
enableRenaultFT = true;
|
|
||||||
}
|
|
||||||
// mkContainer "murmur" { }
|
// mkContainer "murmur" { }
|
||||||
// mkContainer "homebox" { }
|
// mkContainer "homebox" { }
|
||||||
// mkContainer "invidious" { }
|
// mkContainer "invidious" { }
|
||||||
|
|
Binary file not shown.
|
@ -39,23 +39,24 @@ in
|
||||||
id,
|
id,
|
||||||
cidrv4,
|
cidrv4,
|
||||||
internet,
|
internet,
|
||||||
dns,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
rec {
|
rec {
|
||||||
inherit id;
|
inherit id;
|
||||||
interface = "lan-${name}";
|
interface = "lan-${name}";
|
||||||
subnet = cidrv4;
|
subnet = "10.99.${toString id}.0/24";
|
||||||
pools = [
|
pools = [
|
||||||
{
|
{
|
||||||
pool = "${net.cidr.host 50 subnet} - ${net.cidr.host (-6) subnet}";
|
pool = "${net.cidr.host 50 subnet} - ${net.cidr.host (-6) subnet}";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
option-data =
|
option-data =
|
||||||
lib.optional dns {
|
[
|
||||||
|
{
|
||||||
name = "domain-name-servers";
|
name = "domain-name-servers";
|
||||||
data = "${net.cidr.host globals.services.adguardhome.ip globals.net.vlans.services.cidrv4}";
|
data = "${net.cidr.host globals.services.adguardhome.ip globals.net.vlans.services.cidrv4}";
|
||||||
}
|
}
|
||||||
|
]
|
||||||
++ lib.optional internet {
|
++ lib.optional internet {
|
||||||
name = "routers";
|
name = "routers";
|
||||||
data = "${net.cidr.host 1 subnet}";
|
data = "${net.cidr.host 1 subnet}";
|
||||||
|
@ -76,11 +77,6 @@ in
|
||||||
hw-address = "48:9e:bd:5c:31:ac";
|
hw-address = "48:9e:bd:5c:31:ac";
|
||||||
ip-address = net.cidr.host 32 subnet;
|
ip-address = net.cidr.host 32 subnet;
|
||||||
}
|
}
|
||||||
{
|
|
||||||
# varta
|
|
||||||
hw-address = "00:0c:c6:06:7a:70";
|
|
||||||
ip-address = net.cidr.host 20 subnet;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -114,11 +114,6 @@ in
|
||||||
default = true;
|
default = true;
|
||||||
description = "Whether this vlan is connected to the internet";
|
description = "Whether this vlan is connected to the internet";
|
||||||
};
|
};
|
||||||
dns = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = vlanNetSubmod.config.internet;
|
|
||||||
description = "Whether this vlan should utilize the internal dns server";
|
|
||||||
};
|
|
||||||
|
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
description = "The name of this VLAN";
|
description = "The name of this VLAN";
|
||||||
|
|
|
@ -9,7 +9,6 @@ _inputs: [
|
||||||
mongodb-bin = prev.callPackage ./mongodb-bin.nix { };
|
mongodb-bin = prev.callPackage ./mongodb-bin.nix { };
|
||||||
disneyplus = prev.callPackage ./disney.nix { };
|
disneyplus = prev.callPackage ./disney.nix { };
|
||||||
awakened-poe-trade = prev.callPackage ./awakened-poe-trade.nix { };
|
awakened-poe-trade = prev.callPackage ./awakened-poe-trade.nix { };
|
||||||
havartastorage = prev.callPackage ./havartastorage.nix { };
|
|
||||||
neovim-clean = prev.neovim-unwrapped.overrideAttrs (
|
neovim-clean = prev.neovim-unwrapped.overrideAttrs (
|
||||||
_neovimFinal: neovimPrev: {
|
_neovimFinal: neovimPrev: {
|
||||||
nativeBuildInputs = (neovimPrev.nativeBuildInputs or [ ]) ++ [ prev.makeWrapper ];
|
nativeBuildInputs = (neovimPrev.nativeBuildInputs or [ ]) ++ [ prev.makeWrapper ];
|
||||||
|
@ -20,11 +19,6 @@ _inputs: [
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
|
|
||||||
(_pythonFinal: _pythonPrev: {
|
|
||||||
vartastorage = prev.callPackage ./pyvartastorage.nix { };
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
path-of-building = prev.path-of-building.overrideAttrs (old: {
|
path-of-building = prev.path-of-building.overrideAttrs (old: {
|
||||||
postFixup =
|
postFixup =
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
fetchFromGitHub,
|
|
||||||
buildHomeAssistantComponent,
|
|
||||||
python3Packages,
|
|
||||||
}:
|
|
||||||
|
|
||||||
buildHomeAssistantComponent rec {
|
|
||||||
owner = "Vip0r";
|
|
||||||
domain = "varta_storage";
|
|
||||||
version = "2025-1-9-unstable";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
inherit owner;
|
|
||||||
repo = "varta_storage";
|
|
||||||
rev = "592cfd8692b24b131cadaa8c6280660fdc262886";
|
|
||||||
hash = "sha256-u5VneR7s3V+NjoTnDYPAO2aJeqpDQwPu5Eko5CZQXTw=";
|
|
||||||
};
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
python3Packages.vartastorage
|
|
||||||
];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Send notifications with ntfy.sh and selfhosted ntfy-servers";
|
|
||||||
homepage = "https://github.com/hbrennhaeuser/homeassistant_integration_ntfy";
|
|
||||||
maintainers = with maintainers; [ koral ];
|
|
||||||
license = licenses.gpl3;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
python3Packages,
|
|
||||||
fetchFromGitHub,
|
|
||||||
}:
|
|
||||||
|
|
||||||
python3Packages.buildPythonPackage rec {
|
|
||||||
pname = "vartastorage";
|
|
||||||
version = "2025.1.9";
|
|
||||||
|
|
||||||
disabled = python3Packages.pythonOlder "3.12";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "Vip0r";
|
|
||||||
repo = "vartastorage";
|
|
||||||
rev = "5e24b25dbafeabceefd513001f3b8b6a598463a1";
|
|
||||||
hash = "sha256-8eZOTQUbv7ing05aIYYJcP3zfLc91plC7QNqM7a3ZZQ=";
|
|
||||||
};
|
|
||||||
|
|
||||||
__darwinAllowLocalNetworking = true;
|
|
||||||
|
|
||||||
build-system = [ ];
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeCheckInputs = [
|
|
||||||
];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Python module to interact with HomeMatic devices";
|
|
||||||
homepage = "https://github.com/SukramJ/hahomematic";
|
|
||||||
changelog = "https://github.com/SukramJ/hahomematic/blob/${src.tag}/changelog.md";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = with maintainers; [
|
|
||||||
dotlambda
|
|
||||||
fab
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue