2023-06-09 02:32:28 +02:00
|
|
|
# --------------------------------------------------
|
|
|
|
# How to use?
|
|
|
|
# * start the icecast
|
|
|
|
# * connect via mixxx to it.
|
|
|
|
# * add the podcast to mpd in the same network
|
|
|
|
# --------------------------------------------------
|
2024-08-29 03:26:04 +02:00
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}:
|
2023-06-09 02:32:28 +02:00
|
|
|
with lib;
|
|
|
|
|
|
|
|
let
|
|
|
|
# todo : make option
|
|
|
|
user = "username";
|
|
|
|
password = "password";
|
|
|
|
mountPoint = "/radio.mp3";
|
|
|
|
maxListeners = 20;
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
options.components.media.icecast.enable = mkOption {
|
|
|
|
type = lib.types.bool;
|
|
|
|
#default = config.components.media.enable;
|
|
|
|
default = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
config = mkIf (config.components.media.icecast.enable) {
|
|
|
|
|
|
|
|
services.icecast = {
|
|
|
|
enable = true;
|
|
|
|
hostname = config.networking.hostName;
|
|
|
|
admin = {
|
|
|
|
user = "palo";
|
|
|
|
password = "palo";
|
|
|
|
};
|
|
|
|
# http://icecast.org/docs/icecast-2.4.1/config-file.html
|
|
|
|
extraConf = ''
|
|
|
|
<mount type="normal">
|
|
|
|
<mount-name>${mountPoint}</mount-name>
|
|
|
|
<username>${user}</username>
|
|
|
|
<password>${password}</password>
|
|
|
|
<max-listeners>${toString maxListeners}</max-listeners>
|
|
|
|
<max-listener-duration>3600</max-listener-duration>
|
|
|
|
<charset>UTF8</charset>
|
|
|
|
<public>1</public>
|
|
|
|
<stream-name>Palos Awesome Stream</stream-name>
|
|
|
|
<stream-description>Kick ass Tracks</stream-description>
|
|
|
|
<stream-url>https://ingolf-wagner.de</stream-url>
|
|
|
|
<genre>classical</genre>
|
|
|
|
<bitrate>320</bitrate>
|
|
|
|
<type>application/ogg</type>
|
|
|
|
<subtype>vorbis</subtype>
|
|
|
|
<hidden>1</hidden>
|
|
|
|
<burst-size>65536</burst-size>
|
|
|
|
<mp3-metadata-interval>4096</mp3-metadata-interval>
|
|
|
|
</mount>
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
# use port which I can see in iptable -L -v -n
|
|
|
|
networking.firewall = {
|
|
|
|
allowedTCPPorts = [ config.services.icecast.listen.port ];
|
|
|
|
allowedUDPPorts = [ config.services.icecast.listen.port ];
|
|
|
|
};
|
|
|
|
|
|
|
|
# don't want to have the service running all the time
|
|
|
|
# ---------------------------------------------------
|
|
|
|
systemd.services.icecast.wantedBy = lib.mkForce [ ];
|
|
|
|
systemd.services.icecast.after = lib.mkForce [ ];
|
|
|
|
|
|
|
|
};
|
|
|
|
}
|