1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-11-08 19:46:06 +01:00
nixvim/plugins/by-name/neogit/default.nix
Gaetan Lepage 283775355b plugins/neogit: remove (most) explicit option declarations from settingsOptions
We need to keep the options that actively transform user inputs :/
2025-09-30 22:46:13 +00:00

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"
]
);
};
}