diff --git a/plugins/by-name/telescope/extensions/media-files.nix b/plugins/by-name/telescope/extensions/media-files.nix index 0847adb8..6270e3c6 100644 --- a/plugins/by-name/telescope/extensions/media-files.nix +++ b/plugins/by-name/telescope/extensions/media-files.nix @@ -1,11 +1,10 @@ { lib, - pkgs, ... }: with lib; let - inherit (lib.nixvim) defaultNullOpts; + inherit (lib.nixvim) defaultNullOpts mkSettingsRenamedOptionModules; mkExtension = import ./_mk-extension.nix; in mkExtension { @@ -13,69 +12,56 @@ mkExtension { extensionName = "media_files"; package = "telescope-media-files-nvim"; - extraOptions = { - dependencies = - let - mkDepOption = - { - name, - desc, - package ? name, - enabledByDefault ? false, - }: - { - enable = mkOption { - type = types.bool; - default = enabledByDefault; - description = '' - Whether to install the ${name} dependency. - ${desc} - ''; - }; - - package = mkPackageOption pkgs name { default = package; }; - }; - in - { - chafa = mkDepOption { - name = "chafa"; - enabledByDefault = true; - desc = "Required for image support."; - }; - - imageMagick = mkDepOption { - name = "ImageMagick"; - package = "imagemagick"; - desc = "Required for svg previews."; - }; - - ffmpegthumbnailer = mkDepOption { - name = "ffmpegthumbnailer"; - desc = "Required for video preview support."; - }; - - pdftoppm = mkDepOption { - name = "pdmtoppm"; - package = "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."; - }; + imports = + let + dependencies = { + chafa = "chafa"; + imageMagick = "imagemagick"; + ffmpegthumbnailer = "ffmpegthumbnailer"; + pdftoppm = "poppler-utils"; + epub-thumbnailer = "epub-thumbnailer"; + fontpreview = "fontpreview"; }; - }; + + # TODO: Added 2025-04-27. Remove after 25.11 + deprecations = lib.concatLists ( + lib.mapAttrsToList ( + oldName: newName: + mkSettingsRenamedOptionModules + [ + "plugins" + "telescope" + "extensions" + "media-files" + "dependencies" + oldName + ] + [ + "dependencies" + newName + ] + [ "enable" "package" ] + ) dependencies + ); + in + deprecations + ++ [ + { + __depPackages = { + chafa.default = "chafa"; + epub-thumbnailer.default = "epub-thumbnailer"; + ffmpegthumbnailer.default = "ffmpegthumbnailer"; + fontpreview.default = "fontpreview"; + imagemagick.default = "imagemagick"; + poppler-utils.default = "poppler_utils"; + }; + } + ]; extraConfig = cfg: { - extraPackages = flatten ( - mapAttrsToList (name: { enable, package }: optional enable package) cfg.dependencies - ); + dependencies = { + chafa.enable = lib.mkDefault true; + }; }; settingsOptions = { diff --git a/tests/test-sources/modules/dependencies.nix b/tests/test-sources/modules/dependencies.nix index 3e05e2ad..e470bf1d 100644 --- a/tests/test-sources/modules/dependencies.nix +++ b/tests/test-sources/modules/dependencies.nix @@ -4,11 +4,13 @@ ... }: let - disabledDeps = [ - ]; - inherit (pkgs.stdenv) hostPlatform; + disabledDeps = lib.optionals hostPlatform.isDarwin [ + # One of its dependencies is not available on darwin + "fontpreview" + ]; + isDepEnabled = name: package: # Filter disabled dependencies diff --git a/tests/test-sources/plugins/by-name/telescope/media-files.nix b/tests/test-sources/plugins/by-name/telescope/media-files.nix index 0705e548..7a7cc579 100644 --- a/tests/test-sources/plugins/by-name/telescope/media-files.nix +++ b/tests/test-sources/plugins/by-name/telescope/media-files.nix @@ -32,23 +32,23 @@ plugins.web-devicons.enable = true; }; - dependencies = { - plugins.telescope = { - enable = true; - - extensions.media-files = { + withAllDependencies = { + plugins = { + telescope = { enable = true; - dependencies = { - chafa.enable = true; - imageMagick.enable = true; - ffmpegthumbnailer.enable = true; - pdftoppm.enable = true; - epub-thumbnailer.enable = pkgs.stdenv.isLinux; - fontpreview.enable = pkgs.stdenv.isLinux; - }; + extensions.media-files.enable = true; }; + web-devicons.enable = true; + }; + + dependencies = { + chafa.enable = true; + epub-thumbnailer.enable = true; + ffmpegthumbnailer.enable = true; + fontpreview.enable = !pkgs.stdenv.hostPlatform.isDarwin; + imagemagick.enable = true; + poppler-utils.enable = true; }; - plugins.web-devicons.enable = true; }; }