Skip to content

Commit 84881ae

Browse files
committed
nixos/snapserver: migrate options per snapcast 0.33 changes
1 parent 2e4ce9c commit 84881ae

File tree

2 files changed

+41
-29
lines changed

2 files changed

+41
-29
lines changed

nixos/modules/services/audio/snapserver.nix

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,51 +29,50 @@ let
2929
in
3030
{
3131
imports = [
32-
(mkRenamedOptionModule
33-
[ "services" "snapserver" "controlPort" ]
34-
[ "services" "snapserver" "tcp" "port" ]
35-
)
36-
3732
(mkRenamedOptionModule
3833
[ "services" "snapserver" "listenAddress" ]
39-
[ "services" "snapserver" "settings" "stream" "bind_to_address" ]
34+
[ "services" "snapserver" "settings" "tcp-streaming" "bind_to_address" ]
4035
)
4136
(mkRenamedOptionModule
4237
[ "services" "snapserver" "port" ]
43-
[ "services" "snapserver" "settings" "stream" "port" ]
38+
[ "services" "snapserver" "settings" "tcp-streaming" "port" ]
4439
)
4540
(mkRenamedOptionModule
4641
[ "services" "snapserver" "sampleFormat" ]
47-
[ "services" "snapserver" "settings" "stream" "sampleformat" ]
42+
[ "services" "snapserver" "settings" "tcp-streaming" "sampleformat" ]
4843
)
4944
(mkRenamedOptionModule
5045
[ "services" "snapserver" "codec" ]
51-
[ "services" "snapserver" "settings" "stream" "codec" ]
46+
[ "services" "snapserver" "settings" "tcp-streaming" "codec" ]
5247
)
5348
(mkRenamedOptionModule
5449
[ "services" "snapserver" "streamBuffer" ]
55-
[ "services" "snapserver" "settings" "stream" "chunk_ms" ]
50+
[ "services" "snapserver" "settings" "tcp-streaming" "chunk_ms" ]
5651
)
5752
(mkRenamedOptionModule
5853
[ "services" "snapserver" "buffer" ]
59-
[ "services" "snapserver" "settings" "stream" "buffer" ]
54+
[ "services" "snapserver" "settings" "tcp-streaming" "buffer" ]
6055
)
6156
(mkRenamedOptionModule
6257
[ "services" "snapserver" "send" ]
63-
[ "services" "snapserver" "settings" "stream" "chunk_ms" ]
58+
[ "services" "snapserver" "settings" "tcp-streaming" "chunk_ms" ]
6459
)
6560

61+
(mkRenamedOptionModule
62+
[ "services" "snapserver" "controlPort" ]
63+
[ "services" "snapserver" "settings" "tcp-control" "port" ]
64+
)
6665
(mkRenamedOptionModule
6766
[ "services" "snapserver" "tcp" "enable" ]
68-
[ "services" "snapserver" "settings" "tcp" "enabled" ]
67+
[ "services" "snapserver" "settings" "tcp-control" "enabled" ]
6968
)
7069
(mkRenamedOptionModule
7170
[ "services" "snapserver" "tcp" "listenAddress" ]
72-
[ "services" "snapserver" "settings" "tcp" "bind_to_address" ]
71+
[ "services" "snapserver" "settings" "tcp-control" "bind_to_address" ]
7372
)
7473
(mkRenamedOptionModule
7574
[ "services" "snapserver" "tcp" "port" ]
76-
[ "services" "snapserver" "settings" "tcp" "port" ]
75+
[ "services" "snapserver" "settings" "tcp-control" "port" ]
7776
)
7877

7978
(mkRenamedOptionModule
@@ -121,6 +120,20 @@ in
121120
freeformType = format.type;
122121
options = {
123122
stream = {
123+
source = mkOption {
124+
type = with types; either str (listOf str);
125+
example = "pipe:///tmp/snapfifo?name=default";
126+
description = ''
127+
One or multiple URIs to PCM input streams.
128+
'';
129+
};
130+
};
131+
132+
tcp-streaming = {
133+
enabled = mkEnableOption "streaming via TCP" // {
134+
default = true;
135+
};
136+
124137
bind_to_address = mkOption {
125138
default = "::";
126139
description = ''
@@ -135,17 +148,9 @@ in
135148
Port to listen on for snapclient connections.
136149
'';
137150
};
138-
139-
source = mkOption {
140-
type = with types; either str (listOf str);
141-
example = "pipe:///tmp/snapfifo?name=default";
142-
description = ''
143-
One or multiple URIs to PCM inpuit streams.
144-
'';
145-
};
146151
};
147152

148-
tcp = {
153+
tcp-control = {
149154
enabled = mkEnableOption "the TCP JSON-RPC";
150155

151156
bind_to_address = mkOption {
@@ -245,8 +250,10 @@ in
245250
};
246251

247252
networking.firewall.allowedTCPPorts =
248-
lib.optionals cfg.openFirewall [ cfg.settings.stream.port ]
249-
++ lib.optional (cfg.openFirewall && cfg.settings.tcp.enabled) cfg.settings.tcp.port
253+
lib.optionals (cfg.openFirewall && cfg.settings.tcp-streaming.enabled) [
254+
cfg.settings.tcp-streaming.port
255+
]
256+
++ lib.optional (cfg.openFirewall && cfg.settings.tcp-control.enabled) cfg.settings.tcp-control.port
250257
++ lib.optional (cfg.openFirewall && cfg.settings.http.enabled) cfg.settings.http.port;
251258
};
252259

nixos/tests/snapcast.nix

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ in
2323
enable = true;
2424
settings = {
2525
stream = {
26-
port = port;
2726
source = [
2827
"pipe:///run/snapserver/mpd?name=mpd&mode=create"
2928
"pipe:///run/snapserver/bluetooth?name=bluetooth"
@@ -32,7 +31,11 @@ in
3231
];
3332
buffer = bufferSize;
3433
};
35-
tcp = {
34+
tcp-streaming = {
35+
enabled = true;
36+
port = port;
37+
};
38+
tcp-control = {
3639
enabled = true;
3740
port = tcpPort;
3841
};
@@ -76,14 +79,16 @@ in
7679
)
7780
7881
with subtest("test a ipv6 connection"):
82+
# URI scheme does not support IPv6 literals
83+
# https://github.com/snapcast/snapcast/issues/1472
7984
server.execute("systemd-run --unit=snapcast-local-client snapclient -h ::1 -p ${toString port}")
8085
server.wait_until_succeeds(
8186
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
8287
)
8388
server.wait_until_succeeds("journalctl -o cat -u snapcast-local-client | grep -q 'buffer: ${toString bufferSize}'")
8489
8590
with subtest("test a connection"):
86-
client.execute("systemd-run --unit=snapcast-client snapclient -h server -p ${toString port}")
91+
client.execute("systemd-run --unit=snapcast-client snapclient 'tcp://server:${toString port}'")
8792
server.wait_until_succeeds(
8893
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
8994
)

0 commit comments

Comments
 (0)