{ pkgs, lib, config, ... }:
{
  config = lib.mkIf config.services.icecast.enable {
    services.liquidsoap.streams = {
      jimbops = pkgs.writeText "jimbops" ''
        settings.log.stdout.set(true)
        settings.init.allow_root.set(true)
        settings.scheduler.fast_queues.set(2)
        
        jimbops = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/export/KittyNFS/Music/JimBops"))
        jimbops_fallback = fallback([jimbops, jimbops])
        
        output.icecast(
          %ffmpeg(format="ogg", %audio(codec="libvorbis", samplerate=48000, b="256k", channels=2)),
          host="127.0.0.1",
          port=${toString config.services.icecast.listen.port},
          password="${config.secrets.castSourcePass}",
          encoding = "UTF-8",

          name="JimBops Radio",
          genre="Anything",
          description="Music gathered by me, Jimbo.",
          mount="jimbops.opus",
          icy_metadata=["artist", "title"],
          public=true,

          jimbops_fallback
        )
      '';
    };

    # Avoid the most stupid error imaginable
    systemd.services.jimbops = {
      after = [ "network-online.target" ];
      wants = [ "network-online.target" ];
    };
  };
}