From 4f92e0ad80122588ff589a140e2d931233746349 Mon Sep 17 00:00:00 2001 From: liberodark Date: Mon, 4 May 2026 13:11:35 +0200 Subject: [PATCH 1/2] turn-rs: 4.0.1 -> 4.1.2 --- pkgs/by-name/tu/turn-rs/package.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/tu/turn-rs/package.nix b/pkgs/by-name/tu/turn-rs/package.nix index 33ef996f32d1..8b3a340e3ac1 100644 --- a/pkgs/by-name/tu/turn-rs/package.nix +++ b/pkgs/by-name/tu/turn-rs/package.nix @@ -4,6 +4,7 @@ fetchFromGitHub, # Dependencies protobuf, + coturn, # Tests versionCheckHook, nix-update-script, @@ -12,16 +13,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "turn-rs"; - version = "4.0.1"; + version = "4.1.2"; src = fetchFromGitHub { owner = "mycrl"; repo = "turn-rs"; tag = "v${finalAttrs.version}"; - hash = "sha256-CtDlkHHOkU0mwNiyP9PNw/40szBNKeGYvVep9Z/aoDg="; + hash = "sha256-YZPKcLePLX+Mdu4J31VNofiX/qCLjcxydc4iVhonhkU="; }; - cargoHash = "sha256-x45GDuhxqoB/DZvccdzxBoS/7nnFvHtjkRgfM/LOOE8="; + cargoHash = "sha256-vvhj0B/KYdOeddALh38MvAwrg8sIAIlEzTj0yFNEjFk="; # By default, no features are enabled # https://github.com/mycrl/turn-rs?tab=readme-ov-file#features-1 @@ -31,6 +32,10 @@ rustPlatform.buildRustPackage (finalAttrs: { protobuf ]; + # Fix coturn needed + nativeCheckInputs = [ coturn ]; + env.COTURN_UCLIENT_PATH = lib.getExe' coturn "turnutils_uclient"; + nativeInstallCheckInputs = [ versionCheckHook ]; From 72336f2367bd6a7c0b4ab1ca7968ba81b8358d6b Mon Sep 17 00:00:00 2001 From: liberodark Date: Mon, 4 May 2026 14:05:34 +0200 Subject: [PATCH 2/2] nixos/turn-rs: fix --- nixos/tests/turn-rs.nix | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/nixos/tests/turn-rs.nix b/nixos/tests/turn-rs.nix index 4404a50f52d9..a7237c87cd7b 100644 --- a/nixos/tests/turn-rs.nix +++ b/nixos/tests/turn-rs.nix @@ -23,23 +23,23 @@ USER_1_CREDS="foobar" ''; settings = { - turn = { + server = { realm = "localhost"; interfaces = [ { transport = "udp"; - bind = "127.0.0.1:3478"; + listen = "127.0.0.1:3478"; external = "127.0.0.1:3478"; } { transport = "tcp"; - bind = "127.0.0.1:3478"; + listen = "127.0.0.1:3478"; external = "127.0.0.1:3478"; } ]; }; - auth.static_credentials.user1 = "$USER_1_CREDS"; + auth."static-credentials".user1 = "$USER_1_CREDS"; }; }; }; @@ -47,15 +47,20 @@ testScript = # python '' - import json - start_all() server.wait_for_unit('turn-rs.service') - server.wait_for_open_port(3000, "127.0.0.1") + server.wait_for_open_port(3478, "127.0.0.1") - info = server.succeed('curl http://localhost:3000/info') - jsonInfo = json.loads(info) - assert len(jsonInfo['interfaces']) == 2, f'Interfaces doesn\'t contain two entries:\n{json.dumps(jsonInfo, indent=2)}' + base = ( + "${pkgs.coturn}/bin/turnutils_uclient" + " -L 127.0.0.1 -e 127.0.0.1 -u user1 -w foobar -X -y -t" + ) + for extra in ["", "-s", "-t", "-t -s"]: + out = server.succeed(f"{base} {extra} 127.0.0.1") + assert "ERROR" not in out, f"turnutils_uclient errors:\n{out}" + assert "Total lost packets 0 (0.000000%)" in out, ( + f"turnutils_uclient reported packet loss or did not finish:\n{out}" + ) config = server.succeed('cat /run/turn-rs/config.toml') assert 'foobar' in config, f'Secrets are not properly injected:\n{config}'