OBS plugins: Is there a better way to configure this?

I generally want to have all OBS plugins in my config file.

In my config file, I currently have my OBS plugins in this type of function:

#OBS plugins
(pkgs.wrapOBS {
    plugins = with pkgs.obs-studio-plugins; [
	pkgs.obs-studio-plugins.wlrobs
	pkgs.obs-studio-plugins.distroav	# formerly obs-ndi
	pkgs.obs-studio-plugins.waveform
	pkgs.obs-studio-plugins.droidcam-obs
	pkgs.obs-studio-plugins.obs-markdown
	pkgs.obs-studio-plugins.obs-advanced-masks	
	pkgs.obs-studio-plugins.pixel-art	
	pkgs.obs-studio-plugins.obs-noise
	pkgs.obs-studio-plugins.obs-vnc
	pkgs.obs-studio-plugins.obs-color-monitor
	pkgs.obs-studio-plugins.obs-retro-effects
	pkgs.obs-studio-plugins.obs-tuna
	pkgs.obs-studio-plugins.obs-vaapi
#	pkgs.obs-studio-plugins.obs-nvfbc		#does not build
	pkgs.obs-studio-plugins.obs-teleport
	pkgs.obs-studio-plugins.obs-hyperion
	pkgs.obs-studio-plugins.droidcam-obs
	pkgs.obs-studio-plugins.obs-websocket		#no manual
#	pkgs.obs-studio-plugins.obs-webkitgtk	# missing package		#no manual
	pkgs.obs-studio-plugins.obs-vkcapture		#no manual
	pkgs.obs-studio-plugins.obs-gstreamer
	pkgs.obs-studio-plugins.obs-3d-effect
	pkgs.obs-studio-plugins.input-overlay
	pkgs.obs-studio-plugins.obs-multi-rtmp
	pkgs.obs-studio-plugins.obs-mute-filter
	pkgs.obs-studio-plugins.obs-text-pthread
	pkgs.obs-studio-plugins.obs-source-clone
	pkgs.obs-studio-plugins.obs-shaderfilter
	pkgs.obs-studio-plugins.obs-source-record
	pkgs.obs-studio-plugins.obs-replay-source
	pkgs.obs-studio-plugins.obs-livesplit-one		#no manual
	pkgs.obs-studio-plugins.obs-freeze-filter
	pkgs.obs-studio-plugins.looking-glass-obs		#no manual
	pkgs.obs-studio-plugins.obs-vintage-filter
	pkgs.obs-studio-plugins.obs-scale-to-sound
	pkgs.obs-studio-plugins.obs-composite-blur
	pkgs.obs-studio-plugins.obs-command-source
#	pkgs.obs-studio-plugins.obs-vertical-canvas
	pkgs.obs-studio-plugins.obs-source-switcher
	pkgs.obs-studio-plugins.obs-move-transition
	pkgs.obs-studio-plugins.obs-gradient-source
	pkgs.obs-studio-plugins.obs-transition-table
#	pkgs.obs-studio-plugins.obs-rgb-levels-filter		# missing package
	pkgs.obs-studio-plugins.obs-backgroundremoval
	pkgs.obs-studio-plugins.advanced-scene-switcher
	pkgs.obs-studio-plugins.obs-pipewire-audio-capture
    ];
  })

Rather than listing each plugin, one by one, is there a better way to write this expression to always include every OBS plugin?

(pkgs.wrapOBS { plugins = builtins.attrValues pkgs.obs-studio-plugins; })

I can’t guarantee it’ll build, but it’s syntactically correct :slight_smile:

why-persian-room-cat-guardian

You really want every future vendor-made widget for every new hardware release you don’t even own, and every X-only and Wayland-only piece of code ever included? What’s the benefit?

The benefit is that I’d have more options and features. Using OBS without plugins are unbearable.

Do you use OBS?
Do you use any OBS plugins?
And how long have you been using OBS?

False dichotomy. Most people have a specific workflow and use specific plugins that fit said workflow. I don’t care about 90% of plugins since they are just useless to me and increase the risk of compatibility issues, crashes, etc.

Anyway, to get back on topic, you can also filterAttrs before applying attrValues, or use filter afterwards, if you want to exclude specific plugins.

Do you use OBS?
Do you use any OBS plugins?
And how long have you been using OBS?

Yes, yes, and at least five and a half years according to 08c4d1ec6e. I’ve done live coding streams to Twitch from NixOS, and I’ve made changes to obs-studio in nixpkgs. Is that enough or do you have more personal questions for me?

Using OBS without plugins are unbearable.

Where did you get the impression that I was suggesting you stop using plugins altogether? There is a great middle ground between no plugins and every plugin ever: Specifying what you expect to use.

BTW your “with expression” brings everything from pkgs.obs-studio-plugins into the scope of the following list. That means you could rewrite your current function like so:

(pkgs.wrapOBS {
  plugins = with pkgs.obs-studio-plugins; [
    wlrobs
    distroav	# formerly obs-ndi
    # the other plugins
  ];
})

I’ve done live coding streams to Twitch from NixOS, and I’ve made changes to obs-studio in nixpkgs.

You and I do very different production setups then.

I stage, record, and live stream music performances, incorporate different camera angles, multiple cameras, incorporate stinger transitions and alike, along with overlays, and I do setups for live streamers.

I need Advanced Scene Switcher to change scenes based on timing or “audio input signal” and Move Transition for when the scenes change, Web Sockets for when I use a wireless camera in a live setting, and other bells and whistles (on screen music notifications for viewers, filters, dvd screensaver, and etc.)

The point of having all the plugins is so that I, or clients, don’t need to scramble for solutions. They should have everything they need so they can stay creative.

Is that enough or do you have more personal questions for me?

Depends if you continue comparing yourself to others, or how far you deviate from the original question:

is there a better way to write this expression to always include every OBS plugin?

You already have your answers to that, depends on what you tried and why you’re not happy with those solutions.

Good luck out there.