{
  pkgs,
  lib,
  config,
  ...
}:
with lib;

let
  cfg = config.hardware.virtual-camera;
in
{
  options.hardware.virtual-camera = {
    enable = mkEnableOption "Enable the virtual camera";
  };

  config = mkIf cfg.enable {
    boot = {
      # Virtual Camera/Mic
      kernelModules = [
        "v4l2loopback"
        "snd-aloop"
        "sg"
      ];
      extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ];
      extraModprobeConfig = ''
        options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
      '';
    };
  };
}
