57 lines
1.7 KiB
Nix
57 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
namespace,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.${namespace}.apps.recording;
|
|
in
|
|
{
|
|
options = {
|
|
${namespace}.apps.recording.enable = lib.mkEnableOption "Enables video editing tools";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
${namespace}.ui.flatpak.enable = true;
|
|
|
|
services.flatpak.packages = [
|
|
"com.obsproject.Studio"
|
|
"org.kde.kdenlive"
|
|
"org.tenacityaudio.Tenacity"
|
|
"io.github.seadve.Kooha"
|
|
];
|
|
|
|
environment.systemPackages = with pkgs; [ droidcam ];
|
|
|
|
# As an alternative to Droidcam, we can also use scrcpy.
|
|
# After plugging in the phone via USB, run this command:
|
|
#
|
|
# scrcpy --video-source=camera --no-audio --camera-facing=front --v4l2-sink=/dev/video0 --no-video-playback
|
|
#
|
|
# For details, see https://github.com/Genymobile/scrcpy/blob/master/doc/v4l2.md
|
|
programs.adb.enable = true;
|
|
|
|
users.users = {
|
|
aires.extraGroups = lib.mkIf config.${namespace}.users.aires.enable [ "adbusers" ];
|
|
gremlin.extraGroups = lib.mkIf config.${namespace}.users.gremlin.enable [ "adbusers" ];
|
|
};
|
|
|
|
# Add a virtual camera to use with Droidcam
|
|
boot = {
|
|
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ];
|
|
kernelModules = [ "v4l2loopback" ];
|
|
# Note on v4l2loopback kernel module parameters:
|
|
# exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming. This MUST be set to 1 for Chrome to detect virtual cameras.
|
|
# card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams
|
|
#
|
|
# https://github.com/umlaeute/v4l2loopback
|
|
extraModprobeConfig = ''
|
|
options v4l2loopback exclusive_caps=1 card_label="Droidcam" set_fps=30
|
|
'';
|
|
};
|
|
};
|
|
}
|