{
  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";
  };
}