Files
2026-05-14 13:39:10 +02:00

69 lines
1.6 KiB
Nix

{ pkgs, config, ... }:
{
services.nginx = {
enable = true;
additionalModules = [ pkgs.nginxModules.rtmp ];
appendConfig = ''
rtmp {
server {
listen 1935;
chunk_size 1024;
application stream {
live on;
meta copy;
hls on;
hls_path /var/www/html/stream/hls;
hls_playlist_length 10s;
hls_fragment 1s;
dash on;
dash_path /var/www/html/stream/dash;
allow publish all;
allow play all;
on_publish http://127.0.0.1:8000/publish;
on_publish_done http://127.0.0.1:8000/unpublish;
}
}
}
'';
virtualHosts."main" = {
listen = [ {addr = "0.0.0.0"; port = 80; } ];
locations = {
"/" = {
root = ./html;
index = "index.html";
};
# "/rtmp_stat" = {
# rtmp_stat = "all";
# rtmp_stat_stylesheet = "/stat.xsl";
# };
"/hls" = {
# types = {
# "application/vnd.apple.mpegurl" = "m3u8";
# "video/mp2t" = "ts";
# };
root = "/tmp";
};
"/dash" = {
root = "/tmp";
};
"/watch" = {
root = "/usr/local/nginx/html";
# try_files = "$uri /watch/index.html";
};
# # some issue with the go server not handeling this well even with prefix (in config.toml) set correctly
# "/auth" = {
# basicAuth.admin = "123g";
# proxyPass = "http://localhost:${toString config.services.rtmp-auth.frontendPort}/auth";
# };
};
};
};
systemd.tmpfiles.rules = [
"d /var/www/html/stream/hls 0755 ${config.services.nginx.user} ${config.services.nginx.user} - -"
"d /var/www/html/stream/dash 0755 ${config.services.nginx.user} ${config.services.nginx.user} - -"
];
}