feat: improve v4l2loopback support

This commit is contained in:
2026-01-25 16:19:09 +01:00
parent b8ed5984df
commit b4a57a8f64
2 changed files with 19 additions and 17 deletions

View File

@@ -46,11 +46,14 @@
mySystem = { mySystem = {
boot = { boot = {
plymouth.enable = true;
kernel = {
cpuVendor = "amd";
v4l2loopback.enable = true;
extraModprobeConfig = '' extraModprobeConfig = ''
options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1 options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
''; '';
plymouth.enable = true; };
kernel.cpuVendor = "amd";
systemd-boot = true; systemd-boot = true;
}; };
desktop = { desktop = {

View File

@@ -8,13 +8,6 @@ with lib; let
cfg = config.mySystem.boot; cfg = config.mySystem.boot;
in { in {
options.mySystem.boot = { options.mySystem.boot = {
extraModprobeConfig = mkOption {
type = types.lines;
default = "";
example = ''
options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
'';
};
kernel = { kernel = {
package = mkOption { package = mkOption {
type = types.raw; type = types.raw;
@@ -29,12 +22,15 @@ in {
type = types.enum ["intel" "amd"]; type = types.enum ["intel" "amd"];
default = "amd"; default = "amd";
}; };
v4l2loopback = mkOption { v4l2loopback.enable = mkEnableOption "Enables v4l2loopback kernel module";
description = "Enables v4l2loopback";
type = types.bool;
default = true;
};
hardened = mkEnableOption "Enables hardened Linux kernel"; hardened = mkEnableOption "Enables hardened Linux kernel";
extraModprobeConfig = mkOption {
type = types.lines;
default = "";
example = ''
options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
'';
};
}; };
systemd-boot = mkOption { systemd-boot = mkOption {
type = types.bool; type = types.bool;
@@ -64,6 +60,10 @@ in {
then "amdgpu" then "amdgpu"
else "i915" else "i915"
); );
extraModprobeConfig =
strings.concatLines
([cfg.kernel.extraModprobeConfig]
++ lists.optional cfg.kernel.v4l2loopback.enable ''options v4l2loopback exclusive_caps=1 devices=1 video_nr=0 card_label="OBS Studio"'');
loader = { loader = {
systemd-boot.enable = cfg.systemd-boot; systemd-boot.enable = cfg.systemd-boot;
efi.canTouchEfiVariables = cfg.systemd-boot; efi.canTouchEfiVariables = cfg.systemd-boot;
@@ -80,7 +80,6 @@ in {
kernelModules = kernelModules =
cfg.kernel.modules cfg.kernel.modules
++ ["kvm-${cfg.kernel.cpuVendor}"] ++ ["kvm-${cfg.kernel.cpuVendor}"]
++ lists.optional cfg.kernel.v4l2loopback "v4l2loopback"
++ lists.optional cfg.kernel.hardened "tcp_bbr"; ++ lists.optional cfg.kernel.hardened "tcp_bbr";
kernel.sysctl = mkIf cfg.kernel.hardened { kernel.sysctl = mkIf cfg.kernel.hardened {
"kernel.sysrq" = 0; # Disable magic SysRq key "kernel.sysrq" = 0; # Disable magic SysRq key