2024-03-24 17:42:40 +01:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
helpers,
|
|
|
|
config,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
with lib;
|
2024-05-05 19:39:35 +02:00
|
|
|
(import ./_helpers.nix {
|
|
|
|
inherit
|
|
|
|
lib
|
|
|
|
helpers
|
|
|
|
config
|
|
|
|
pkgs
|
|
|
|
;
|
|
|
|
}).mkExtension
|
|
|
|
{
|
2024-03-24 17:42:40 +01:00
|
|
|
name = "media-files";
|
|
|
|
extensionName = "media_files";
|
|
|
|
defaultPackage = pkgs.vimPlugins.telescope-media-files-nvim;
|
|
|
|
|
|
|
|
# TODO: introduced 2024-03-24, remove on 2024-05-24
|
2024-05-05 19:39:35 +02:00
|
|
|
imports =
|
|
|
|
let
|
|
|
|
telescopeExtensionsPath = [
|
|
|
|
"plugins"
|
|
|
|
"telescope"
|
|
|
|
"extensions"
|
|
|
|
];
|
|
|
|
in
|
2024-04-13 11:09:09 +02:00
|
|
|
mapAttrsToList
|
2024-05-05 19:39:35 +02:00
|
|
|
(
|
|
|
|
oldOptionName: newOptionPath:
|
|
|
|
mkRenamedOptionModule (
|
|
|
|
telescopeExtensionsPath
|
|
|
|
++ [
|
|
|
|
"media_files"
|
|
|
|
oldOptionName
|
|
|
|
]
|
|
|
|
) (telescopeExtensionsPath ++ [ "media-files" ] ++ newOptionPath)
|
|
|
|
)
|
|
|
|
{
|
|
|
|
enable = [ "enable" ];
|
|
|
|
package = [ "package" ];
|
|
|
|
filetypes = [
|
|
|
|
"settings"
|
|
|
|
"filetypes"
|
|
|
|
];
|
|
|
|
find_cmd = [
|
|
|
|
"settings"
|
|
|
|
"find_cmd"
|
|
|
|
];
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
|
|
|
|
extraOptions = {
|
2024-05-05 19:39:35 +02:00
|
|
|
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}
|
|
|
|
'';
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
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.";
|
2024-03-24 17:42:40 +01:00
|
|
|
};
|
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
imageMagick = mkDepOption {
|
|
|
|
name = "ImageMagick";
|
|
|
|
package = pkgs.imagemagick;
|
|
|
|
desc = "Required for svg previews.";
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
ffmpegthumbnailer = mkDepOption {
|
|
|
|
name = "ffmpegthumbnailer";
|
|
|
|
desc = "Required for video preview support.";
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
pdftoppm = mkDepOption {
|
|
|
|
name = "pdmtoppm";
|
|
|
|
package = pkgs.poppler_utils;
|
|
|
|
desc = "Required for pdf preview support.";
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
epub-thumbnailer = mkDepOption {
|
|
|
|
name = "epub-thumbnailer";
|
|
|
|
desc = "Required for epub preview support";
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
fontpreview = mkDepOption {
|
|
|
|
name = "fontpreview";
|
|
|
|
desc = "Required for font preview support.";
|
|
|
|
};
|
2024-03-24 17:42:40 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
extraConfig = cfg: {
|
|
|
|
extraPackages = flatten (
|
2024-05-05 19:39:35 +02:00
|
|
|
mapAttrsToList (name: { enable, package }: optional enable package) cfg.dependencies
|
2024-03-24 17:42:40 +01:00
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
settingsOptions = {
|
2024-06-11 17:12:25 +01:00
|
|
|
filetypes = helpers.defaultNullOpts.mkListOf types.str [
|
|
|
|
"png"
|
|
|
|
"jpg"
|
|
|
|
"gif"
|
|
|
|
"mp4"
|
|
|
|
"webm"
|
|
|
|
"pdf"
|
|
|
|
] "Filetypes whitelist.";
|
2024-03-24 17:42:40 +01:00
|
|
|
|
|
|
|
find_cmd = helpers.defaultNullOpts.mkStr "fd" ''
|
|
|
|
Which find command to use.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
settingsExample = {
|
2024-05-05 19:39:35 +02:00
|
|
|
filetypes = [
|
|
|
|
"png"
|
|
|
|
"webp"
|
|
|
|
"jpg"
|
|
|
|
"jpeg"
|
|
|
|
];
|
2024-03-24 17:42:40 +01:00
|
|
|
find_cmd = "rg";
|
|
|
|
};
|
|
|
|
}
|