mirror of
https://github.com/nix-community/nixvim.git
synced 2025-11-08 19:46:06 +01:00
102 lines
2.5 KiB
Nix
102 lines
2.5 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
lib.nixvim.plugins.mkNeovimPlugin {
|
|
name = "neogit";
|
|
description = "An interactive and powerful Git interface for Neovim, inspired by Magit.";
|
|
|
|
maintainers = [ lib.maintainers.GaetanLepage ];
|
|
|
|
imports = [
|
|
# TODO: added 2025-04-07, remove after 25.05
|
|
(lib.nixvim.mkRemovedPackageOptionModule {
|
|
plugin = "neogit";
|
|
packageName = "git";
|
|
})
|
|
(lib.nixvim.mkRemovedPackageOptionModule {
|
|
plugin = "neogit";
|
|
packageName = "which";
|
|
})
|
|
];
|
|
|
|
dependencies = [
|
|
"git"
|
|
{
|
|
name = "which";
|
|
enable = lib.hasInfix "which" (
|
|
config.plugins.neogit.settings.commit_view.verify_commit.__raw or ""
|
|
);
|
|
}
|
|
];
|
|
|
|
settingsExample = {
|
|
kind = "floating";
|
|
commit_popup.kind = "floating";
|
|
preview_buffer.kind = "floating";
|
|
popup.kind = "floating";
|
|
integrations.diffview = false;
|
|
disable_commit_confirmation = true;
|
|
disable_builtin_notifications = true;
|
|
sections = {
|
|
untracked.folded = false;
|
|
unstaged.folded = false;
|
|
staged.folded = false;
|
|
stashes.folded = false;
|
|
unpulled.folded = false;
|
|
unmerged.folded = true;
|
|
recent.folded = true;
|
|
};
|
|
mappings = {
|
|
status = {
|
|
l = "Toggle";
|
|
a = "Stage";
|
|
};
|
|
};
|
|
};
|
|
|
|
settingsOptions = {
|
|
telescope_sorter = lib.nixvim.mkNullOrLuaFn ''
|
|
Allows a different telescope sorter.
|
|
Defaults to 'fuzzy_with_index_bias'.
|
|
The example below will use the native fzf sorter instead.
|
|
By default, this function returns `nil`.
|
|
|
|
Example:
|
|
```lua
|
|
require("telescope").extensions.fzf.native_fzf_sorter
|
|
```
|
|
'';
|
|
|
|
commit_view.verify_commit = lib.nixvim.mkNullOrStrLuaOr lib.types.bool ''
|
|
Show commit signature information in the buffer.
|
|
Can be set to true or false, otherwise we try to find the binary.
|
|
|
|
Default: "os.execute('which gpg') == 0"
|
|
'';
|
|
};
|
|
|
|
extraConfig = cfg: {
|
|
assertions = lib.nixvim.mkAssertions "plugins.neogit" (
|
|
map
|
|
(name: {
|
|
assertion =
|
|
let
|
|
extensionEnabled = (cfg.settings.integrations.${name} or false) == true;
|
|
pluginEnabled = config.plugins.${name}.enable;
|
|
in
|
|
extensionEnabled -> pluginEnabled;
|
|
|
|
message = ''
|
|
You have enabled the `${name}` integration, but `plugins.${name}.enable` is `false`.
|
|
'';
|
|
})
|
|
[
|
|
"telescope"
|
|
"diffview"
|
|
"fzf-lua"
|
|
]
|
|
);
|
|
};
|
|
}
|