|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
{ config, lib, pkgs, ... }: |
|
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
|
|
with lib; |
|
|
|
|
|
|
|
|
@ -101,6 +101,8 @@ in { |
|
|
|
|
|
|
|
|
|
openFirewall = mkOption { |
|
|
|
|
type = types.bool; |
|
|
|
|
# Make the behavior consistent with other services. Set the default to |
|
|
|
|
# false and remove the accompanying warning after NixOS 22.05 is released. |
|
|
|
|
default = true; |
|
|
|
|
description = '' |
|
|
|
|
Whether to automatically open the specified ports in the firewall. |
|
|
|
@ -273,10 +275,16 @@ in { |
|
|
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
|
|
|
|
|
|
# https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85 |
|
|
|
|
warnings = filter (w: w != "") (mapAttrsToList (k: v: if v.type == "spotify" then '' |
|
|
|
|
services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead. |
|
|
|
|
'' else "") cfg.streams); |
|
|
|
|
warnings = |
|
|
|
|
# https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85 |
|
|
|
|
filter (w: w != "") (mapAttrsToList (k: v: if v.type == "spotify" then '' |
|
|
|
|
services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead. |
|
|
|
|
'' else "") cfg.streams) |
|
|
|
|
# Remove this warning after NixOS 22.05 is released. |
|
|
|
|
++ optional (options.services.snapserver.openFirewall.highestPrio >= (mkOptionDefault null).priority) '' |
|
|
|
|
services.snapserver.openFirewall will no longer default to true starting with NixOS 22.11. |
|
|
|
|
Enable it explicitly if you need to control Snapserver remotely. |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
systemd.services.snapserver = { |
|
|
|
|
after = [ "network.target" ]; |
|
|
|
@ -304,8 +312,8 @@ in { |
|
|
|
|
|
|
|
|
|
networking.firewall.allowedTCPPorts = |
|
|
|
|
optionals cfg.openFirewall [ cfg.port ] |
|
|
|
|
++ optional cfg.tcp.enable cfg.tcp.port |
|
|
|
|
++ optional cfg.http.enable cfg.http.port; |
|
|
|
|
++ optional (cfg.openFirewall && cfg.tcp.enable) cfg.tcp.port |
|
|
|
|
++ optional (cfg.openFirewall && cfg.http.enable) cfg.http.port; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
meta = { |
|
|
|
|