plugins/telescope/media-files: use the top-level dependencies option

This commit is contained in:
Gaetan Lepage 2025-04-27 10:03:49 +02:00
parent 0a301a428a
commit 89c94d9ea7
3 changed files with 67 additions and 79 deletions

View file

@ -1,11 +1,10 @@
{ {
lib, lib,
pkgs,
... ...
}: }:
with lib; with lib;
let let
inherit (lib.nixvim) defaultNullOpts; inherit (lib.nixvim) defaultNullOpts mkSettingsRenamedOptionModules;
mkExtension = import ./_mk-extension.nix; mkExtension = import ./_mk-extension.nix;
in in
mkExtension { mkExtension {
@ -13,69 +12,56 @@ mkExtension {
extensionName = "media_files"; extensionName = "media_files";
package = "telescope-media-files-nvim"; package = "telescope-media-files-nvim";
extraOptions = { imports =
dependencies =
let let
mkDepOption = dependencies = {
{ chafa = "chafa";
name, imageMagick = "imagemagick";
desc, ffmpegthumbnailer = "ffmpegthumbnailer";
package ? name, pdftoppm = "poppler-utils";
enabledByDefault ? false, epub-thumbnailer = "epub-thumbnailer";
}: fontpreview = "fontpreview";
{
enable = mkOption {
type = types.bool;
default = enabledByDefault;
description = ''
Whether to install the ${name} dependency.
${desc}
'';
}; };
package = mkPackageOption pkgs name { default = package; }; # 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 in
deprecations
++ [
{ {
chafa = mkDepOption { __depPackages = {
name = "chafa"; chafa.default = "chafa";
enabledByDefault = true; epub-thumbnailer.default = "epub-thumbnailer";
desc = "Required for image support."; ffmpegthumbnailer.default = "ffmpegthumbnailer";
}; fontpreview.default = "fontpreview";
imagemagick.default = "imagemagick";
imageMagick = mkDepOption { poppler-utils.default = "poppler_utils";
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.";
};
};
}; };
}
];
extraConfig = cfg: { extraConfig = cfg: {
extraPackages = flatten ( dependencies = {
mapAttrsToList (name: { enable, package }: optional enable package) cfg.dependencies chafa.enable = lib.mkDefault true;
); };
}; };
settingsOptions = { settingsOptions = {

View file

@ -4,11 +4,13 @@
... ...
}: }:
let let
disabledDeps = [
];
inherit (pkgs.stdenv) hostPlatform; inherit (pkgs.stdenv) hostPlatform;
disabledDeps = lib.optionals hostPlatform.isDarwin [
# One of its dependencies is not available on darwin
"fontpreview"
];
isDepEnabled = isDepEnabled =
name: package: name: package:
# Filter disabled dependencies # Filter disabled dependencies

View file

@ -32,23 +32,23 @@
plugins.web-devicons.enable = true; plugins.web-devicons.enable = true;
}; };
dependencies = { withAllDependencies = {
plugins.telescope = { plugins = {
telescope = {
enable = true; enable = true;
extensions.media-files = { extensions.media-files.enable = true;
enable = true; };
web-devicons.enable = true;
};
dependencies = { dependencies = {
chafa.enable = true; chafa.enable = true;
imageMagick.enable = true; epub-thumbnailer.enable = true;
ffmpegthumbnailer.enable = true; ffmpegthumbnailer.enable = true;
pdftoppm.enable = true; fontpreview.enable = !pkgs.stdenv.hostPlatform.isDarwin;
epub-thumbnailer.enable = pkgs.stdenv.isLinux; imagemagick.enable = true;
fontpreview.enable = pkgs.stdenv.isLinux; poppler-utils.enable = true;
}; };
}; };
};
plugins.web-devicons.enable = true;
};
} }