{ config, lib, pkgs, ...}:
let
  cfg = config.nixfiles.packageSets.multimedia;
  inherit (lib) optional optionals mkEnableOption mkIf;
  nvidiaEnabled = (lib.elem "nvidia" config.services.xserver.videoDrivers);
in
{
  options.nixfiles.packageSets.multimedia = {
    enable = mkEnableOption "multimedia packages";
  };
  config = mkIf cfg.enable {
    environment.systemPackages = with pkgs; optionals config.services.xserver.enable [
      mpv
      gimp
      krita
      inkscape
      obs-studio
    ] ++ [
      gallery-dl
      yt-dlp
      imagemagick
      pngquant
      gifski
      ffmpeg
    ];

    # needed for NVENC to work in OBS Studio and FFmpeg
    boot.kernelModules = optional nvidiaEnabled "nvidia_uvm";
  };
}