{ lib, helpers, config, pkgs, ... }: with lib; ( import ./_helpers.nix {inherit lib helpers config pkgs;} ) .mkExtension { name = "media-files"; extensionName = "media_files"; defaultPackage = pkgs.vimPlugins.telescope-media-files-nvim; # TODO: introduced 2024-03-24, remove on 2024-05-24 imports = let telescopeExtensionsPath = ["plugins" "telescope" "extensions"]; in mapAttrsToList ( oldOptionName: newOptionPath: mkRenamedOptionModule (telescopeExtensionsPath ++ ["media_files" oldOptionName]) (telescopeExtensionsPath ++ ["media-files"] ++ newOptionPath) ) { enable = ["enable"]; package = ["package"]; filetypes = ["settings" "filetypes"]; find_cmd = ["settings" "find_cmd"]; }; extraOptions = { dependencies = let mkDepOption = { name, desc, package ? pkgs.${name}, enabledByDefault ? false, }: { enable = mkOption { type = types.bool; default = enabledByDefault; description = '' Whether to install the ${name} dependency. ${desc} ''; }; package = mkOption { type = types.package; default = package; description = "The package to use for the ${name} dependency."; }; }; in { chafa = mkDepOption { name = "chafa"; enabledByDefault = true; desc = "Required for image support."; }; imageMagick = mkDepOption { name = "ImageMagick"; package = pkgs.imagemagick; desc = "Required for svg previews."; }; ffmpegthumbnailer = mkDepOption { name = "ffmpegthumbnailer"; desc = "Required for video preview support."; }; pdftoppm = mkDepOption { name = "pdmtoppm"; package = pkgs.poppler_utils; desc = "Required for pdf preview support."; }; epub-thumbnailer = mkDepOption { name = "epub-thumbnailer"; desc = "Required for epub preview support"; }; fontpreview = mkDepOption { name = "fontpreview"; desc = "Required for font preview support."; }; }; }; extraConfig = cfg: { extraPackages = flatten ( mapAttrsToList ( name: { enable, package, }: optional enable package ) cfg.dependencies ); }; settingsOptions = { filetypes = helpers.defaultNullOpts.mkListOf types.str '' [ "png" "jpg" "gif" "mp4" "webm" "pdf" ] '' "Filetypes whitelist."; find_cmd = helpers.defaultNullOpts.mkStr "fd" '' Which find command to use. ''; }; settingsExample = { filetypes = ["png" "webp" "jpg" "jpeg"]; find_cmd = "rg"; }; }