diff --git a/modules/element-calling.nix b/modules/element-calling.nix index 4ea502b..014b941 100755 --- a/modules/element-calling.nix +++ b/modules/element-calling.nix @@ -34,8 +34,8 @@ lib.mkIf config.sovran_systemsOS.features.element-calling { }; ####### ENSURE SERVICES START AFTER KEY EXISTS ####### - systemd.services.livekit.after = [ "livekit-key-setup.service" ]; - systemd.services.livekit.wants = [ "livekit-key-setup.service" ]; + systemd.services.livekit.after = [ "livekit-key-setup.service" "livekit-turn-setup.service" ]; + systemd.services.livekit.wants = [ "livekit-key-setup.service" "livekit-turn-setup.service" ]; systemd.services.lk-jwt-service.after = [ "livekit-key-setup.service" ]; systemd.services.lk-jwt-service.wants = [ "livekit-key-setup.service" ]; @@ -89,11 +89,17 @@ EOF ''; }; - ####### LIVEKIT RUNTIME CONFIG ####### - systemd.services.livekit-runtime-config = { - description = "Generate LiveKit runtime config from domain files"; + ####### LIVEKIT TURN SETUP (runtime cert + config) ####### + # Replaces the old dead livekit-runtime-config.service. At runtime this: + # * reads the matrix domain from /var/lib/domains/matrix (never hardcoded) + # * copies Caddy's already-issued matrix cert/key into /var/lib/livekit + # so LoadCredential can stage them for the (DynamicUser) livekit unit + # * writes a complete LiveKit config (with turn.domain substituted) that the + # overridden ExecStart loads. + systemd.services.livekit-turn-setup = { + description = "Stage TURN cert and generate LiveKit runtime config from domain files"; + after = [ "caddy.service" "livekit-key-setup.service" ]; before = [ "livekit.service" ]; - after = [ "livekit-key-setup.service" ]; requiredBy = [ "livekit.service" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { @@ -103,20 +109,42 @@ EOF unitConfig = { ConditionPathExists = "/var/lib/domains/element-calling"; }; - path = [ pkgs.coreutils ]; + path = [ pkgs.coreutils pkgs.findutils ]; script = '' MATRIX=$(cat /var/lib/domains/matrix) mkdir -p /run/livekit - cat > /run/livekit/runtime-config.yaml < /run/livekit/livekit.yaml <