{ config, containerCfg, pkgs, lib, builder, name,... }: let serverCfg = config.syscfg.server; version = "5.1.4"; in { sops = false; db = false; paths = [ { path="${serverCfg.configPath}/openhab/conf"; owner="9001:9001"; mode = "0755"; } { path="${serverCfg.configPath}/openhab/userdata"; owner="9001:9001"; mode = "0755"; } { path="${serverCfg.configPath}/openhab/addons"; owner="9001:9001"; mode = "0755"; } ]; containers = { server = builder.mkContainer { subdomain = containerCfg.subdomain; image = "openhab/openhab:${version}"; port = 8080; extraEnv = { # USER_ID = "1000"; # GROUP_ID = "1000"; # CRYPTO_POLICY = "unlimited"; OPENHAB_HTTP_PORT = "8080"; }; extraOptions = [ # "--network=host" ]; overrides = { volumes = [ "${serverCfg.configPath}/openhab/conf:/openhab/conf" "${serverCfg.configPath}/openhab/userdata:/openhab/userdata" "${serverCfg.configPath}/openhab/addons:/opt/openhab/addons" ]; }; }; }; setup = { trigger = "server"; script = pkgs.writeShellScript "setup" '' # 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" sleep 20 exit 0 $OHAB feature:list #TODO: Install DB (influx, mapdb,...) #TODO: Install! telegram, matter, mqtt, bluetooth, chromecast, PublicTransportSwitzerland, zigbee, OpenMeteoWeatherForecast #IF APPLE DEVICE: HomeKit (siri/apple bridge) #IF UBIQUITY NET: Unifi + UnifiProtect (net/cam bridge) #IF YAMAHA+EPSON: EpsonProjector + Yamaha (projector and sound) #IF BAMBULAB DEVICE: BambuLab (notify print state) #IF GARDENA DEVICE: Gardena (smart watering) #IF AndroidTV/Jellyfin: Bind with lights + more ''; }; }