{ lib, config, ... }: with lib; { options = { mediamtx = { enable = mkEnableOption "enables mediamtx"; host = mkOption { type = types.str; default = "0.0.0.0"; description = "The host address to bind RTSP on."; }; rtspPort = mkOption { type = types.int; default = 8554; description = "RTSP port exposed by MediaMTX."; }; }; }; config = mkMerge [ (mkIf config.mediamtx.enable { virtualisation.podman.enable = true; virtualisation.oci-containers = { backend = "podman"; containers = { mediamtx = { image = "bluenviron/mediamtx:latest"; ports = [ "${config.mediamtx.host}:${toString config.mediamtx.rtspPort}:8554" ]; }; }; }; networking.firewall.allowedTCPPorts = [ config.mediamtx.rtspPort ]; }) ]; }