Compare commits
20 Commits
ce0797b73b
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9e7775afc | ||
|
|
424f12f5f7 | ||
|
|
7ca8362d39 | ||
|
|
f54977fe42 | ||
|
|
1b05194939 | ||
|
|
4e31a9f54a | ||
|
|
7cd78511e7 | ||
|
|
88d100dd77 | ||
|
|
775e3e93bb | ||
|
|
bfec529d88 | ||
|
|
2afcbf6d99 | ||
|
|
2cd45ef7de | ||
|
|
4d743836ca | ||
|
|
9a6dda390b | ||
|
|
dcd998830c | ||
|
|
57bcf4d33c | ||
|
|
7cc516a0be | ||
|
|
37143eff2d | ||
|
|
c3edd3c9fa | ||
|
|
775b0b4823 |
104
flake.lock
generated
104
flake.lock
generated
@@ -1,27 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"arion": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"haskell-flake": "haskell-flake",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1770259557,
|
|
||||||
"narHash": "sha256-EvZ09k9+mzXAngPzU2K7oLLUDlKoT1numb4bDb3Gtl4=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "arion",
|
|
||||||
"rev": "9b24cf65c72cb0e9616e437d55e1ac8e5c6bc715",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "arion",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-schemes": {
|
"base16-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -45,11 +23,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777780666,
|
"lastModified": 1779036909,
|
||||||
"narHash": "sha256-8wURyQMdDkGUarSTKOGdCuFfYiwa3HbzwscUfn3STDE=",
|
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "8c62fba0854ba15c8917aed18894dbccb48a3777",
|
"rev": "56c666e108467d87d13508936aade6d567f2a501",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -60,27 +38,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"arion",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1769996383,
|
|
||||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_2": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nur",
|
"nur",
|
||||||
@@ -103,11 +60,11 @@
|
|||||||
},
|
},
|
||||||
"hardware": {
|
"hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778143761,
|
"lastModified": 1779258371,
|
||||||
"narHash": "sha256-lkesY6x2X2qxlqLM7CT2iM/0rP2JB7fruPN3h8POXmI=",
|
"narHash": "sha256-j1iZsLy6oFApqR1oiDmHhvkwxXqcNi0aoSJj643LuwU=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "3bcaa367d4c550d687a17ac792fd5cda214ee871",
|
"rev": "c97bc4d15bd3473dd095e8e8ba57330ab1943a77",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -116,22 +73,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"haskell-flake": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1675296942,
|
|
||||||
"narHash": "sha256-u1X1sblozi5qYEcLp1hxcyo8FfDHnRUVX3dJ/tW19jY=",
|
|
||||||
"owner": "srid",
|
|
||||||
"repo": "haskell-flake",
|
|
||||||
"rev": "c2cafce9d57bfca41794dc3b99c593155006c71e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "srid",
|
|
||||||
"ref": "0.1.0",
|
|
||||||
"repo": "haskell-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -139,11 +80,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777851538,
|
"lastModified": 1778905220,
|
||||||
"narHash": "sha256-Gp8qwTEYNoy2yvmErVGlvLOQvrtEECCAKbonW7VJef8=",
|
"narHash": "sha256-ox/5IHc8uwy6UTw6N7Shp6uCHIgu/S2PsWeuXsOHSo8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "cc09c0f9b7eaa95c2d9827338a5eb03d32505ca5",
|
"rev": "d1686dc7d36cbd1234cb226ad6ef97e882716acb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -174,11 +115,11 @@
|
|||||||
},
|
},
|
||||||
"nixUnstable": {
|
"nixUnstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778274207,
|
"lastModified": 1779259093,
|
||||||
"narHash": "sha256-I4puXmX1iovcCHZlRmztO3vW0mAbbRvq4F8wgIMQ1MM=",
|
"narHash": "sha256-7DKWmH23hL2eYdkxCKeqj2i+yljTKuU+3Nk1UPHOnxc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b3da656039dc7a6240f27b2ef8cc6a3ef3bccae7",
|
"rev": "d99b013d5d1931ad77fe3912ed218170dec5d9a4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -190,11 +131,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778003029,
|
"lastModified": 1779102034,
|
||||||
"narHash": "sha256-q/nkKLDtHIyLjZpKhWk3cSK5IYsFqtMd6UtXF3ddjgA=",
|
"narHash": "sha256-vZJZjLo513IeI8hjzHFc6TDezUd4uCE2Eq4SNO3DNNg=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0c88e1f2bdb93d5999019e99cb0e61e1fe2af4c5",
|
"rev": "687f05a9184cad4eaf905c48b63649e3a86f5433",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -221,11 +162,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777954456,
|
"lastModified": 1778869304,
|
||||||
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
|
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
|
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -237,15 +178,15 @@
|
|||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778376280,
|
"lastModified": 1779398206,
|
||||||
"narHash": "sha256-pL2F2FF2FN7zWr5o/vG7GiYOSjp+DUNyPIYqNaLQFFs=",
|
"narHash": "sha256-jX+5X7dr4ZLA/LgCZUkKngFsA6MGHBMReOspOiE1mYI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "828688994167eb57628c98fd1d7e1223b079cda1",
|
"rev": "a592294d7840cea33f00c2a9f1efd396710f75af",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -256,7 +197,6 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"arion": "arion",
|
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"hardware": "hardware",
|
"hardware": "hardware",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
allowedTCPPorts =
|
allowedTCPPorts =
|
||||||
(if (config.syscfg.server != false && config.syscfg.server.web) then [ 80 443 22 ] else [ ]) ++
|
(if (config.syscfg.server != false && config.syscfg.server.web) then [ 80 443 22 ] else [ ]) ++
|
||||||
(if (config.syscfg.server != false) then [ 5432 6379 ] else [ ]) ++
|
(if (config.syscfg.server != false) then [ 5432 6379 8181 ] else [ ]) ++
|
||||||
[ ];
|
[ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ in {
|
|||||||
} else {});
|
} else {});
|
||||||
extraLabels = {
|
extraLabels = {
|
||||||
"traefik.http.routers.${containerCfg.subdomain}-login.rule" = "Host(`${containerCfg.subdomain}.${serverCfg.domain}`) && Path(`/user/login`) ";
|
"traefik.http.routers.${containerCfg.subdomain}-login.rule" = "Host(`${containerCfg.subdomain}.${serverCfg.domain}`) && Path(`/user/login`) ";
|
||||||
"traefik.http.routers.${containerCfg.subdomain}-login.middlewares" = if serverCfg.containers?authentik then "authentik" else "";
|
"traefik.http.routers.${containerCfg.subdomain}-login.middlewares" = if (serverCfg.containers?authentik && false) then "authentik" else "";
|
||||||
"traefik.http.routers.${containerCfg.subdomain}-login.priority" = "100";
|
"traefik.http.routers.${containerCfg.subdomain}-login.priority" = "100";
|
||||||
"traefik.http.routers.${containerCfg.subdomain}-login.entrypoints" = "web-secure";
|
"traefik.http.routers.${containerCfg.subdomain}-login.entrypoints" = "web-secure";
|
||||||
"traefik.http.routers.${containerCfg.subdomain}-login.tls" = "true";
|
"traefik.http.routers.${containerCfg.subdomain}-login.tls" = "true";
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
let
|
let
|
||||||
serverCfg = config.syscfg.server;
|
serverCfg = config.syscfg.server;
|
||||||
version = "latest";
|
version = "latest";
|
||||||
|
|
||||||
|
routerName = if containerCfg.subpath != null
|
||||||
|
then "${containerCfg.subdomain}-${lib.strings.sanitizeDerivationName containerCfg.subpath}"
|
||||||
|
else containerCfg.subdomain;
|
||||||
in {
|
in {
|
||||||
|
|
||||||
paths = [{
|
paths = [{
|
||||||
@@ -27,7 +31,7 @@ in {
|
|||||||
AUTOMATED_CONVERSION_OUTPUT_SUBDIR = "SAME_AS_SRC";
|
AUTOMATED_CONVERSION_OUTPUT_SUBDIR = "SAME_AS_SRC";
|
||||||
};
|
};
|
||||||
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
||||||
"traefik.http.routers.${containerCfg.subdomain}.middlewares" = "authentik";
|
"traefik.http.routers.${routerName}.middlewares" = "authentik";
|
||||||
} else {});
|
} else {});
|
||||||
extraOptions = [
|
extraOptions = [
|
||||||
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
||||||
|
|||||||
@@ -19,16 +19,19 @@ in {
|
|||||||
server = builder.mkContainer {
|
server = builder.mkContainer {
|
||||||
subdomain = containerCfg.subdomain;
|
subdomain = containerCfg.subdomain;
|
||||||
image = "influxdata/influxdb3-ui:${version}";
|
image = "influxdata/influxdb3-ui:${version}";
|
||||||
port = 8888;
|
port = 8080;
|
||||||
secret = name;
|
secret = name;
|
||||||
extraEnv = {
|
extraEnv = {
|
||||||
SESSION_SECRET_KEY = "MOVE TO SOPS";
|
SESSION_SECRET_KEY = "7b0024c13ae770000f797c201e2f210b9932a689c04d34de04379faa44e88e97";
|
||||||
DATABASE_URL = "/db/sqlite.db";
|
DATABASE_URL = "/db/sqlite.db";
|
||||||
};
|
};
|
||||||
|
extraOptions = [
|
||||||
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
||||||
|
];
|
||||||
overrides = {
|
overrides = {
|
||||||
cmd = [ "--mode=admin" ];
|
cmd = [ "--mode=admin" ];
|
||||||
volumes = [
|
volumes = [
|
||||||
"${serverCfg.dataPath}/influxdb:/db"
|
"${serverCfg.dataPath}/influxdb:/db:rw"
|
||||||
"${serverCfg.configPath}/influxdb/:/app-root/config:ro"
|
"${serverCfg.configPath}/influxdb/:/app-root/config:ro"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -41,12 +44,14 @@ in {
|
|||||||
|
|
||||||
cat > ${serverCfg.configPath}/influxdb/config.json << 'EOF'
|
cat > ${serverCfg.configPath}/influxdb/config.json << 'EOF'
|
||||||
{
|
{
|
||||||
"DEFAULT_INFLUX_SERVER": "http://${builder.host}:8182",
|
"DEFAULT_INFLUX_SERVER": "http://${builder.host}:8181",
|
||||||
"DEFAULT_INFLUX_DATABASE": "main",
|
"DEFAULT_INFLUX_DATABASE": "main",
|
||||||
"DEFAULT_API_TOKEN": "b27686e85a883437666f61586e084f7deb763958497739479ca48bc913ee90afd1a920332156133c89fb8674cb197ced17706074e6a42fc7ce6b2d54ac6119c9",
|
"DEFAULT_API_TOKEN": "b27686e85a883437666f61586e084f7deb763958497739479ca48bc913ee90afd1a920332156133c89fb8674cb197ced17706074e6a42fc7ce6b2d54ac6119c9",
|
||||||
"DEFAULT_SERVER_NAME": "${serverCfg.domain}"
|
"DEFAULT_SERVER_NAME": "${serverCfg.domain}"
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
chown 1500:1500 ${serverCfg.configPath}/influxdb/config.json
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ in {
|
|||||||
sops = false;
|
sops = false;
|
||||||
db = false;
|
db = false;
|
||||||
paths = [
|
paths = [
|
||||||
{ path="${serverCfg.configPath}/openhab/conf"; owner="9001:9001"; mode = "0755"; }
|
{ path="${serverCfg.configPath}/openhab/conf"; owner="1000:1000"; mode = "0755"; }
|
||||||
{ path="${serverCfg.configPath}/openhab/userdata"; owner="9001:9001"; mode = "0755"; }
|
{ path="${serverCfg.configPath}/openhab/userdata"; owner="1000:1000"; mode = "0755"; }
|
||||||
{ path="${serverCfg.configPath}/openhab/addons"; owner="9001:9001"; mode = "0755"; }
|
{ path="${serverCfg.configPath}/openhab/addons"; owner="1000:1000"; mode = "0755"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
containers = {
|
containers = {
|
||||||
@@ -18,19 +18,23 @@ in {
|
|||||||
image = "openhab/openhab:${version}";
|
image = "openhab/openhab:${version}";
|
||||||
port = 8080;
|
port = 8080;
|
||||||
extraEnv = {
|
extraEnv = {
|
||||||
# USER_ID = "1000";
|
USER_ID = "1000";
|
||||||
# GROUP_ID = "1000";
|
GROUP_ID = "1000";
|
||||||
CRYPTO_POLICY = "unlimited";
|
CRYPTO_POLICY = "unlimited";
|
||||||
OPENHAB_HTTP_PORT = "8080";
|
OPENHAB_HTTP_PORT = "8080";
|
||||||
};
|
};
|
||||||
extraOptions = [
|
extraOptions = [
|
||||||
"--network=host"
|
"--network=host"
|
||||||
|
"--cap-add=NET_ADMIN"
|
||||||
|
"--cap-add=NET_RAW"
|
||||||
|
"--no-healthcheck"
|
||||||
];
|
];
|
||||||
overrides = {
|
overrides = {
|
||||||
volumes = [
|
volumes = [
|
||||||
"${serverCfg.configPath}/openhab/conf:/openhab/conf"
|
"${serverCfg.configPath}/openhab/conf:/openhab/conf"
|
||||||
"${serverCfg.configPath}/openhab/userdata:/openhab/userdata"
|
"${serverCfg.configPath}/openhab/userdata:/openhab/userdata"
|
||||||
"${serverCfg.configPath}/openhab/addons:/opt/openhab/addons"
|
"${serverCfg.configPath}/openhab/addons:/opt/openhab/addons"
|
||||||
|
"/var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:ro"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -38,21 +42,36 @@ in {
|
|||||||
|
|
||||||
setup = {
|
setup = {
|
||||||
trigger = "server";
|
trigger = "server";
|
||||||
|
envFile = [ config.sops.secrets."CUSTOM".path ];
|
||||||
script = pkgs.writeShellScript "setup" ''
|
script = pkgs.writeShellScript "setup" ''
|
||||||
# Pre-generate openHAB directories on the host
|
# Pre-generate openHAB directories on the host
|
||||||
OHAB="${pkgs.podman}/bin/podman --events-backend=none exec openhab-server /openhab/runtime/bin/client -u openhab -p habopen"
|
OHAB="${pkgs.podman}/bin/podman --events-backend=none exec openhab-server /openhab/runtime/bin/client -u openhab -p habopen"
|
||||||
sleep 20
|
sleep 20
|
||||||
exit 0
|
exit 0
|
||||||
|
$OHAB openhab:users add $DEFAULT_ADMIN_USERNAME $DEFAULT_ADMIN_PASSWORD administrator
|
||||||
$OHAB feature:list
|
$OHAB feature:list
|
||||||
#TODO: Install DB (influx, mapdb,...)
|
$OHAB openhab:addons install persistance-mapdb
|
||||||
#TODO: Install! telegram, matter, mqtt, bluetooth, chromecast, PublicTransportSwitzerland, zigbee, OpenMeteoWeatherForecast
|
$OHAB openhab:addons install persistance-influxdb
|
||||||
|
|
||||||
|
$OHAB openhab:addons install ui-basic
|
||||||
|
$OHAB openhab:addons install automation-jsscripting
|
||||||
|
|
||||||
|
$OHAB openhab:addons install binding-telegram
|
||||||
|
$OHAB openhab:addons install binding-matter
|
||||||
|
$OHAB openhab:addons install binding-mqtt
|
||||||
|
$OHAB openhab:addons install binding-bluetooth
|
||||||
|
$OHAB openhab:addons install binding-zigbee
|
||||||
|
$OHAB openhab:addons install binding-chromecast
|
||||||
|
$OHAB openhab:addons install binding-astro
|
||||||
|
$OHAB openhab:addons install binding-meteoblue
|
||||||
|
$OHAB openhab:addons install binding-publictransportswitzerland
|
||||||
|
|
||||||
#IF APPLE DEVICE: HomeKit (siri/apple bridge)
|
#IF APPLE DEVICE: HomeKit (siri/apple bridge)
|
||||||
#IF UBIQUITY NET: Unifi + UnifiProtect (net/cam bridge)
|
#IF UBIQUITY NET: Unifi + UnifiProtect (net/cam bridge)
|
||||||
#IF YAMAHA+EPSON: EpsonProjector + Yamaha (projector and sound)
|
#IF YAMAHA+EPSON: EpsonProjector + Yamaha (projector and sound)
|
||||||
#IF BAMBULAB DEVICE: BambuLab (notify print state)
|
#IF BAMBULAB DEVICE: BambuLab (notify print state)
|
||||||
#IF GARDENA DEVICE: Gardena (smart watering)
|
#IF GARDENA DEVICE: Gardena (smart watering)
|
||||||
#IF AndroidTV/Jellyfin: Bind with lights + more
|
#Extra: AndroidTV/Jellyfin (Bind with lights + more)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -60,6 +60,9 @@ in
|
|||||||
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
||||||
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
||||||
];
|
];
|
||||||
|
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
||||||
|
"traefik.http.routers.${containerCfg.subdomain}-prowlarr.middlewares" = "authentik";
|
||||||
|
} else {});
|
||||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/prowlarr:/config" ];
|
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/prowlarr:/config" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -82,6 +85,9 @@ in
|
|||||||
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
||||||
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
||||||
];
|
];
|
||||||
|
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
||||||
|
"traefik.http.routers.${containerCfg.subdomain}-radarr.middlewares" = "authentik";
|
||||||
|
} else {});
|
||||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/radarr:/config" ];
|
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/radarr:/config" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -104,6 +110,9 @@ in
|
|||||||
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
||||||
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
||||||
];
|
];
|
||||||
|
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
||||||
|
"traefik.http.routers.${containerCfg.subdomain}-sonarr.middlewares" = "authentik";
|
||||||
|
} else {});
|
||||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/sonarr:/config" ];
|
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/sonarr:/config" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -126,6 +135,9 @@ in
|
|||||||
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
||||||
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
"--passwd-entry=root:x:0:0:root:/root:/bin/sh"
|
||||||
];
|
];
|
||||||
|
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
||||||
|
"traefik.http.routers.${containerCfg.subdomain}-lidarr.middlewares" = "authentik";
|
||||||
|
} else {});
|
||||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/lidarr:/config" ];
|
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/lidarr:/config" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -443,7 +455,7 @@ in
|
|||||||
${pkgs.curl}/bin/curl -s -X POST "$RADARR_URL/api/v3/config/naming" \
|
${pkgs.curl}/bin/curl -s -X POST "$RADARR_URL/api/v3/config/naming" \
|
||||||
-H "X-Api-Key: $RADARR__AUTH__APIKEY" -H 'X-Radarr-Client: true' \
|
-H "X-Api-Key: $RADARR__AUTH__APIKEY" -H 'X-Radarr-Client: true' \
|
||||||
-H 'Accept: application/json' -H 'Content-Type: application/json' \
|
-H 'Accept: application/json' -H 'Content-Type: application/json' \
|
||||||
-d '{"renameEpisodes":true,"replaceIllegalCharacters":true,"colonReplacementFormat":4,"customColonReplacementFormat":"","multiEpisodeStyle":5,"standardEpisodeFormat":"{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}","dailyEpisodeFormat":"{Series Title} - {Air-Date} - {Episode Title} {Quality Full}","animeEpisodeFormat":"{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}","seriesFolderFormat":"{Series Title}","seasonFolderFormat":"Season {season}","specialsFolderFormat":"Specials","id":1}'
|
-d '{"renameMovies":true,"replaceIllegalCharacters":true,"colonReplacementFormat":"smart","standardMovieFormat":"{Movie Title} ({Release Year}) {Quality Full}","movieFolderFormat":"{Movie Title} ({Release Year})","id":1}'
|
||||||
|
|
||||||
RADARR_QP=$(${pkgs.curl}/bin/curl -s -X GET "$RADARR_URL/api/v3/qualityprofile" \
|
RADARR_QP=$(${pkgs.curl}/bin/curl -s -X GET "$RADARR_URL/api/v3/qualityprofile" \
|
||||||
-H "X-Api-Key: $RADARR__AUTH__APIKEY" -H 'X-Radarr-Client: true' \
|
-H "X-Api-Key: $RADARR__AUTH__APIKEY" -H 'X-Radarr-Client: true' \
|
||||||
@@ -500,6 +512,17 @@ in
|
|||||||
|
|
||||||
''}
|
''}
|
||||||
|
|
||||||
|
${lib.optionalString (builtins.elem "lidarr" (containerCfg.extra.modules or defaultModules)) ''
|
||||||
|
''}
|
||||||
|
${lib.optionalString (builtins.elem "readarr" (containerCfg.extra.modules or defaultModules)) ''
|
||||||
|
''}
|
||||||
|
${lib.optionalString (builtins.elem "mylarr" (containerCfg.extra.modules or defaultModules)) ''
|
||||||
|
''}
|
||||||
|
${lib.optionalString (builtins.elem "bazarr" (containerCfg.extra.modules or defaultModules)) ''
|
||||||
|
''}
|
||||||
|
${lib.optionalString (builtins.elem "seerr" (containerCfg.extra.modules or defaultModules)) ''
|
||||||
|
''}
|
||||||
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ in {
|
|||||||
INFLUXDB3_OBJECT_STORE = "file";
|
INFLUXDB3_OBJECT_STORE = "file";
|
||||||
INFLUXDB3_DATA_DIR = "${config.syscfg.server.dataPath}/influxdb";
|
INFLUXDB3_DATA_DIR = "${config.syscfg.server.dataPath}/influxdb";
|
||||||
INFLUXDB3_DB_DIR = "${config.syscfg.server.dataPath}/influxdb";
|
INFLUXDB3_DB_DIR = "${config.syscfg.server.dataPath}/influxdb";
|
||||||
INFLUXDB3_BEARER_TOKEN = "b27686e85a883437666f61586e084f7deb763958497739479ca48bc913ee90afd1a920332156133c89fb8674cb197ced17706074e6a42fc7ce6b2d54ac6119c9";
|
INFLUXDB3_ENABLE_INTERNAL_DB = "true";
|
||||||
|
INFLUXDB3_INITIAL_ADMIN_TOKEN = "b27686e85a883437666f61586e084f7deb763958497739479ca48bc913ee90afd1a920332156133c89fb8674cb197ced17706074e6a42fc7ce6b2d54ac6119c9";
|
||||||
};
|
};
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ UMAMI: ENC[AES256_GCM,data:onB/uXLajaRLmeQMGNHFsjREzPih9ha+cogGRw+nRomERSRrbBv+6
|
|||||||
IMMICH: ENC[AES256_GCM,data:1y78yeawkRjUXLWPyFdMB5HCDQhb1PoxEMfHmKSZfv0CWloOrQWT735dlH+W9yC6ljZjqVD9Fwq/9GqqKQMTFMCpr8wVRwSHEuqmaG3UgKzbLA3aWZ1SIB0AiJi+eUunzHj2vikUJx9dMRjC+iNXrsVWh2HqMrOyFCWetZoIfxNiAgsgNKPgYYsHLv6OAZs9XT7V3veqe0zc0nyw7ghWSXne/yNhQESyyGlMAdagrJRNimvXIp/AoAUKl2WUJm2MBl7lb6K1YeJ1XW8OjAHzV8isBiUwU8ZD81VJog0fgTGjbUa+HO7jEo+9YwmDIMx3f5z9N4A=,iv:pboITW2rr7+w8VNZM6uYMMEFZ1S/JtqjNOVthpYJ2tQ=,tag:0dgrJ191sB4MLJHMoQBlCg==,type:str]
|
IMMICH: ENC[AES256_GCM,data:1y78yeawkRjUXLWPyFdMB5HCDQhb1PoxEMfHmKSZfv0CWloOrQWT735dlH+W9yC6ljZjqVD9Fwq/9GqqKQMTFMCpr8wVRwSHEuqmaG3UgKzbLA3aWZ1SIB0AiJi+eUunzHj2vikUJx9dMRjC+iNXrsVWh2HqMrOyFCWetZoIfxNiAgsgNKPgYYsHLv6OAZs9XT7V3veqe0zc0nyw7ghWSXne/yNhQESyyGlMAdagrJRNimvXIp/AoAUKl2WUJm2MBl7lb6K1YeJ1XW8OjAHzV8isBiUwU8ZD81VJog0fgTGjbUa+HO7jEo+9YwmDIMx3f5z9N4A=,iv:pboITW2rr7+w8VNZM6uYMMEFZ1S/JtqjNOVthpYJ2tQ=,tag:0dgrJ191sB4MLJHMoQBlCg==,type:str]
|
||||||
INVIDIOUS: ENC[AES256_GCM,data:ZfgU5UFMmG9Cx9UaR0xnKr9VPebG3kut0difTFZmoqOSs+stG6YJfV82OOhj1RQLVJlPr/scydYy1+3LytwvP1BT7tLe0jII7XupbkL0w3n79KBaiIzAPdicqLxeqjKH45I0NjHra4djdnO2Ff4T8CTiFDlPn1rMuiw=,iv:UaDmOKJ4bFPGCaIePLXkWot9E6sTu2nhaVs83sI38G0=,tag:spTjxWEmLfPc8BZl2GglBA==,type:str]
|
INVIDIOUS: ENC[AES256_GCM,data:ZfgU5UFMmG9Cx9UaR0xnKr9VPebG3kut0difTFZmoqOSs+stG6YJfV82OOhj1RQLVJlPr/scydYy1+3LytwvP1BT7tLe0jII7XupbkL0w3n79KBaiIzAPdicqLxeqjKH45I0NjHra4djdnO2Ff4T8CTiFDlPn1rMuiw=,iv:UaDmOKJ4bFPGCaIePLXkWot9E6sTu2nhaVs83sI38G0=,tag:spTjxWEmLfPc8BZl2GglBA==,type:str]
|
||||||
SERVARR: ENC[AES256_GCM,data:757WdthmToCGr2boph7iW1ycs3tQyGgD3lhYOcX/X3hjs9dLLPCWGI2zt5axp72IGJ/sVYEop2rqsRLxdPn3VIyQLvQ+3MYdo8Z/yOuMy7DAlnITQQQUI2ylZKHVmFAt39/xBpwsVjh3m/hBQvn/LbCDtR2s4qa+8fQDfeZXksTtnf7YZbVygTF7jWZ+0oVvkvNO1ZUejvP+uHL+jHwgMEwQnR22hOYWEKZ1s7PI+EZHujqyOhnwXB4jRG+XD7R4N6AhC5Z+nmkFpy3ffszCJ0/H,iv:NrNbkL6GWN4r+uzxNYrhoECD1APbRsRBcMBbVHD3DwM=,tag:YK1O50wV+lHAQa6TX9huUw==,type:str]
|
SERVARR: ENC[AES256_GCM,data:757WdthmToCGr2boph7iW1ycs3tQyGgD3lhYOcX/X3hjs9dLLPCWGI2zt5axp72IGJ/sVYEop2rqsRLxdPn3VIyQLvQ+3MYdo8Z/yOuMy7DAlnITQQQUI2ylZKHVmFAt39/xBpwsVjh3m/hBQvn/LbCDtR2s4qa+8fQDfeZXksTtnf7YZbVygTF7jWZ+0oVvkvNO1ZUejvP+uHL+jHwgMEwQnR22hOYWEKZ1s7PI+EZHujqyOhnwXB4jRG+XD7R4N6AhC5Z+nmkFpy3ffszCJ0/H,iv:NrNbkL6GWN4r+uzxNYrhoECD1APbRsRBcMBbVHD3DwM=,tag:YK1O50wV+lHAQa6TX9huUw==,type:str]
|
||||||
|
INFLUX: ENC[AES256_GCM,data:woaZ/8zWRFtuO6U3HQ==,iv:iLo33tykE6oQW2jUNVGtR/JwrZbs9Fe1fFQ5/LnvaRY=,tag:6UDOU0JJgR7eyQ0hL8j5Qw==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1sxzuhh2fcd4pmaz4mdqq95t683d32ft22w9t2r7pk258u0s8wymsqdj7lg
|
- recipient: age1sxzuhh2fcd4pmaz4mdqq95t683d32ft22w9t2r7pk258u0s8wymsqdj7lg
|
||||||
@@ -31,8 +32,8 @@ sops:
|
|||||||
S1NaTVFTL0FCdm1EQmRsUnlhclZNZlEKEgIe60qkvY8+UocjQU+WM2dTL/1y3Kqk
|
S1NaTVFTL0FCdm1EQmRsUnlhclZNZlEKEgIe60qkvY8+UocjQU+WM2dTL/1y3Kqk
|
||||||
d4RrlLP9NSozwVsPYI4ntygvMSApbT4v0YvoO7gV90lkGWEvW1YDfA==
|
d4RrlLP9NSozwVsPYI4ntygvMSApbT4v0YvoO7gV90lkGWEvW1YDfA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-05-20T18:41:59Z"
|
lastmodified: "2026-05-21T21:42:55Z"
|
||||||
mac: ENC[AES256_GCM,data:R3Lb1qt6xAKDFt8wKF8/TyFjdUBOI4U07YFB9sozcPqxZz79mAXA6WNLk6Mo0Rov89n668qzGY/UZJKS3R1CGgmytvthTdSteffCbsyqfg0E0OiwN6sij6lPykEYdiXNb0xxdeOrMDmod3Q1Evubo37MAhVwmfs0lcpEqdfRWlM=,iv:ic1J46oR6gmcUUElG04lcoElmIHCwsz/UD3gAcv5CC8=,tag:Ja2cNPJrIxtOzIqbXSshDg==,type:str]
|
mac: ENC[AES256_GCM,data:6FCnBXQ1ueiNECTZDo2AGw8CXCimGWKXQYbI+4in0tCfI477Ip9OISwodK4cFhZPKEYFOB4z5KU5vXJ014jErYDylaPlHYj7Bj/4ugkYt/ywDg3VEYZVVZfBI7bhe1x8/kbkg+Y6ZwURf74xPyg7X+7IH5VGQA4eKck5rTPwGZQ=,iv:04MI9S51azQLEvDtbxL0cf6NUNtV4hRALBcsMmrAFKg=,tag:5oxAZwCfWmatWnghZ97W6g==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-05-05T23:46:27Z"
|
- created_at: "2026-05-05T23:46:27Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
|
|||||||
@@ -53,9 +53,9 @@
|
|||||||
# ===== DEV =====
|
# ===== DEV =====
|
||||||
gitea.subdomain = "git";
|
gitea.subdomain = "git";
|
||||||
# ===== HOME =====
|
# ===== HOME =====
|
||||||
# openhab.subdomain = "hab";
|
openhab.subdomain = "hab";
|
||||||
# trmnl = { subdomain = "hass"; subpath = "trmnl"; };
|
# trmnl = { subdomain = "hass"; subpath = "trmnl"; };
|
||||||
# influx.subdomain = "metrum";
|
influx.subdomain = "metrum";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user