# roles/thin-client/apps/obs.nix # # OBS Studio for Schulungs-Recording. Pre-configured profile with # PipeWire screen capture + Mic + System-Audio, Output to ~/Videos/OBS/. # Q14 decisions: Use Case Schulungs-Recording, Pre-configuriertes Profil, # Output local, no streaming. {config, lib, pkgs, ...}: let inherit (lib) mkIf; cfg = config.az.tc; in { config = mkIf cfg.enable { environment = { systemPackages = with pkgs; [ obs-studio obs-studio-plugins.obs-pipewire-audio-capture obs-studio-plugins.wlrobs ]; etc = { # System-wide OBS profile "AZ-Default". # Installed to /etc/obs/az-default/ and copied to user profile on # first run. "obs/az-default/basic.ini".text = '' [General] Name=AZ-Default [Output] Mode=Simple FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss DelayEnable=false DelaySec=20 DelayPreserve=false ReplayWhileRecording=false ReplayBufferEnable=false [SimpleOutput] FilePath=/home/%/Videos/OBS/ RecFormat=mp4 VEncoder=x264 VBitrate=6000 AEncoder=aac ABitrate=192 [Audio] SampleRate=48000 ChannelSetup=stereo [Video] Base=1920x1080 Output=1920x1080 FPSType=0 FPSCommon=30 [AdvOut] ApplyServiceSettings=true RescaleRes=1920x1080 ''; # Pre-configured scene collection with PipeWire screen capture. "obs/az-default/scenes.json".text = '' { "sources": [ { "name": "Bildschirm (PipeWire)", "id": "pipewire-screen-capture-source", "type": "input" }, { "name": "Mikrofon", "id": "pulse_input_capture", "type": "input" }, { "name": "System-Audio", "id": "pulse_output_capture", "type": "input" } ], "scene": "AZ-Default" } ''; }; }; }; }