From fb15ef954b161d4e58143de72b7e177b946d70e4 Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Sun, 22 Jun 2025 23:03:31 +0100 Subject: [PATCH] hosts/pi: add snapcast --- hosts/pi/default.nix | 1 + hosts/pi/snapcast.nix | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 hosts/pi/snapcast.nix diff --git a/hosts/pi/default.nix b/hosts/pi/default.nix index 5843cfd..232dc9c 100644 --- a/hosts/pi/default.nix +++ b/hosts/pi/default.nix @@ -9,6 +9,7 @@ inputs.nixos-hardware.nixosModules.raspberry-pi-4 ./hardware-configuration.nix ./home-assistant + ./snapcast.nix ../server.nix ]; diff --git a/hosts/pi/snapcast.nix b/hosts/pi/snapcast.nix new file mode 100644 index 0000000..f5725d4 --- /dev/null +++ b/hosts/pi/snapcast.nix @@ -0,0 +1,43 @@ +{ + pkgs, + ... +}: + +{ + # Put all sinks in pipewire group + services.pipewire.systemWide = true; + + services.avahi = { + enable = true; + nssmdns4 = true; + publish = { + enable = true; + domain = true; + addresses = true; + }; + }; + + services.snapserver = { + enable = true; + streams = { + default = { + type = "file"; + location = "/var/lib/snapserver/test.wav"; + sampleFormat = "44100:16:2"; + codec = "flac"; + }; + }; + }; + + systemd.services.snapclient = { + wantedBy = [ "multi-user.target" ]; + after = [ "pipewire.service" ]; + requires = [ "pipewire.service" ]; + description = "Snapcast client"; + serviceConfig = { + ExecStart = "${pkgs.snapcast}/bin/snapclient -h 127.0.0.1 --player pulse --mixer hardware"; + DynamicUser = true; + SupplementaryGroups = [ "pipewire" ]; + }; + }; +}