mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-25 22:49:48 +01:00
Merge pull request #224 from NotAShelf/image-nvim
utility/images: add image.nvim
This commit is contained in:
commit
dbbd7b2914
10 changed files with 200 additions and 4 deletions
|
@ -178,10 +178,14 @@ inputs: let
|
|||
hop.enable = true;
|
||||
leap.enable = true;
|
||||
};
|
||||
|
||||
images = {
|
||||
image-nvim.enable = false;
|
||||
};
|
||||
};
|
||||
|
||||
vim.notes = {
|
||||
obsidian.enable = false; # FIXME neovim fails to build if obsidian is enabled
|
||||
obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled
|
||||
orgmode.enable = false;
|
||||
mind-nvim.enable = isMaximal;
|
||||
todo-comments.enable = true;
|
||||
|
|
17
flake.lock
17
flake.lock
|
@ -596,6 +596,22 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"image-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707861531,
|
||||
"narHash": "sha256-mh3J3lW2Co2uA7YJzSGum0ZmpJBP0ZzBWUvJLAI9bHw=",
|
||||
"owner": "3rd",
|
||||
"repo": "image.nvim",
|
||||
"rev": "4c6cb5ad93ee93d8d7b7c84e1eb291cee99f0a0e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "3rd",
|
||||
"repo": "image.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"indent-blankline": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -1516,6 +1532,7 @@
|
|||
"highlight-undo": "highlight-undo",
|
||||
"hop-nvim": "hop-nvim",
|
||||
"icon-picker-nvim": "icon-picker-nvim",
|
||||
"image-nvim": "image-nvim",
|
||||
"indent-blankline": "indent-blankline",
|
||||
"kommentary": "kommentary",
|
||||
"leap-nvim": "leap-nvim",
|
||||
|
|
|
@ -162,6 +162,11 @@
|
|||
flake = false;
|
||||
};
|
||||
|
||||
image-nvim = {
|
||||
url = "github:3rd/image.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Tidal cycles
|
||||
tidalcycles = {
|
||||
url = "github:mitchmindtree/tidalcycles.nix";
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
dag = import ./dag.nix {inherit lib;};
|
||||
languages = import ./languages.nix {inherit lib;};
|
||||
lua = import ./lua.nix {inherit lib;};
|
||||
vim = import ./vim.nix {inherit lib;};
|
||||
vim = import ./vim.nix;
|
||||
}
|
||||
|
|
|
@ -98,6 +98,7 @@ with lib; let
|
|||
"vim-dirtytalk"
|
||||
"highlight-undo"
|
||||
"nvim-docs-view"
|
||||
"image-nvim"
|
||||
];
|
||||
# You can either use the name of the plugin or a package.
|
||||
pluginType = with types;
|
||||
|
@ -116,11 +117,13 @@ with lib; let
|
|||
type = pluginType;
|
||||
description = "Plugin Package.";
|
||||
};
|
||||
|
||||
after = mkOption {
|
||||
type = listOf str;
|
||||
default = [];
|
||||
description = "Setup this plugin after the following ones.";
|
||||
};
|
||||
|
||||
setup = mkOption {
|
||||
type = lines;
|
||||
default = "";
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
_: {
|
||||
{
|
||||
imports = [
|
||||
./binds
|
||||
./ccc
|
||||
./gestures
|
||||
./motion
|
||||
./telescope
|
||||
./ccc
|
||||
./icon-picker
|
||||
./images
|
||||
./telescope
|
||||
./diffview
|
||||
./wakatime
|
||||
|
|
5
modules/utility/images/default.nix
Normal file
5
modules/utility/images/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./image-nvim
|
||||
];
|
||||
}
|
37
modules/utility/images/image-nvim/config.nix
Normal file
37
modules/utility/images/image-nvim/config.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
|
||||
cfg = config.vim.utility.images.image-nvim;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = pkgs.stdenv.isDarwin && cfg.setupOpts.backend != "ueberzug";
|
||||
message = "image-nvim: ueberzug backend is broken on ${pkgs.stdenv.hostPlatform.system}. if you are using kitty, please set `vim.utility.images.image-nvim.setupOpts.backend` option to `kitty` in your configuration, otherwise disable this module.";
|
||||
}
|
||||
];
|
||||
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"image-nvim"
|
||||
];
|
||||
|
||||
luaPackages = [
|
||||
"magick"
|
||||
];
|
||||
|
||||
luaConfigRC.image-nvim = entryAnywhere ''
|
||||
require("image").setup(
|
||||
${toLuaObject cfg.setupOpts}
|
||||
)
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
6
modules/utility/images/image-nvim/default.nix
Normal file
6
modules/utility/images/image-nvim/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./config.nix
|
||||
./image-nvim.nix
|
||||
];
|
||||
}
|
118
modules/utility/images/image-nvim/image-nvim.nix
Normal file
118
modules/utility/images/image-nvim/image-nvim.nix
Normal file
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.options) mkEnableOption mkOption;
|
||||
|
||||
inherit (lib.types) enum listOf str nullOr int;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||
in {
|
||||
options.vim.utility.images.image-nvim = {
|
||||
enable = mkEnableOption "image support in Neovim [image.nvim]";
|
||||
|
||||
setupOpts = mkPluginSetupOption "image.nvim" {
|
||||
backend = mkOption {
|
||||
type = enum ["kitty" "ueberzug"];
|
||||
default = "ueberzug";
|
||||
description = ''
|
||||
The backend to use for rendering images.
|
||||
|
||||
- kitty - best in class, works great and is very snappy
|
||||
- ueberzug - backed by ueberzugpp, supports any terminal,
|
||||
but has lower performance
|
||||
'';
|
||||
};
|
||||
|
||||
integrations = {
|
||||
markdown = {
|
||||
enable = mkEnableOption " image.nvim in markdown files" // {default = true;};
|
||||
clearInInsertMode = mkEnableOption "clearing of images when entering insert mode";
|
||||
downloadRemoteImages = mkEnableOption "downloading remote images";
|
||||
onlyRenderAtCursor = mkEnableOption "only rendering images at cursor";
|
||||
filetypes = mkOption {
|
||||
type = listOf str;
|
||||
default = ["markdown" "vimwiki"];
|
||||
description = ''
|
||||
Filetypes to enable image.nvim in. Markdown extensions
|
||||
(i.e. quarto) can go here
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
neorg = {
|
||||
enable = mkEnableOption "image.nvim in Neorg files" // {default = true;};
|
||||
clearInInsertMode = mkEnableOption "clearing of images when entering insert mode";
|
||||
downloadRemoteImages = mkEnableOption "downloading remote images";
|
||||
onlyRenderAtCursor = mkEnableOption "only rendering images at cursor";
|
||||
filetypes = mkOption {
|
||||
type = listOf str;
|
||||
default = ["neorg"];
|
||||
description = ''
|
||||
Filetypes to enable image.nvim in.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
maxWidth = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = ''
|
||||
The maximum width of images to render. Images larger than
|
||||
this will be scaled down to fit within this width.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
maxHeight = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = ''
|
||||
The maximum height of images to render. Images larger than
|
||||
this will be scaled down to fit within this height.
|
||||
'';
|
||||
};
|
||||
|
||||
maxWidthWindowPercentage = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = ''
|
||||
The maximum width of images to render as a percentage of the
|
||||
window width. Images larger than this will be scaled down to
|
||||
fit within this width.
|
||||
'';
|
||||
};
|
||||
|
||||
maxHeightWindowPercentage = mkOption {
|
||||
type = nullOr int;
|
||||
default = 50;
|
||||
description = ''
|
||||
The maximum height of images to render as a percentage of the
|
||||
window height. Images larger than this will be scaled down to
|
||||
fit within this height.
|
||||
'';
|
||||
};
|
||||
|
||||
windowOverlapClear = {
|
||||
enable = mkEnableOption "clearing of images when they overlap with the window";
|
||||
ftIgnore = mkOption {
|
||||
type = listOf str;
|
||||
default = ["cmp_menu" "cmp_docs" ""];
|
||||
description = ''
|
||||
Filetypes to ignore window overlap clearing in.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
editorOnlyRenderWhenFocused = mkEnableOption "only rendering images when the editor is focused";
|
||||
hijackFilePatterns = mkOption {
|
||||
type = listOf str;
|
||||
default = ["*.png" "*.jpg" "*.jpeg" "*.gif" "*.webp"];
|
||||
description = ''
|
||||
File patterns to hijack for image.nvim. This is useful for
|
||||
filetypes that don't have a dedicated integration.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue