{
  config,
  pkgs,
  lib,
  ...
}: let
  inherit (lib.options) mkOption mkEnableOption literalExpression;
  inherit (lib.types) bool listOf package;
in {
  options.modules.usrEnv.programs.media = {
    addDefaultPackages = mkOption {
      type = bool;
      default = true;
      description = ''
        Whether to enable the default list of media-related packages ranging from audio taggers
        to video editors.
      '';
    };

    extraPackages = mkOption {
      type = listOf package;
      default = [];
      description = ''
        Additional packages that will be appended to media related packages.
      '';
    };

    ncmpcpp.enable = mkEnableOption "ncmpcpp TUI music player";

    beets.enable =
      mkEnableOption ''
        beets media library system.


        Will be enabled automatically if  {option}`config.modules.usrEnv.services.mpd.enabled`
        is set to true
      ''
      // {default = config.modules.usrEnv.services.media.mpd.enable;};

    mpv = {
      enable = mkEnableOption "mpv media player";
      scripts = mkOption {
        type = listOf package;
        description = "A list of MPV scripts that will be enabled";
        example = literalExpression ''[ pkgs.mpvScripts.cutter ]'';
        default = with pkgs.mpvScripts; [
          # from nixpkgs
          cutter # cut and automatically concat videos
          mpris # MPRIS plugin
          thumbnail # OSC seekbar thumbnails
          thumbfast # on-the-fly thumbnailer
          sponsorblock # skip sponsored segments
          uosc # proximity UI
          quality-menu # ytdl-format quality menu
          seekTo # seek to specific pos.
        ];
      };
    };
  };
}
