{ config, pkgs, lib, ... }: with lib; let # Lassulus streaming setup # ------------------------- # ffmpeg \ # -f pulse \ # -i default \ # -vaapi_device /dev/dri/renderD128 \ # -f x11grab \ # -video_size 1366x768 \ # -i :0 \ # -vf 'hwupload,scale_vaapi=format=nv12' \ # -c:v h264_vaapi \ # -c:a aac \ # -b:a 96k \ # -af "highpass=f=200, lowpass=f=3000" \ # -qp 30 \ # -f flv \ # rtmp://lassul.us:1935/stream/nixos \ # ./rc3-output-$(date +%d%H%M%S).mp4 # # Dann abspielen mit : # mpv rtmp://lassul.us:1935/stream/nixos cfg = config.programs.custom.video; # show keyboard input on desktop for screencasts screenKey = pkgs.symlinkJoin { name = "screen-keys"; paths = let screenKeyScript = { position ? "bottom", size ? "small", ... }: pkgs.writeShellScriptBin "screenkeys-${position}-${size}" # sh '' ${pkgs.screenkey}/bin/screenkey \ --no-detach \ --bg-color '#fdf6e3' \ --font-color '#073642' \ -p ${position} \ -s ${size} \ "$@" ''; in lib.flatten (lib.flip map [ "large" "small" "medium" ] (size: lib.flip map [ "top" "center" "bottom" ] (position: screenKeyScript { inherit size position; }))); }; in { options.programs.custom.video.enable = mkEnableOption "enable video tools"; config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ unstable.youtube-dl unstable.yt-dlp mplayer mpv # to record your screen # --------------------- simplescreenrecorder screenKey # to transcode video material # --------------------------- handbrake ffmpeg-full # video editing # ------------- openshot-qt ]; }; }