nix-infra/modules/services/audio/librespot.nix
julian c9310374af Move audio configuration into a service module
- Move audio configuration into a service module to make it easily
  usable by multiple hosts.
- Allow configuration of AirPlay 2 name.
- Don't set MQTT topic of Shairport-Sync (AirPlay 2) explictly. Defaults
  to hostname now.
- Don't set sound.enable anymore, since its not needed.
2023-11-02 21:57:08 +01:00

42 lines
1.1 KiB
Nix

# Sources for this configuration:
# - https://github.com/librespot-org/librespot
# - https://github.com/librespot-org/librespot/wiki/Options
# - https://github.com/librespot-org/librespot/wiki/Audio-Backends
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.ccchh.services.audio;
in
{
config = mkIf cfg.enable {
systemd.services.spotify-connect-receiver = {
enable = true;
description = "Spotify Connect Receiver Using librespot";
unitConfig = {
Requires = [ "network-online.target" "pipewire.service" ];
After = [ "network-online.target" "pipewire.service" ];
};
serviceConfig = {
ExecStart = "${pkgs.librespot}/bin/librespot --name '${config.ccchh.services.audio.name}' --device-type speaker --bitrate 320 --enable-volume-normalisation --disable-audio-cache --disable-credential-cache --quiet";
User = "librespot";
Group = "librespot";
};
wantedBy = [ "multi-user.target" ];
};
users = {
users.librespot = {
isSystemUser = true;
group = "librespot";
extraGroups = [ "pipewire" ];
};
groups.librespot = { };
};
};
}