hosts/hosts/mpd.nix

64 lines
2 KiB
Nix

{ config, pkgs, ... }:
let
httpStreamPort = 8000;
in
{
services.mpd = {
enable = true;
musicDirectory = "/data/music/flac";
playlistDirectory = "/data/music/playlists";
network.listenAddress = "any";
extraConfig = ''
audio_output {
type "pulse"
name "Local Music Player Daemon"
server "127.0.0.1"
mixer_type "software"
}
audio_output {
type "fifo"
name "fft"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
audio_output {
type "httpd"
name "HTTP-Stream (Port 8000)"
encoder "vorbis" # optional
bind_to_address "0.0.0.0"
port "${toString httpStreamPort}"
# quality "5.0" # do not define if bitrate is defined
bitrate "128" # do not define if quality is defined
format "48000:16:1"
always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped.
tags "yes" # httpd supports sending tags to listening streams.
}
'';
};
hardware.pulseaudio = {
enable = true;
systemWide = true;
tcp.enable = true;
tcp.anonymousClients.allowedIpRanges = [ "127.0.0.1" ];
};
users.extraGroups.pulse-access = {
members = [ "mpd" ];
};
# users.extraGroups.music = {
# members = [ "mpd" ];
# };
# Workaround https://github.com/NixOS/nixpkgs/issues/114399
system.activationScripts.fix-pulse-permissions = ''
chmod 755 /run/pulse
'';
environment.systemPackages = with pkgs; [ mpc-cli ];
networking.firewall.allowedTCPPorts = [ config.services.mpd.network.port httpStreamPort ];
}