This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

configs.gg23.audio: AirPlay 2 via shairport-sync-airplay2 and nqptp

+14 -2
+14 -2
configs/gg23/audio/hub.nix
··· 2 2 # virtual "hub" sink, whose monitor is linked to the ROC sinks of the rooms 3 3 # selected with `audio-room` or from Home Assistant (MQTT). Senders: any LAN 4 4 # machine via ROC (while `gg23-audio` from tools/gg23-audio runs), barnacle 5 - # via AirPlay (shairport-sync). Rooms run ./room.nix. 5 + # via AirPlay 2 (shairport-sync + nqptp). Rooms run ./room.nix. 6 6 { 7 7 self, 8 8 config, ··· 114 114 }; 115 115 }; 116 116 117 + # AirPlay 2: macOS drives classic AirPlay 1 receivers through a legacy path 118 + # that can wedge (endpoint stays half-active after switching outputs, and 119 + # re-picking it fails with -16727 until AirPlayXPCHelper restarts). 117 120 services.shairport-sync = { 118 121 enable = true; 119 - # AirPlay 1: the default package has no AirPlay 2 (no nqptp needed) 122 + package = pkgs.shairport-sync-airplay2; 120 123 settings = { 121 124 general = { 122 125 name = "gg23"; ··· 129 132 }; 130 133 }; 131 134 users.users.shairport.extraGroups = [ "pipewire" ]; 135 + 136 + # PTP timing companion AirPlay 2 needs (UDP 319/320; int0 is trusted, et0 137 + # stays closed). The unit comes from the package. 138 + systemd.packages = [ pkgs.nqptp ]; 139 + systemd.services.nqptp.wantedBy = [ "multi-user.target" ]; 140 + systemd.services.shairport-sync = { 141 + wants = [ "nqptp.service" ]; 142 + after = [ "nqptp.service" ]; 143 + }; 132 144 133 145 # mDNS for AirPlay on the LAN only; int0 is trusted, et0 must stay closed 134 146 services.avahi = {