46 lines
1.2 KiB
Nix
46 lines
1.2 KiB
Nix
{
|
|
user ? throw "user argument is required",
|
|
home ? throw "home argument is required",
|
|
}:
|
|
{ config, pkgs, ... }:
|
|
let
|
|
hmConfig = config.home-manager.users.${user};
|
|
in
|
|
{
|
|
boot = {
|
|
kernelModules = [ "v4l2loopback" ];
|
|
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
|
|
extraModprobeConfig = ''
|
|
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
|
'';
|
|
};
|
|
|
|
environment.persistence = {
|
|
"/persist"."${home}/.config/obs-studio" = { };
|
|
};
|
|
|
|
home-manager.users.${user} = {
|
|
imports = [ ./options.nix ];
|
|
|
|
programs.obs-studio.enable = true;
|
|
|
|
xdg.configFile."obs-studio/basic/profiles/Untitled/basic.ini".source =
|
|
(pkgs.formats.ini { }).generate "basic.ini"
|
|
{
|
|
SimpleOutput = {
|
|
FilePath = "${home}/Videos";
|
|
VBitrate = 4000;
|
|
ABitrate = 320;
|
|
RecEncoder = "nvenc_hevc";
|
|
FileNameWithoutSpace = true;
|
|
};
|
|
Video = with hmConfig.programs.obs-studio.resolution; {
|
|
BaseCX = base.x;
|
|
BaseCY = base.y;
|
|
OutputCX = output.x;
|
|
OutputCY = output.y;
|
|
};
|
|
};
|
|
};
|
|
}
|