1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00
Files
niveum/configs/meddl.nix

62 lines
1.5 KiB
Nix

{ pkgs, config, ... }:
let
meddlPort = 8000;
in
{
containers.meddl = {
autoStart = true;
config = {config, pkgs, ...}: {
environment.systemPackages = [ pkgs.mpc_cli ];
systemd.services.meddl = {
before = [ "mpd.service" ];
wantedBy = [ "mpd.service" ];
startAt = "*:00/10";
script = ''
set -efu
host=http://antenne-asb.ga
prepend_host() {
sed "s#^#$host/#"
}
${pkgs.curl}/bin/curl -sSL "$host" \
| ${pkgs.pup}/bin/pup 'li a attr{href}' \
| prepend_host \
| while read -r song; do
song_url="$(${pkgs.curl}/bin/curl -sSL "$song" \
| ${pkgs.pup}/bin/pup 'audio source attr{src}' \
| prepend_host
)"
${pkgs.mpc_cli}/bin/mpc add "$song_url"
done
${pkgs.mpc_cli}/bin/mpc play
'';
};
services.mpd = {
enable = true;
extraConfig = ''
log_level "default"
volume_normalization "yes"
audio_output {
name "DrachenLord Radio"
type "httpd"
encoder "vorbis"
port "${toString meddlPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
services.nginx.virtualHosts."radio.xn--kiern-0qa.de".locations = {
"= /meddl.ogg".proxyPass = "http://127.0.0.1:${toString meddlPort}";
};
}