1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.immersed;
10in
11{
12 imports = [
13 (lib.mkRenamedOptionModule
14 [
15 "programs"
16 "immersed-vr"
17 ]
18 [
19 "programs"
20 "immersed"
21 ]
22 )
23 ];
24
25 options = {
26 programs.immersed = {
27 enable = lib.mkEnableOption "immersed";
28
29 package = lib.mkPackageOption pkgs "immersed" { };
30 };
31 };
32
33 config = lib.mkIf cfg.enable {
34 boot = {
35 kernelModules = [
36 "v4l2loopback"
37 "snd-aloop"
38 ];
39 extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
40 extraModprobeConfig = ''
41 options v4l2loopback exclusive_caps=1 card_label="v4l2loopback Virtual Camera"
42 '';
43 };
44
45 environment.systemPackages = [ cfg.package ];
46 };
47
48 meta.maintainers = pkgs.immersed.meta.maintainers;
49}