hosts/skycam: working stream with go2rtc
This commit is contained in:
@ -1,73 +1,16 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
||||
./hardware-configuration.nix
|
||||
../server.nix
|
||||
];
|
||||
|
||||
nixpkgs.hostPlatform = "aarch64-linux";
|
||||
|
||||
hardware = {
|
||||
raspberry-pi."4" = {
|
||||
apply-overlays-dtmerge.enable = true;
|
||||
audio.enable = false;
|
||||
xhci.enable = false;
|
||||
};
|
||||
deviceTree = {
|
||||
enable = true;
|
||||
filter = "*rpi-4-*.dtb";
|
||||
# From https://github.com/Electrostasy/dots/blob/3b81723feece67610a252ce754912f6769f0cd34/hosts/phobos/klipper.nix#L43-L65
|
||||
overlays =
|
||||
let
|
||||
mkCompatibleDtsFile =
|
||||
dtbo:
|
||||
let
|
||||
drv =
|
||||
pkgs.runCommand "fix-dts"
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [
|
||||
dtc
|
||||
gnused
|
||||
];
|
||||
}
|
||||
''
|
||||
mkdir "$out"
|
||||
dtc -I dtb -O dts ${dtbo} | sed -e 's/bcm2835/bcm2711/' > $out/overlay.dts
|
||||
'';
|
||||
in
|
||||
"${drv}/overlay.dts";
|
||||
|
||||
inherit (config.boot.kernelPackages) kernel;
|
||||
in
|
||||
[
|
||||
{
|
||||
name = "imx708.dtbo";
|
||||
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/imx708.dtbo";
|
||||
}
|
||||
{
|
||||
name = "vc4-kms-v3d-pi4.dtbo";
|
||||
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/vc4-kms-v3d-pi4.dtbo";
|
||||
}
|
||||
];
|
||||
};
|
||||
firmware = with pkgs; [
|
||||
firmwareLinuxNonfree
|
||||
];
|
||||
};
|
||||
|
||||
services.udev.extraRules = ''
|
||||
SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660"
|
||||
KERNEL=="vcsm-cma", GROUP="video", MODE="0660"
|
||||
SUBSYSTEM=="dma_heap", GROUP="video", MODE="0660"
|
||||
'';
|
||||
|
||||
networking = {
|
||||
hostId = "731d1660";
|
||||
firewall = {
|
||||
@ -77,27 +20,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.ustreamer = {
|
||||
enable = true;
|
||||
description = "uStreamer service";
|
||||
unitConfig = {
|
||||
Type = "simple";
|
||||
ConditionPathExists = "/sys/bus/i2c/drivers/imx708/10-001a/video4linux";
|
||||
services.go2rtc =
|
||||
let
|
||||
rpicam-vid = "${pkgs.rpicam-apps}/bin/rpicam-vid";
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
settings = {
|
||||
streams.rpicam = "exec:${rpicam-vid} -v1 -t0 -o- --inline --width=4608 --height=2592 --framerate=14 --codec mjpeg --quality 90 --denoise=off --sharpness 1.1";
|
||||
};
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.libcamera}/bin/libcamerify ${pkgs.unstable.ustreamer}/bin/ustreamer \
|
||||
--host=0.0.0.0 \
|
||||
--resolution=4608x2592
|
||||
'';
|
||||
DynamicUser = "yes";
|
||||
SupplementaryGroups = [ "video" ];
|
||||
Restart = "always";
|
||||
RestartSec = 10;
|
||||
};
|
||||
wantedBy = [ "network-online.target" ];
|
||||
confinement.mode = "chroot-only";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
@ -105,8 +37,7 @@
|
||||
libcamera
|
||||
libraspberrypi
|
||||
raspberrypi-eeprom
|
||||
v4l-utils
|
||||
unstable.ustreamer
|
||||
rpicam-apps
|
||||
];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
|
@ -1,18 +1,20 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
||||
(modulesPath + "/installer/sd-card/sd-image-aarch64.nix")
|
||||
];
|
||||
|
||||
boot = {
|
||||
kernelModules = [ "bcm2835-v4l2" ];
|
||||
kernelParams = [
|
||||
"cma=512M"
|
||||
"panic=0"
|
||||
];
|
||||
supportedFilesystems = lib.mkForce [
|
||||
@ -23,6 +25,61 @@
|
||||
tmp.cleanOnBoot = false;
|
||||
};
|
||||
|
||||
hardware = {
|
||||
raspberry-pi."4" = {
|
||||
apply-overlays-dtmerge.enable = true;
|
||||
audio.enable = false;
|
||||
xhci.enable = false;
|
||||
};
|
||||
deviceTree = {
|
||||
enable = true;
|
||||
filter = "*rpi-4-*.dtb";
|
||||
# From https://github.com/Electrostasy/dots/blob/3b81723feece67610a252ce754912f6769f0cd34/hosts/phobos/klipper.nix#L43-L65
|
||||
overlays =
|
||||
let
|
||||
mkCompatibleDtsFile =
|
||||
dtbo:
|
||||
let
|
||||
drv =
|
||||
pkgs.runCommand "fix-dts"
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [
|
||||
dtc
|
||||
gnused
|
||||
];
|
||||
}
|
||||
''
|
||||
mkdir "$out"
|
||||
dtc -I dtb -O dts ${dtbo} | sed -e 's/bcm2835/bcm2711/' > $out/overlay.dts
|
||||
'';
|
||||
in
|
||||
"${drv}/overlay.dts";
|
||||
|
||||
inherit (config.boot.kernelPackages) kernel;
|
||||
in
|
||||
[
|
||||
{
|
||||
name = "imx708.dtbo";
|
||||
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/imx708.dtbo";
|
||||
}
|
||||
{
|
||||
name = "vc4-kms-v3d-pi4.dtbo";
|
||||
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/vc4-kms-v3d-pi4.dtbo";
|
||||
}
|
||||
];
|
||||
};
|
||||
firmware = with pkgs; [
|
||||
firmwareLinuxNonfree
|
||||
];
|
||||
};
|
||||
|
||||
services.udev.extraRules = ''
|
||||
SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660"
|
||||
KERNEL=="vcsm-cma", GROUP="video", MODE="0660"
|
||||
SUBSYSTEM=="dma_heap", GROUP="video", MODE="0660"
|
||||
SUBSYSTEM=="dma_heap", KERNEL=="linux,cma", SYMLINK+="dma_heap/vidbuf_cached", OPTIONS+="link_priority=-50"
|
||||
'';
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: super: {
|
||||
makeModulesClosure = x: super.makeModulesClosure (x // { allowMissing = true; });
|
||||
|
Reference in New Issue
Block a user