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,
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 = {

View file

@ -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

View file

@ -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;
};
}