mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-28 19:40:06 +02:00
121 lines
2.6 KiB
Nix
121 lines
2.6 KiB
Nix
|
{
|
||
|
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
|
||
|
optionsRenamedToSettings = [
|
||
|
"filetypes"
|
||
|
"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";
|
||
|
};
|
||
|
}
|