mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
plugins/pckr: init
This commit is contained in:
parent
77c5fe808a
commit
ada161d0bb
2 changed files with 240 additions and 0 deletions
114
plugins/by-name/pckr/default.nix
Normal file
114
plugins/by-name/pckr/default.nix
Normal file
|
@ -0,0 +1,114 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
in
|
||||
lib.nixvim.plugins.mkNeovimPlugin {
|
||||
name = "pckr";
|
||||
packPathName = "pckr.nvim";
|
||||
package = "pckr-nvim";
|
||||
|
||||
maintainers = [ lib.maintainers.GaetanLepage ];
|
||||
|
||||
extraOptions = {
|
||||
gitPackage = lib.mkPackageOption pkgs "git" {
|
||||
nullable = true;
|
||||
};
|
||||
|
||||
plugins = lib.mkOption {
|
||||
default = [ ];
|
||||
type =
|
||||
let
|
||||
pluginType = lib.types.either types.str (
|
||||
types.submodule {
|
||||
freeformType = with types; attrsOf anything;
|
||||
options = {
|
||||
path = mkOption {
|
||||
type = types.str;
|
||||
example = "nvim-treesitter/nvim-treesitter";
|
||||
description = ''
|
||||
Repo/path to the plugin.
|
||||
'';
|
||||
};
|
||||
requires = mkOption {
|
||||
type = types.listOf pluginType;
|
||||
default = [ ];
|
||||
example = [
|
||||
"kyazdani42/nvim-web-devicons"
|
||||
];
|
||||
description = ''
|
||||
Dependencies for this plugin.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
in
|
||||
types.listOf pluginType;
|
||||
example = [
|
||||
"9mm/vim-closer"
|
||||
"~/projects/personal/hover.nvim"
|
||||
{
|
||||
path = "tpope/vim-dispatch";
|
||||
cond = [
|
||||
{ __raw = "require('pckr.loader.cmd')('Dispatch')"; }
|
||||
];
|
||||
}
|
||||
{
|
||||
path = "nvim-treesitter/nvim-treesitter";
|
||||
run = ":TSUpdate";
|
||||
}
|
||||
];
|
||||
description = ''
|
||||
List of plugins to install with pckr.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
autoremove = true;
|
||||
pack_dir.__raw = "vim.env.VIM .. '/pckr'";
|
||||
lockfile.path.__raw = "vim.fn.stdpath('config') .. '/pckr/lockfile.lua'";
|
||||
};
|
||||
|
||||
extraConfig = cfg: {
|
||||
extraPackages = [ cfg.gitPackage ];
|
||||
|
||||
plugins.pckr.luaConfig = {
|
||||
# Otherwise pckr can't find itself
|
||||
pre = ''
|
||||
vim.opt.rtp:prepend("${cfg.package}")
|
||||
'';
|
||||
|
||||
# Add plugins after calling require('pckr').setup()
|
||||
post =
|
||||
let
|
||||
normalizePlugin =
|
||||
p:
|
||||
if builtins.isString p then
|
||||
p
|
||||
else
|
||||
builtins.removeAttrs p [
|
||||
"path"
|
||||
"requires"
|
||||
]
|
||||
// {
|
||||
__unkeyed = p.path;
|
||||
requires = normalizePlugins p.requires;
|
||||
};
|
||||
|
||||
normalizePlugins = lib.map normalizePlugin;
|
||||
|
||||
plugins = normalizePlugins cfg.plugins;
|
||||
|
||||
packedPlugins = if lib.length plugins == 1 then builtins.head plugins else plugins;
|
||||
in
|
||||
lib.mkIf (cfg.plugins != [ ]) ''
|
||||
require('pckr').add(${lib.nixvim.toLuaObject packedPlugins})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue