"claude. release the files."
This commit is contained in:
@@ -16,10 +16,39 @@
|
||||
modules.helium = settings: {
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
heliumPkg = inputs.heliumFlake.packages.${pkgs.stdenv.hostPlatform.system}.helium;
|
||||
# The upstream `helium` launcher is a plain Nix wrapper that ignores any
|
||||
# *-flags.conf file (that convention is Arch-specific, not NixOS). So to
|
||||
# actually pass command-line flags we re-wrap the launcher here.
|
||||
#
|
||||
# Flag names verified against this Helium build's binary strings.
|
||||
# - AcceleratedVideoDecodeLinuxGL / ...ZeroCopyGL: the VA-API GL decode
|
||||
# path (renamed from the old Vaapi* names, which are no-ops here).
|
||||
# - VaapiOnNvidiaGPUs: required. Chromium disables VA-API on NVIDIA by
|
||||
# default and hard-skips the nvidia-drm device ("Should skip nVidia
|
||||
# device named: nvidia-drm" in the logs); this re-enables it, routing
|
||||
# decode to NVDEC through the nvidia-vaapi-driver bridge.
|
||||
# - VaapiIgnoreDriverChecks: bypass the driver allowlist.
|
||||
# HEVC decode itself needs no runtime flag in this build (enable_platform_hevc
|
||||
# is compiled in and on by default). Wayland-only: the NVIDIA VA-API path
|
||||
# is broken under X11. Upstream considers nvidia-vaapi-driver unsupported,
|
||||
# so confirm via chrome://media-internals (decoder should read VaapiVideoDecoder).
|
||||
helium = pkgs.symlinkJoin {
|
||||
name = "helium-wrapped";
|
||||
paths = [ heliumPkg ];
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/helium \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ pkgs.vulkan-loader ]}" \
|
||||
--add-flags "--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,VaapiOnNvidiaGPUs,VaapiIgnoreDriverChecks" \
|
||||
--add-flags "--ignore-gpu-blocklist" \
|
||||
--add-flags "--disable-gpu-sandbox"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
home.packages = [
|
||||
inputs.heliumFlake.packages.${pkgs.stdenv.hostPlatform.system}.helium
|
||||
];
|
||||
home.packages = [ helium ];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Gives me widevine support. yay
|
||||
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
raspberry-pi-nix.url = "github:cmyk/raspberry-pi-nix";
|
||||
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
|
||||
@@ -13,17 +14,22 @@
|
||||
modules.raspberry-pi = {
|
||||
provides = {
|
||||
"5" = {
|
||||
nixos = {pkgs, ...}: {
|
||||
imports = [
|
||||
inputs.nixos-hardware.nixosModules.raspberry-pi-5
|
||||
];
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-hardware.nixosModules.raspberry-pi-5
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
libraspberrypi
|
||||
];
|
||||
boot.kernelPackages = pkgs.linuxPackages;
|
||||
boot.kernel.sysctl."vm.mmap_rnd_bits" = pkgs.lib.mkForce 16;
|
||||
|
||||
boot.supportedFilesystems.zfs = false;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
libraspberrypi
|
||||
];
|
||||
|
||||
boot.supportedFilesystems.zfs = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3,69 +3,103 @@
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}: {
|
||||
}:
|
||||
{
|
||||
modules.services.provides.rtmp-to-whip = {
|
||||
nixos = {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
systemd.services.init-rtmp-to-whip-network = {
|
||||
description = "Create rtmp-to-whip docker network";
|
||||
after = [ "docker.service" "docker.socket" ];
|
||||
requires = [ "docker.service" "docker.socket" ];
|
||||
before = [ "docker-rtmp-to-whip.service" "docker-rtmp-to-whip-frontend.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
script = ''
|
||||
${pkgs.docker}/bin/docker network inspect rtmp-to-whip >/dev/null 2>&1 || \
|
||||
${pkgs.docker}/bin/docker network create rtmp-to-whip
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers = {
|
||||
rtmp-to-whip = {
|
||||
image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip:latest";
|
||||
ports = [
|
||||
"0.0.0.0:1935:1935" # RTMP ingestion
|
||||
"0.0.0.0:6969:6969/udp" # WebRTC UDP
|
||||
nixos =
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
systemd.services.init-rtmp-to-whip-network = {
|
||||
description = "Create rtmp-to-whip docker network";
|
||||
after = [
|
||||
"docker.service"
|
||||
"docker.socket"
|
||||
];
|
||||
environment = {
|
||||
PUBLIC_DOMAIN = "rtmp.h.doloro.co.uk";
|
||||
RTC_PORT = "6969";
|
||||
SIGNUP_CODE = "";
|
||||
requires = [
|
||||
"docker.service"
|
||||
"docker.socket"
|
||||
];
|
||||
before = [
|
||||
"docker-rtmp-to-whip.service"
|
||||
"docker-rtmp-to-whip-frontend.service"
|
||||
];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
volumes = [
|
||||
"/data/rtmp-to-whip/db.sqlite:/app/db.sqlite"
|
||||
];
|
||||
extraOptions = [ "--network=rtmp-to-whip" ];
|
||||
script = ''
|
||||
${pkgs.docker}/bin/docker network inspect rtmp-to-whip >/dev/null 2>&1 || \
|
||||
${pkgs.docker}/bin/docker network create rtmp-to-whip
|
||||
'';
|
||||
};
|
||||
|
||||
rtmp-to-whip-frontend = {
|
||||
image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip-frontend:latest";
|
||||
ports = [
|
||||
"0.0.0.0:3002:3000"
|
||||
];
|
||||
environment = {
|
||||
VITE_API_URL = "http://rtmp-to-whip:3000";
|
||||
virtualisation.oci-containers.containers = {
|
||||
rtmp-to-whip = {
|
||||
image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip:latest-aarch64";
|
||||
ports = [
|
||||
"0.0.0.0:1935:1935"
|
||||
"0.0.0.0:6969:6969/udp"
|
||||
"127.0.0.1:3001:3000"
|
||||
];
|
||||
environment = {
|
||||
PUBLIC_DOMAIN = "stream.h.doloro.co.uk";
|
||||
RTC_PORT = "6969";
|
||||
SIGNUP_CODE = "mreowmreow-pawsatyou";
|
||||
RUST_LOG = "info,warn";
|
||||
};
|
||||
volumes = [
|
||||
"/data/rtmp-to-whip/db:/db"
|
||||
];
|
||||
extraOptions = [ "--network=rtmp-to-whip" ];
|
||||
};
|
||||
extraOptions = [ "--network=rtmp-to-whip" ];
|
||||
|
||||
rtmp-to-whip-frontend = {
|
||||
image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip-frontend:latest-aarch64";
|
||||
ports = [
|
||||
"127.0.0.1:3002:3000"
|
||||
];
|
||||
environment = {
|
||||
VITE_API_URL = "https://stream.h.doloro.co.uk/api";
|
||||
};
|
||||
extraOptions = [ "--network=rtmp-to-whip" ];
|
||||
};
|
||||
|
||||
rtmp-to-whip-watchtower = {
|
||||
image = "ghcr.io/nicholas-fedor/watchtower:latest";
|
||||
volumes = [
|
||||
"/var/run/docker.sock:/var/run/docker.sock"
|
||||
];
|
||||
environment = {
|
||||
WATCHTOWER_CLEANUP = "true";
|
||||
WATCHTOWER_POLL_INTERVAL = "300";
|
||||
};
|
||||
cmd = [
|
||||
"rtmp-to-whip"
|
||||
"rtmp-to-whip-frontend"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 1935 ];
|
||||
allowedUDPPorts = [ 6969 ];
|
||||
};
|
||||
|
||||
services.caddy = pkgs.lib.mkIf config.services.caddy.enable {
|
||||
virtualHosts."stream.h.doloro.co.uk".extraConfig = ''
|
||||
handle /api* {
|
||||
reverse_proxy :3001
|
||||
}
|
||||
handle {
|
||||
reverse_proxy :3002
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 1935 ];
|
||||
allowedUDPPorts = [ 6969 ];
|
||||
};
|
||||
|
||||
services.caddy = pkgs.lib.mkIf config.services.caddy.enable {
|
||||
virtualHosts."stream.h.doloro.co.uk".extraConfig = ''
|
||||
reverse_proxy :3002
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user