mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-01-17 23:58:40 +00:00
Compare commits
No commits in common. "54311277fc5c3ed22850f804c25cd9c406d75646" and "53d0e7908302000e17238f417dcddbffbfffcfb5" have entirely different histories.
54311277fc
...
53d0e79083
40 changed files with 293 additions and 1085 deletions
|
|
@ -14,7 +14,7 @@ indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
[*.{js,json,nix,yml,yaml,toml}]
|
[*.{js,json,nix,yml,yaml}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
tab_width = 2
|
tab_width = 2
|
||||||
|
|
|
||||||
2
.github/README.md
vendored
2
.github/README.md
vendored
|
|
@ -237,7 +237,7 @@ customizability of plugin inputs, which is one of our primary features.
|
||||||
an imperative path (e.g., `~/.config/nvim`) for my Neovim configuration instead
|
an imperative path (e.g., `~/.config/nvim`) for my Neovim configuration instead
|
||||||
of a configuration generated from Nix?
|
of a configuration generated from Nix?
|
||||||
|
|
||||||
**A**: Yes! Add `"~/.config/nvim"` to `vim.additionalRuntimePaths = [ ... ]` and
|
**A**: Yes! Add `"~/.config.nvim"` to `vim.additionalRuntimePaths = [ ... ]` and
|
||||||
any plugins you want to load to `vim.startPlugins`. This will load your
|
any plugins you want to load to `vim.startPlugins`. This will load your
|
||||||
configuration from `~/.config/nvim`. You may still use `vim.*` to modify
|
configuration from `~/.config/nvim`. You may still use `vim.*` to modify
|
||||||
Neovim's behaviour with Nix.
|
Neovim's behaviour with Nix.
|
||||||
|
|
|
||||||
11
.github/typos.toml
vendored
11
.github/typos.toml
vendored
|
|
@ -1,10 +1,5 @@
|
||||||
|
|
||||||
files.extend-exclude = ["npins/sources.json"]
|
default.extend-ignore-words-re = ["(?i)(noice)", "befores", "annote", "viw"]
|
||||||
default.extend-ignore-words-re = [
|
files.extend-exclude = [
|
||||||
"(?i)(noice)",
|
"npins/sources.json"
|
||||||
"befores",
|
|
||||||
"annote",
|
|
||||||
"viw",
|
|
||||||
"BA", # somehow "BANanaD3V" is valid, but BA is not...
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
2
.github/workflows/cachix.yml
vendored
2
.github/workflows/cachix.yml
vendored
|
|
@ -36,7 +36,7 @@ jobs:
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: DeterminateSystems/nix-installer-action@main
|
uses: DeterminateSystems/nix-installer-action@main
|
||||||
|
|
||||||
- uses: cachix/cachix-action@v16
|
- uses: cachix/cachix-action@v15
|
||||||
with:
|
with:
|
||||||
authToken: ${{ secrets.CACHIX_TOKEN }}
|
authToken: ${{ secrets.CACHIX_TOKEN }}
|
||||||
extraPullNames: nix-community
|
extraPullNames: nix-community
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,7 @@
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- `git-conflict` keybinds are now prefixed with `<leader>` to avoid conflicting
|
- `git-conflict` keybinds are now prefixed with `<leader>` to avoid conflicting
|
||||||
with builtins.
|
with builtins
|
||||||
|
|
||||||
- `alpha` is now configured with nix, default config removed.
|
|
||||||
|
|
||||||
[NotAShelf](https://github.com/notashelf):
|
[NotAShelf](https://github.com/notashelf):
|
||||||
|
|
||||||
|
|
@ -20,7 +18,7 @@
|
||||||
- Add a search widget to the options page in the nvf manual.
|
- Add a search widget to the options page in the nvf manual.
|
||||||
|
|
||||||
- Add [render-markdown.nvim] under
|
- Add [render-markdown.nvim] under
|
||||||
`languages.markdown.extensions.render-markdown-nvim`.
|
`languages.markdown.extensions.render-markdown-nvim`
|
||||||
|
|
||||||
- Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table
|
- Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table
|
||||||
in gitsigns configuration.
|
in gitsigns configuration.
|
||||||
|
|
@ -54,14 +52,6 @@
|
||||||
|
|
||||||
- Add [yazi.nvim] as a companion plugin for Yazi, the terminal file manager.
|
- Add [yazi.nvim] as a companion plugin for Yazi, the terminal file manager.
|
||||||
|
|
||||||
- Add [](#opt-vim.autocmds) and [](#opt-vim.augroups) to allow declaring
|
|
||||||
autocommands via Nix.
|
|
||||||
|
|
||||||
- Fix plugin `setupOpts` for yanky.nvim and assert if shada is configured as a
|
|
||||||
backend while shada is disabled in Neovim options.
|
|
||||||
|
|
||||||
- Add [yazi.nvim] as a companion plugin for Yazi, the terminal file manager.
|
|
||||||
|
|
||||||
[amadaluzia](https://github.com/amadaluzia):
|
[amadaluzia](https://github.com/amadaluzia):
|
||||||
|
|
||||||
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
|
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
|
||||||
|
|
@ -72,7 +62,7 @@
|
||||||
|
|
||||||
[blink.cmp]: https://github.com/saghen/blink.cmp
|
[blink.cmp]: https://github.com/saghen/blink.cmp
|
||||||
|
|
||||||
- Add [blink.cmp] support.
|
- Add [blink.cmp] support
|
||||||
|
|
||||||
[diniamo](https://github.com/diniamo):
|
[diniamo](https://github.com/diniamo):
|
||||||
|
|
||||||
|
|
@ -86,8 +76,8 @@
|
||||||
[aerial.nvim]: (https://github.com/stevearc/aerial.nvim)
|
[aerial.nvim]: (https://github.com/stevearc/aerial.nvim)
|
||||||
[nvim-ufo]: (https://github.com/kevinhwang91/nvim-ufo)
|
[nvim-ufo]: (https://github.com/kevinhwang91/nvim-ufo)
|
||||||
|
|
||||||
- Add [aerial.nvim].
|
- Add [aerial.nvim]
|
||||||
- Add [nvim-ufo].
|
- Add [nvim-ufo]
|
||||||
|
|
||||||
[LilleAila](https://github.com/LilleAila):
|
[LilleAila](https://github.com/LilleAila):
|
||||||
|
|
||||||
|
|
@ -159,10 +149,8 @@
|
||||||
[thamenato](https://github.com/thamenato):
|
[thamenato](https://github.com/thamenato):
|
||||||
|
|
||||||
[ruff]: (https://github.com/astral-sh/ruff)
|
[ruff]: (https://github.com/astral-sh/ruff)
|
||||||
[cue]: (https://cuelang.org/)
|
|
||||||
|
|
||||||
- Add [ruff] as a formatter option in `vim.languages.python.format.type`.
|
- Add [ruff] as a formatter option in `vim.languages.python.format.type`.
|
||||||
- Add [cue] support under `vim.languages.cue`.
|
|
||||||
|
|
||||||
[ARCIII](https://github.com/ArmandoCIII):
|
[ARCIII](https://github.com/ArmandoCIII):
|
||||||
|
|
||||||
|
|
@ -172,7 +160,7 @@
|
||||||
Inspiration from `vim.languages.clang.dap` implementation.
|
Inspiration from `vim.languages.clang.dap` implementation.
|
||||||
- Add [leetcode.nvim] plugin under `vim.utility.leetcode-nvim`.
|
- Add [leetcode.nvim] plugin under `vim.utility.leetcode-nvim`.
|
||||||
|
|
||||||
[nezia1](https://github.com/nezia1):
|
[nezia1](https://github.com/nezia1)
|
||||||
|
|
||||||
- Add support for [nixd](https://github.com/nix-community/nixd) language server.
|
- Add support for [nixd](https://github.com/nix-community/nixd) language server.
|
||||||
|
|
||||||
|
|
@ -182,73 +170,23 @@
|
||||||
available plugins, under `vim.utility.multicursors`.
|
available plugins, under `vim.utility.multicursors`.
|
||||||
- Add [hydra.nvim](https://github.com/nvimtools/hydra.nvim) as dependency for
|
- Add [hydra.nvim](https://github.com/nvimtools/hydra.nvim) as dependency for
|
||||||
`multicursors.nvim` and lazy loads by default.
|
`multicursors.nvim` and lazy loads by default.
|
||||||
|
[folospior](https://github.com/folospior)
|
||||||
[folospior](https://github.com/folospior):
|
|
||||||
|
|
||||||
- Fix plugin name for lsp/lspkind.
|
- Fix plugin name for lsp/lspkind.
|
||||||
|
|
||||||
- Move `vim-illuminate` to `setupOpts format`
|
[iynaix](https://github.com/iynaix)
|
||||||
|
|
||||||
[iynaix](https://github.com/iynaix):
|
|
||||||
|
|
||||||
- Add lsp options support for [nixd](https://github.com/nix-community/nixd)
|
- Add lsp options support for [nixd](https://github.com/nix-community/nixd)
|
||||||
language server.
|
language server.
|
||||||
|
|
||||||
[Mr-Helpful](https://github.com/Mr-Helpful):
|
[Mr-Helpful](https://github.com/Mr-Helpful)
|
||||||
|
|
||||||
- Corrects pin names used for nvim themes.
|
- Corrects pin names used for nvim themes
|
||||||
|
|
||||||
[Libadoxon](https://github.com/Libadoxon):
|
[Libadoxon](https://github.com/Libadoxon)
|
||||||
|
|
||||||
- Add [git-conflict](https://github.com/akinsho/git-conflict.nvim) plugin for
|
- Add [git-conflict](https://github.com/akinsho/git-conflict.nvim) plugin for
|
||||||
resolving git conflicts.
|
resolving git conflicts
|
||||||
- Add formatters for go: [gofmt](https://go.dev/blog/gofmt),
|
- Add formatters for go: [gofmt](https://go.dev/blog/gofmt),
|
||||||
[golines](https://github.com/segmentio/golines) and
|
[golines](https://github.com/segmentio/golines) and
|
||||||
[gofumpt](https://github.com/mvdan/gofumpt).
|
[gofumpt](https://github.com/mvdan/gofumpt)
|
||||||
|
|
||||||
[UltraGhostie](https://github.com/UltraGhostie)
|
|
||||||
|
|
||||||
- Add [harpoon](https://github.com/ThePrimeagen/harpoon) plugin for navigation
|
|
||||||
|
|
||||||
[MaxMur](https://github.com/TheMaxMur):
|
|
||||||
|
|
||||||
- Add YAML support under `vim.languages.yaml`.
|
|
||||||
|
|
||||||
[alfarel](https://github.com/alfarelcynthesis):
|
|
||||||
|
|
||||||
- Add missing `yazi.nvim` dependency (`snacks.nvim`).
|
|
||||||
|
|
||||||
- Add [mkdir.nvim](https://github.com/jghauser/mkdir.nvim) plugin for automatic
|
|
||||||
creation of parent directories when editing a nested file.
|
|
||||||
- Add [nix-develop.nvim](https://github.com/figsoda/nix-develop.nvim) plugin for
|
|
||||||
in-neovim `nix develop`, `nix shell` and more.
|
|
||||||
- Add [direnv.vim](https://github.com/direnv/direnv.vim) plugin for automatic
|
|
||||||
syncing of nvim shell environment with direnv's.
|
|
||||||
- Add [blink.cmp] source options and some default-disabled sources.
|
|
||||||
- Add [blink.cmp] option to add
|
|
||||||
[friendly-snippets](https://github.com/rafamadriz/friendly-snippets) so
|
|
||||||
blink.cmp can source snippets from it.
|
|
||||||
|
|
||||||
[TheColorman](https://github.com/TheColorman):
|
|
||||||
|
|
||||||
- Fix plugin `setupOpts` for `neovim-session-manager` having an invalid value
|
|
||||||
for `autoload_mode`.
|
|
||||||
|
|
||||||
[esdevries](https://github.com/esdevries):
|
|
||||||
|
|
||||||
[projekt0n/github-nvim-theme]: https://github.com/projekt0n/github-nvim-theme
|
|
||||||
|
|
||||||
- Add `github-nvim-theme` theme from [projekt0n/github-nvim-theme].
|
|
||||||
|
|
||||||
[BANanaD3V](https://github.com/BANanaD3V):
|
|
||||||
|
|
||||||
- `alpha` is now configured with nix.
|
|
||||||
|
|
||||||
[viicslen](https://github.com/viicslen):
|
|
||||||
|
|
||||||
- Add `intelephense` language server support under
|
|
||||||
`vim.languages.php.lsp.server`
|
|
||||||
|
|
||||||
[Butzist](https://github.com/butzist):
|
|
||||||
|
|
||||||
- Add Helm chart support under `vim.languages.helm`.
|
|
||||||
|
|
|
||||||
|
|
@ -1,185 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
|
||||||
inherit (lib.lists) filter;
|
|
||||||
inherit (lib.strings) optionalString;
|
|
||||||
inherit (lib.types) nullOr submodule listOf str bool;
|
|
||||||
inherit (lib.nvim.types) luaInline;
|
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
|
||||||
|
|
||||||
autocommandType = submodule {
|
|
||||||
options = {
|
|
||||||
enable =
|
|
||||||
mkEnableOption ""
|
|
||||||
// {
|
|
||||||
default = true;
|
|
||||||
description = "Whether to enable this autocommand";
|
|
||||||
};
|
|
||||||
|
|
||||||
event = mkOption {
|
|
||||||
type = nullOr (listOf str);
|
|
||||||
default = null;
|
|
||||||
example = ["BufRead" "BufWritePre"];
|
|
||||||
description = "The event(s) that trigger the autocommand.";
|
|
||||||
};
|
|
||||||
|
|
||||||
pattern = mkOption {
|
|
||||||
type = nullOr (listOf str);
|
|
||||||
default = null;
|
|
||||||
example = ["*.lua" "*.vim"];
|
|
||||||
description = "The file pattern(s) that determine when the autocommand applies).";
|
|
||||||
};
|
|
||||||
|
|
||||||
callback = mkOption {
|
|
||||||
type = nullOr luaInline;
|
|
||||||
default = null;
|
|
||||||
example = literalExpression ''
|
|
||||||
mkLuaInline '''
|
|
||||||
function()
|
|
||||||
print("Saving a Lua file...")
|
|
||||||
end
|
|
||||||
''''
|
|
||||||
'';
|
|
||||||
description = "The file pattern(s) that determine when the autocommand applies.";
|
|
||||||
};
|
|
||||||
|
|
||||||
command = mkOption {
|
|
||||||
type = nullOr str;
|
|
||||||
default = null;
|
|
||||||
description = "Vim command string instead of a Lua function.";
|
|
||||||
};
|
|
||||||
|
|
||||||
group = mkOption {
|
|
||||||
type = nullOr str;
|
|
||||||
default = null;
|
|
||||||
example = "MyAutoCmdGroup";
|
|
||||||
description = "An optional autocommand group to manage related autocommands.";
|
|
||||||
};
|
|
||||||
|
|
||||||
desc = mkOption {
|
|
||||||
type = nullOr str;
|
|
||||||
default = null;
|
|
||||||
example = "Notify when saving a Lua file";
|
|
||||||
description = "A description for the autocommand.";
|
|
||||||
};
|
|
||||||
|
|
||||||
once = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = false;
|
|
||||||
description = "Whether autocommand run only once.";
|
|
||||||
};
|
|
||||||
|
|
||||||
nested = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = false;
|
|
||||||
description = "Whether to allow nested autocommands to trigger.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
autogroupType = submodule {
|
|
||||||
options = {
|
|
||||||
enable =
|
|
||||||
mkEnableOption ""
|
|
||||||
// {
|
|
||||||
default = true;
|
|
||||||
description = "Whether to enable this autogroup";
|
|
||||||
};
|
|
||||||
|
|
||||||
name = mkOption {
|
|
||||||
type = str;
|
|
||||||
example = "MyAutoCmdGroup";
|
|
||||||
description = "The name of the autocommand group.";
|
|
||||||
};
|
|
||||||
|
|
||||||
clear = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
Whether to clear existing autocommands in this group before defining new ones.
|
|
||||||
This helps avoid duplicate autocommands.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cfg = config.vim;
|
|
||||||
in {
|
|
||||||
options.vim = {
|
|
||||||
augroups = mkOption {
|
|
||||||
type = listOf autogroupType;
|
|
||||||
default = [];
|
|
||||||
description = ''
|
|
||||||
A list of Neovim autogroups, which are used to organize and manage related
|
|
||||||
autocommands together. Groups allow multiple autocommands to be cleared
|
|
||||||
or redefined collectively, preventing duplicate definitions.
|
|
||||||
|
|
||||||
Each autogroup consists of a name, a boolean indicating whether to clear
|
|
||||||
existing autocommands, and a list of associated autocommands.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
autocmds = mkOption {
|
|
||||||
type = listOf autocommandType;
|
|
||||||
default = [];
|
|
||||||
description = ''
|
|
||||||
A list of Neovim autocommands to be registered.
|
|
||||||
|
|
||||||
Each entry defines an autocommand, specifying events, patterns, optional
|
|
||||||
callbacks, commands, groups, and execution settings.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
vim = let
|
|
||||||
enabledAutocommands = filter (cmd: cmd.enable) cfg.autocmds;
|
|
||||||
enabledAutogroups = filter (au: au.enable) cfg.augroups;
|
|
||||||
in {
|
|
||||||
luaConfigRC = {
|
|
||||||
augroups = entryAfter ["pluginConfigs"] (optionalString (enabledAutogroups != []) ''
|
|
||||||
local nvf_autogroups = {}
|
|
||||||
for _, group in ipairs(${toLuaObject enabledAutogroups}) do
|
|
||||||
if group.name then
|
|
||||||
nvf_autogroups[group.name] = { clear = group.clear }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for group_name, options in pairs(nvf_autogroups) do
|
|
||||||
vim.api.nvim_create_augroup(group_name, options)
|
|
||||||
end
|
|
||||||
'');
|
|
||||||
|
|
||||||
autocmds = entryAfter ["pluginConfigs"] (optionalString (enabledAutocommands != []) ''
|
|
||||||
local nvf_autocommands = ${toLuaObject enabledAutocommands}
|
|
||||||
for _, autocmd in ipairs(nvf_autocommands) do
|
|
||||||
vim.api.nvim_create_autocmd(
|
|
||||||
autocmd.event,
|
|
||||||
{
|
|
||||||
group = autocmd.group,
|
|
||||||
pattern = autocmd.pattern,
|
|
||||||
buffer = autocmd.buffer,
|
|
||||||
desc = autocmd.desc,
|
|
||||||
callback = autocmd.callback,
|
|
||||||
command = autocmd.command,
|
|
||||||
once = autocmd.once,
|
|
||||||
nested = autocmd.nested
|
|
||||||
}
|
|
||||||
)
|
|
||||||
end
|
|
||||||
'');
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion = builtins.all (cmd: (cmd.command == null || cmd.callback == null)) cfg.autocmds;
|
|
||||||
message = "An autocommand cannot have both 'command' and 'callback' defined at the same time.";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./autocmds.nix
|
|
||||||
./basic.nix
|
./basic.nix
|
||||||
./debug.nix
|
./debug.nix
|
||||||
./highlight.nix
|
./highlight.nix
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
inherit (lib.options) mkEnableOption mkOption literalMD;
|
inherit (lib.options) mkEnableOption mkOption literalMD;
|
||||||
inherit (lib.types) listOf str either attrsOf submodule enum anything int nullOr;
|
inherit (lib.types) listOf str either attrsOf submodule enum anything int nullOr;
|
||||||
inherit (lib.generators) mkLuaInline;
|
inherit (lib.generators) mkLuaInline;
|
||||||
inherit (lib.nvim.types) mkPluginSetupOption luaInline pluginType;
|
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
|
||||||
inherit (lib.nvim.binds) mkMappingOption;
|
inherit (lib.nvim.binds) mkMappingOption;
|
||||||
inherit (lib.nvim.config) mkBool;
|
inherit (lib.nvim.config) mkBool;
|
||||||
|
|
||||||
|
|
@ -118,66 +118,5 @@ in {
|
||||||
scrollDocsUp = mkMappingOption "Scroll docs up [blink.cmp]" "<C-d>";
|
scrollDocsUp = mkMappingOption "Scroll docs up [blink.cmp]" "<C-d>";
|
||||||
scrollDocsDown = mkMappingOption "Scroll docs down [blink.cmp]" "<C-f>";
|
scrollDocsDown = mkMappingOption "Scroll docs down [blink.cmp]" "<C-f>";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourcePlugins = let
|
|
||||||
sourcePluginType = submodule {
|
|
||||||
options = {
|
|
||||||
package = mkOption {
|
|
||||||
type = pluginType;
|
|
||||||
description = ''
|
|
||||||
`blink-cmp` source plugin package.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
module = mkOption {
|
|
||||||
type = str;
|
|
||||||
description = ''
|
|
||||||
Value of {option}`vim.autocomplete.blink-cmp.setupOpts.sources.providers.<name>.module`.
|
|
||||||
|
|
||||||
Should be present in the source's documentation.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enable = mkEnableOption "this source";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
mkOption {
|
|
||||||
type = submodule {
|
|
||||||
freeformType = attrsOf sourcePluginType;
|
|
||||||
options = let
|
|
||||||
defaultSourcePluginOption = name: package: module: {
|
|
||||||
package = mkOption {
|
|
||||||
type = pluginType;
|
|
||||||
default = package;
|
|
||||||
description = ''
|
|
||||||
`blink-cmp` ${name} source plugin package.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
module = mkOption {
|
|
||||||
type = str;
|
|
||||||
default = module;
|
|
||||||
description = ''
|
|
||||||
Value of {option}`vim.autocomplete.blink-cmp.setupOpts.sources.providers.${name}.module`.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enable = mkEnableOption "${name} source";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
# emoji completion after :
|
|
||||||
emoji = defaultSourcePluginOption "emoji" "blink-emoji-nvim" "blink-emoji";
|
|
||||||
# spelling suggestions as completions
|
|
||||||
spell = defaultSourcePluginOption "spell" "blink-cmp-spell" "blink-cmp-spell";
|
|
||||||
# words from nearby files
|
|
||||||
ripgrep = defaultSourcePluginOption "ripgrep" "blink-ripgrep-nvim" "blink-ripgrep";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
default = {};
|
|
||||||
description = ''
|
|
||||||
`blink.cmp` sources.
|
|
||||||
|
|
||||||
Attribute names must be source names used in {option}`vim.autocomplete.blink-cmp.setupOpts.sources.default`.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
friendly-snippets.enable = mkEnableOption "friendly-snippets for blink to source from automatically";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.strings) optionalString;
|
inherit (lib.strings) optionalString;
|
||||||
inherit (lib.generators) mkLuaInline;
|
inherit (lib.generators) mkLuaInline;
|
||||||
inherit (lib.attrsets) attrValues filterAttrs;
|
|
||||||
inherit (lib.lists) map optional;
|
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (builtins) concatStringsSep typeOf tryEval attrNames mapAttrs;
|
inherit (builtins) concatStringsSep typeOf tryEval attrNames mapAttrs;
|
||||||
|
|
||||||
|
|
@ -21,12 +19,9 @@
|
||||||
else if (plugin ? pname && (tryEval plugin.pname).success)
|
else if (plugin ? pname && (tryEval plugin.pname).success)
|
||||||
then plugin.pname
|
then plugin.pname
|
||||||
else plugin.name;
|
else plugin.name;
|
||||||
|
|
||||||
enabledBlinkSources = filterAttrs (_source: definition: definition.enable) cfg.sourcePlugins;
|
|
||||||
blinkSourcePlugins = map (definition: definition.package) (attrValues enabledBlinkSources);
|
|
||||||
in {
|
in {
|
||||||
vim = mkIf cfg.enable {
|
vim = mkIf cfg.enable {
|
||||||
startPlugins = ["blink-compat"] ++ blinkSourcePlugins ++ (optional cfg.friendly-snippets.enable "friendly-snippets");
|
startPlugins = ["blink-compat"];
|
||||||
lazy.plugins = {
|
lazy.plugins = {
|
||||||
blink-cmp = {
|
blink-cmp = {
|
||||||
package = "blink-cmp";
|
package = "blink-cmp";
|
||||||
|
|
@ -37,14 +32,12 @@ in {
|
||||||
#
|
#
|
||||||
# event = ["InsertEnter" "CmdlineEnter"];
|
# event = ["InsertEnter" "CmdlineEnter"];
|
||||||
|
|
||||||
after =
|
after = ''
|
||||||
# lua
|
${optionalString config.vim.lazy.enable
|
||||||
''
|
(concatStringsSep "\n" (map
|
||||||
${optionalString config.vim.lazy.enable
|
(package: "require('lz.n').trigger_load(${toLuaObject (getPluginName package)})")
|
||||||
(concatStringsSep "\n" (map
|
cmpCfg.sourcePlugins))}
|
||||||
(package: "require('lz.n').trigger_load(${toLuaObject (getPluginName package)})")
|
'';
|
||||||
cmpCfg.sourcePlugins))}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -52,26 +45,13 @@ in {
|
||||||
enableSharedCmpSources = true;
|
enableSharedCmpSources = true;
|
||||||
blink-cmp.setupOpts = {
|
blink-cmp.setupOpts = {
|
||||||
sources = {
|
sources = {
|
||||||
default =
|
default = ["lsp" "path" "snippets" "buffer"] ++ (attrNames cmpCfg.sources);
|
||||||
[
|
|
||||||
"lsp"
|
|
||||||
"path"
|
|
||||||
"snippets"
|
|
||||||
"buffer"
|
|
||||||
]
|
|
||||||
++ (attrNames cmpCfg.sources)
|
|
||||||
++ (attrNames enabledBlinkSources);
|
|
||||||
providers =
|
providers =
|
||||||
mapAttrs (name: _: {
|
mapAttrs (name: _: {
|
||||||
inherit name;
|
inherit name;
|
||||||
module = "blink.compat.source";
|
module = "blink.compat.source";
|
||||||
})
|
})
|
||||||
cmpCfg.sources
|
cmpCfg.sources;
|
||||||
// (mapAttrs (name: definition: {
|
|
||||||
inherit name;
|
|
||||||
inherit (definition) module;
|
|
||||||
})
|
|
||||||
enabledBlinkSources);
|
|
||||||
};
|
};
|
||||||
snippets = mkIf config.vim.snippets.luasnip.enable {
|
snippets = mkIf config.vim.snippets.luasnip.enable {
|
||||||
preset = "luasnip";
|
preset = "luasnip";
|
||||||
|
|
@ -87,18 +67,16 @@ in {
|
||||||
${mappings.next} = [
|
${mappings.next} = [
|
||||||
"select_next"
|
"select_next"
|
||||||
"snippet_forward"
|
"snippet_forward"
|
||||||
(mkLuaInline
|
(mkLuaInline ''
|
||||||
# lua
|
function(cmp)
|
||||||
''
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
function(cmp)
|
has_words_before = col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
|
||||||
has_words_before = col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
|
||||||
|
|
||||||
if has_words_before then
|
if has_words_before then
|
||||||
return cmp.show()
|
return cmp.show()
|
||||||
end
|
|
||||||
end
|
end
|
||||||
'')
|
end
|
||||||
|
'')
|
||||||
"fallback"
|
"fallback"
|
||||||
];
|
];
|
||||||
${mappings.previous} = [
|
${mappings.previous} = [
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,7 @@
|
||||||
{lib, ...}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
inherit (lib.types) listOf attrsOf anything nullOr enum;
|
|
||||||
in {
|
in {
|
||||||
options.vim.dashboard.alpha = {
|
options.vim.dashboard.alpha = {
|
||||||
enable = mkEnableOption "fast and fully programmable greeter for neovim [alpha.nvim]";
|
enable = mkEnableOption "fast and fully programmable greeter for neovim [alpha.mvim]";
|
||||||
theme = mkOption {
|
|
||||||
type = nullOr (enum ["dashboard" "startify" "theta"]);
|
|
||||||
default = "dashboard";
|
|
||||||
description = "Alpha default theme to use";
|
|
||||||
};
|
|
||||||
layout = mkOption {
|
|
||||||
type = listOf (attrsOf anything);
|
|
||||||
default = [];
|
|
||||||
description = "Alpha dashboard layout";
|
|
||||||
};
|
|
||||||
opts = mkOption {
|
|
||||||
type = attrsOf anything;
|
|
||||||
default = {};
|
|
||||||
description = "Optional global options";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,8 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.nvim.dag) entryAnywhere;
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
|
||||||
|
|
||||||
cfg = config.vim.dashboard.alpha;
|
cfg = config.vim.dashboard.alpha;
|
||||||
themeDefined = cfg.theme != null;
|
|
||||||
layoutDefined = cfg.layout != [];
|
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
vim.startPlugins = [
|
vim.startPlugins = [
|
||||||
|
|
@ -17,30 +14,207 @@ in {
|
||||||
"nvim-web-devicons"
|
"nvim-web-devicons"
|
||||||
];
|
];
|
||||||
|
|
||||||
vim.pluginRC.alpha = let
|
# the entire credit for this dashboard configuration to https://github.com/Rishabh672003
|
||||||
setupOpts =
|
# honestly, excellent work
|
||||||
if themeDefined
|
vim.pluginRC.alpha = entryAnywhere ''
|
||||||
then lib.generators.mkLuaInline "require'alpha.themes.${cfg.theme}'.config"
|
local alpha = require("alpha")
|
||||||
else {
|
local plenary_path = require("plenary.path")
|
||||||
inherit (cfg) layout opts;
|
local dashboard = require("alpha.themes.dashboard")
|
||||||
};
|
local cdir = vim.fn.getcwd()
|
||||||
in ''
|
local if_nil = vim.F.if_nil
|
||||||
require('alpha').setup(${toLuaObject setupOpts})
|
|
||||||
'';
|
|
||||||
|
|
||||||
assertions = [
|
local nvim_web_devicons = {
|
||||||
{
|
enabled = true,
|
||||||
assertion = themeDefined || layoutDefined;
|
highlight = true,
|
||||||
message = ''
|
|
||||||
One of 'theme' or 'layout' should be defined in Alpha configuration.
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
{
|
|
||||||
assertion = !(themeDefined && layoutDefined);
|
local function get_extension(fn)
|
||||||
message = ''
|
local match = fn:match("^.+(%..+)$")
|
||||||
'theme' and 'layout' cannot be defined at the same time.
|
local ext = ""
|
||||||
'';
|
if match ~= nil then
|
||||||
|
ext = match:sub(2)
|
||||||
|
end
|
||||||
|
return ext
|
||||||
|
end
|
||||||
|
|
||||||
|
local function icon(fn)
|
||||||
|
local nwd = require("nvim-web-devicons")
|
||||||
|
local ext = get_extension(fn)
|
||||||
|
return nwd.get_icon(fn, ext, { default = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
local function file_button(fn, sc, short_fn)
|
||||||
|
short_fn = short_fn or fn
|
||||||
|
local ico_txt
|
||||||
|
local fb_hl = {}
|
||||||
|
|
||||||
|
if nvim_web_devicons.enabled then
|
||||||
|
local ico, hl = icon(fn)
|
||||||
|
local hl_option_type = type(nvim_web_devicons.highlight)
|
||||||
|
if hl_option_type == "boolean" then
|
||||||
|
if hl and nvim_web_devicons.highlight then
|
||||||
|
table.insert(fb_hl, { hl, 0, 3 })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if hl_option_type == "string" then
|
||||||
|
table.insert(fb_hl, { nvim_web_devicons.highlight, 0, 3 })
|
||||||
|
end
|
||||||
|
ico_txt = ico .. " "
|
||||||
|
else
|
||||||
|
ico_txt = ""
|
||||||
|
end
|
||||||
|
local file_button_el = dashboard.button(sc, ico_txt .. short_fn, "<cmd>e " .. fn .. " <CR>")
|
||||||
|
local fn_start = short_fn:match(".*[/\\]")
|
||||||
|
if fn_start ~= nil then
|
||||||
|
table.insert(fb_hl, { "Comment", #ico_txt - 2, #fn_start + #ico_txt })
|
||||||
|
end
|
||||||
|
file_button_el.opts.hl = fb_hl
|
||||||
|
return file_button_el
|
||||||
|
end
|
||||||
|
|
||||||
|
local default_mru_ignore = { "gitcommit" }
|
||||||
|
|
||||||
|
local mru_opts = {
|
||||||
|
ignore = function(path, ext)
|
||||||
|
return (string.find(path, "COMMIT_EDITMSG")) or (vim.tbl_contains(default_mru_ignore, ext))
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
];
|
|
||||||
|
--- @param start number
|
||||||
|
--- @param cwd string optional
|
||||||
|
--- @param items_number number optional number of items to generate, default = 10
|
||||||
|
local function mru(start, cwd, items_number, opts)
|
||||||
|
opts = opts or mru_opts
|
||||||
|
items_number = if_nil(items_number, 15)
|
||||||
|
|
||||||
|
local oldfiles = {}
|
||||||
|
for _, v in pairs(vim.v.oldfiles) do
|
||||||
|
if #oldfiles == items_number then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
local cwd_cond
|
||||||
|
if not cwd then
|
||||||
|
cwd_cond = true
|
||||||
|
else
|
||||||
|
cwd_cond = vim.startswith(v, cwd)
|
||||||
|
end
|
||||||
|
local ignore = (opts.ignore and opts.ignore(v, get_extension(v))) or false
|
||||||
|
if (vim.fn.filereadable(v) == 1) and cwd_cond and not ignore then
|
||||||
|
oldfiles[#oldfiles + 1] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local target_width = 35
|
||||||
|
|
||||||
|
local tbl = {}
|
||||||
|
for i, fn in ipairs(oldfiles) do
|
||||||
|
local short_fn
|
||||||
|
if cwd then
|
||||||
|
short_fn = vim.fn.fnamemodify(fn, ":.")
|
||||||
|
else
|
||||||
|
short_fn = vim.fn.fnamemodify(fn, ":~")
|
||||||
|
end
|
||||||
|
|
||||||
|
if #short_fn > target_width then
|
||||||
|
short_fn = plenary_path.new(short_fn):shorten(1, { -2, -1 })
|
||||||
|
if #short_fn > target_width then
|
||||||
|
short_fn = plenary_path.new(short_fn):shorten(1, { -1 })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local shortcut = tostring(i + start - 1)
|
||||||
|
|
||||||
|
local file_button_el = file_button(fn, shortcut, short_fn)
|
||||||
|
tbl[i] = file_button_el
|
||||||
|
end
|
||||||
|
return {
|
||||||
|
type = "group",
|
||||||
|
val = tbl,
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local default_header = {
|
||||||
|
type = "text",
|
||||||
|
val = {
|
||||||
|
|
||||||
|
[[███ ██ ███████ ██████ ██ ██ ██ ███ ███]],
|
||||||
|
[[████ ██ ██ ██ ██ ██ ██ ██ ████ ████]],
|
||||||
|
[[██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ████ ██]],
|
||||||
|
[[██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██]],
|
||||||
|
[[██ ████ ███████ ██████ ████ ██ ██ ██]],
|
||||||
|
|
||||||
|
-- [[ __ ]],
|
||||||
|
-- [[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
|
||||||
|
-- [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
|
||||||
|
-- [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
|
||||||
|
-- [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
|
||||||
|
-- [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
position = "center",
|
||||||
|
hl = "Type",
|
||||||
|
-- wrap = "overflow";
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local section_mru = {
|
||||||
|
type = "group",
|
||||||
|
val = {
|
||||||
|
{
|
||||||
|
type = "text",
|
||||||
|
val = "Recent files",
|
||||||
|
opts = {
|
||||||
|
hl = "SpecialComment",
|
||||||
|
shrink_margin = false,
|
||||||
|
position = "center",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ type = "padding", val = 1 },
|
||||||
|
{
|
||||||
|
type = "group",
|
||||||
|
val = function()
|
||||||
|
return { mru(0, cdir) }
|
||||||
|
end,
|
||||||
|
opts = { shrink_margin = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local buttons = {
|
||||||
|
type = "group",
|
||||||
|
val = {
|
||||||
|
{ type = "text", val = "Quick links", opts = { hl = "SpecialComment", position = "center" } },
|
||||||
|
{ type = "padding", val = 1 },
|
||||||
|
-- TODO: buttons should be added based on whether or not the relevant plugin is available
|
||||||
|
dashboard.button("e", " New file", "<cmd>ene<CR>"), -- available all the time
|
||||||
|
dashboard.button("SPC F", " Find file"), -- telescope
|
||||||
|
dashboard.button("SPC ff", " Live grep"), -- telescope
|
||||||
|
dashboard.button("SPC p", " Projects"), -- any project
|
||||||
|
dashboard.button("q", " Quit", "<cmd>qa<CR>"), -- available all the time
|
||||||
|
},
|
||||||
|
position = "center",
|
||||||
|
}
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
layout = {
|
||||||
|
{ type = "padding", val = 2 },
|
||||||
|
default_header,
|
||||||
|
{ type = "padding", val = 2 },
|
||||||
|
section_mru,
|
||||||
|
{ type = "padding", val = 2 },
|
||||||
|
buttons,
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
margin = 5,
|
||||||
|
setup = function()
|
||||||
|
vim.cmd([[
|
||||||
|
autocmd alpha_temp DirChanged * lua require('alpha').redraw()
|
||||||
|
]])
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
alpha.setup(config)
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
|
||||||
inherit (lib.types) package;
|
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.cue;
|
|
||||||
in {
|
|
||||||
options.vim.languages.cue = {
|
|
||||||
enable = mkEnableOption "CUE language support";
|
|
||||||
|
|
||||||
treesitter = {
|
|
||||||
enable = mkEnableOption "CUE treesitter" // {default = config.vim.languages.enableTreesitter;};
|
|
||||||
|
|
||||||
package = mkGrammarOption pkgs "cue";
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
enable = mkEnableOption "CUE LSP support" // {default = config.vim.languages.enableLSP;};
|
|
||||||
|
|
||||||
package = mkOption {
|
|
||||||
type = package;
|
|
||||||
default = pkgs.cue;
|
|
||||||
description = "cue lsp implementation";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
|
||||||
(mkIf cfg.treesitter.enable {
|
|
||||||
vim.treesitter.enable = true;
|
|
||||||
vim.treesitter.grammars = [cfg.treesitter.package];
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf cfg.lsp.enable {
|
|
||||||
vim.lsp.lspconfig.enable = true;
|
|
||||||
vim.lsp.lspconfig.sources.cue-lsp = ''
|
|
||||||
lspconfig.cue.setup {
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = default_on_attach,
|
|
||||||
cmd = {"${cfg.lsp.package}/bin/cue", "lsp"},
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
@ -5,7 +5,6 @@ in {
|
||||||
./asm.nix
|
./asm.nix
|
||||||
./astro.nix
|
./astro.nix
|
||||||
./bash.nix
|
./bash.nix
|
||||||
./cue.nix
|
|
||||||
./dart.nix
|
./dart.nix
|
||||||
./clang.nix
|
./clang.nix
|
||||||
./css.nix
|
./css.nix
|
||||||
|
|
@ -13,7 +12,6 @@ in {
|
||||||
./gleam.nix
|
./gleam.nix
|
||||||
./go.nix
|
./go.nix
|
||||||
./hcl.nix
|
./hcl.nix
|
||||||
./helm.nix
|
|
||||||
./kotlin.nix
|
./kotlin.nix
|
||||||
./html.nix
|
./html.nix
|
||||||
./haskell.nix
|
./haskell.nix
|
||||||
|
|
@ -41,7 +39,6 @@ in {
|
||||||
./nu.nix
|
./nu.nix
|
||||||
./odin.nix
|
./odin.nix
|
||||||
./wgsl.nix
|
./wgsl.nix
|
||||||
./yaml.nix
|
|
||||||
./ruby.nix
|
./ruby.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (builtins) attrNames;
|
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
|
||||||
inherit (lib.lists) isList;
|
|
||||||
inherit (lib.types) enum either listOf package str;
|
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
|
||||||
inherit (lib.nvim.lua) expToLua;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.helm;
|
|
||||||
yamlCfg = config.vim.languages.yaml;
|
|
||||||
|
|
||||||
helmCmd =
|
|
||||||
if isList cfg.lsp.package
|
|
||||||
then cfg.lsp.package
|
|
||||||
else ["${cfg.lsp.package}/bin/helm_ls" "serve"];
|
|
||||||
yamlCmd =
|
|
||||||
if isList yamlCfg.lsp.package
|
|
||||||
then builtins.elemAt yamlCfg.lsp.package 0
|
|
||||||
else "${yamlCfg.lsp.package}/bin/yaml-language-server";
|
|
||||||
|
|
||||||
defaultServer = "helm-ls";
|
|
||||||
servers = {
|
|
||||||
helm-ls = {
|
|
||||||
package = pkgs.helm-ls;
|
|
||||||
lspConfig = ''
|
|
||||||
lspconfig.helm_ls.setup {
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = default_on_attach,
|
|
||||||
cmd = ${expToLua helmCmd},
|
|
||||||
settings = {
|
|
||||||
['helm-ls'] = {
|
|
||||||
yamlls = {
|
|
||||||
path = "${yamlCmd}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
options.vim.languages.helm = {
|
|
||||||
enable = mkEnableOption "Helm language support";
|
|
||||||
|
|
||||||
treesitter = {
|
|
||||||
enable = mkEnableOption "Helm treesitter" // {default = config.vim.languages.enableTreesitter;};
|
|
||||||
package = mkGrammarOption pkgs "helm";
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
enable = mkEnableOption "Helm LSP support" // {default = config.vim.languages.enableLSP;};
|
|
||||||
|
|
||||||
server = mkOption {
|
|
||||||
description = "Helm LSP server to use";
|
|
||||||
type = enum (attrNames servers);
|
|
||||||
default = defaultServer;
|
|
||||||
};
|
|
||||||
|
|
||||||
package = mkOption {
|
|
||||||
description = "Helm LSP server package";
|
|
||||||
type = either package (listOf str);
|
|
||||||
default = servers.${cfg.lsp.server}.package;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
|
||||||
(mkIf cfg.treesitter.enable {
|
|
||||||
vim.treesitter.enable = true;
|
|
||||||
vim.treesitter.grammars = [cfg.treesitter.package];
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf cfg.lsp.enable {
|
|
||||||
vim.lsp.lspconfig.enable = true;
|
|
||||||
vim.lsp.lspconfig.sources.helm-lsp = servers.${cfg.lsp.server}.lspConfig;
|
|
||||||
})
|
|
||||||
|
|
||||||
{
|
|
||||||
# Enables filetype detection
|
|
||||||
vim.startPlugins = [pkgs.vimPlugins.vim-helm];
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
@ -121,6 +121,8 @@
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixpkgs-fmt = null; # removed
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["statix" "deadnix"];
|
defaultDiagnosticsProvider = ["statix" "deadnix"];
|
||||||
|
|
@ -217,6 +219,7 @@ in {
|
||||||
${concatStringsSep ", " (attrNames formats)}
|
${concatStringsSep ", " (attrNames formats)}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
assertion = cfg.lsp.server != "rnix";
|
assertion = cfg.lsp.server != "rnix";
|
||||||
message = ''
|
message = ''
|
||||||
|
|
|
||||||
|
|
@ -64,26 +64,6 @@
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
intelephense = {
|
|
||||||
package = pkgs.intelephense;
|
|
||||||
lspConfig = ''
|
|
||||||
lspconfig.intelephense.setup{
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = default_on_attach,
|
|
||||||
cmd = ${
|
|
||||||
if isList cfg.lsp.package
|
|
||||||
then expToLua cfg.lsp.package
|
|
||||||
else ''
|
|
||||||
{
|
|
||||||
"${getExe cfg.lsp.package}",
|
|
||||||
"--stdio"
|
|
||||||
},
|
|
||||||
''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.php = {
|
options.vim.languages.php = {
|
||||||
|
|
|
||||||
|
|
@ -62,15 +62,6 @@ in {
|
||||||
description = "Options to pass to rust analyzer";
|
description = "Options to pass to rust analyzer";
|
||||||
type = str;
|
type = str;
|
||||||
default = "";
|
default = "";
|
||||||
example = ''
|
|
||||||
['rust-analyzer'] = {
|
|
||||||
cargo = {allFeature = true},
|
|
||||||
checkOnSave = true,
|
|
||||||
procMacro = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -151,9 +142,6 @@ in {
|
||||||
then expToLua cfg.lsp.package
|
then expToLua cfg.lsp.package
|
||||||
else ''{"${cfg.lsp.package}/bin/rust-analyzer"}''
|
else ''{"${cfg.lsp.package}/bin/rust-analyzer"}''
|
||||||
},
|
},
|
||||||
default_settings = {
|
|
||||||
${cfg.lsp.opts}
|
|
||||||
},
|
|
||||||
on_attach = function(client, bufnr)
|
on_attach = function(client, bufnr)
|
||||||
default_on_attach(client, bufnr)
|
default_on_attach(client, bufnr)
|
||||||
local opts = { noremap=true, silent=true, buffer = bufnr }
|
local opts = { noremap=true, silent=true, buffer = bufnr }
|
||||||
|
|
|
||||||
|
|
@ -1,85 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (builtins) attrNames;
|
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
|
||||||
inherit (lib.lists) isList;
|
|
||||||
inherit (lib.types) enum either listOf package str;
|
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
|
||||||
inherit (lib.nvim.lua) expToLua;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.yaml;
|
|
||||||
|
|
||||||
onAttach =
|
|
||||||
if config.vim.languages.helm.lsp.enable
|
|
||||||
then ''
|
|
||||||
on_attach = function(client, bufnr)
|
|
||||||
local filetype = vim.bo[bufnr].filetype
|
|
||||||
if filetype == "helm" then
|
|
||||||
client.stop()
|
|
||||||
end
|
|
||||||
end''
|
|
||||||
else "on_attach = default_on_attach";
|
|
||||||
|
|
||||||
defaultServer = "yaml-language-server";
|
|
||||||
servers = {
|
|
||||||
yaml-language-server = {
|
|
||||||
package = pkgs.nodePackages.yaml-language-server;
|
|
||||||
lspConfig = ''
|
|
||||||
|
|
||||||
|
|
||||||
lspconfig.yamlls.setup {
|
|
||||||
capabilities = capabilities,
|
|
||||||
${onAttach},
|
|
||||||
cmd = ${
|
|
||||||
if isList cfg.lsp.package
|
|
||||||
then expToLua cfg.lsp.package
|
|
||||||
else ''{"${cfg.lsp.package}/bin/yaml-language-server", "--stdio"}''
|
|
||||||
},
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
options.vim.languages.yaml = {
|
|
||||||
enable = mkEnableOption "YAML language support";
|
|
||||||
|
|
||||||
treesitter = {
|
|
||||||
enable = mkEnableOption "YAML treesitter" // {default = config.vim.languages.enableTreesitter;};
|
|
||||||
|
|
||||||
package = mkGrammarOption pkgs "yaml";
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
enable = mkEnableOption "YAML LSP support" // {default = config.vim.languages.enableLSP;};
|
|
||||||
|
|
||||||
server = mkOption {
|
|
||||||
type = enum (attrNames servers);
|
|
||||||
default = defaultServer;
|
|
||||||
description = "YAML LSP server to use";
|
|
||||||
};
|
|
||||||
|
|
||||||
package = mkOption {
|
|
||||||
type = either package (listOf str);
|
|
||||||
default = servers.${cfg.lsp.server}.package;
|
|
||||||
description = "YAML LSP server package";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
|
||||||
(mkIf cfg.treesitter.enable {
|
|
||||||
vim.treesitter.enable = true;
|
|
||||||
vim.treesitter.grammars = [cfg.treesitter.package];
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf cfg.lsp.enable {
|
|
||||||
vim.lsp.lspconfig.enable = true;
|
|
||||||
vim.lsp.lspconfig.sources.yaml-lsp = servers.${cfg.lsp.server}.lspConfig;
|
|
||||||
})
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
@ -57,8 +57,8 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
mappings = {
|
mappings = {
|
||||||
viewToggle = mkMappingOption "Open or close the docs view panel" "<leader>lvt";
|
viewToggle = mkMappingOption "Open or close the docs view panel" "lvt";
|
||||||
viewUpdate = mkMappingOption "Manually update the docs view panel" "<leader>lvu";
|
viewUpdate = mkMappingOption "Manually update the docs view panel" "lvu";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,13 @@
|
||||||
mappings = addDescriptionsToMappings cfg.otter-nvim.mappings mappingDefinitions;
|
mappings = addDescriptionsToMappings cfg.otter-nvim.mappings mappingDefinitions;
|
||||||
in {
|
in {
|
||||||
config = mkIf (cfg.enable && cfg.otter-nvim.enable) {
|
config = mkIf (cfg.enable && cfg.otter-nvim.enable) {
|
||||||
warnings = [
|
assertions = [
|
||||||
# TODO: remove warning when we update to nvim 0.11
|
{
|
||||||
(mkIf config.vim.utility.ccc.enable ''
|
assertion = !config.vim.utility.ccc.enable;
|
||||||
ccc and otter occasionally have small conflicts that will disappear with nvim 0.11.
|
message = ''
|
||||||
In the meantime, otter handles it by throwing a warning, but both plugins will work.
|
ccc and otter have a breaking conflict. It's been reported upstream. Until it's fixed, disable one of them
|
||||||
'')
|
'';
|
||||||
|
}
|
||||||
];
|
];
|
||||||
vim = {
|
vim = {
|
||||||
startPlugins = ["otter-nvim"];
|
startPlugins = ["otter-nvim"];
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
{lib, ...}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.types) nullOr str bool;
|
||||||
inherit (lib.modules) mkRenamedOptionModule;
|
inherit (lib) mkEnableOption mkOption types mkRenamedOptionModule;
|
||||||
inherit (lib.strings) isString;
|
|
||||||
inherit (lib.types) nullOr str bool int enum listOf either;
|
|
||||||
inherit (lib.generators) mkLuaInline;
|
|
||||||
inherit (lib.nvim.types) luaInline mkPluginSetupOption;
|
|
||||||
in {
|
in {
|
||||||
imports = let
|
imports = let
|
||||||
renameSetupOpt = oldPath: newPath:
|
renameSetupOpt = oldPath: newPath:
|
||||||
|
|
@ -54,100 +50,68 @@ in {
|
||||||
usePicker = mkOption {
|
usePicker = mkOption {
|
||||||
type = bool;
|
type = bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = "Whether or not we should use dressing.nvim to build a session picker UI";
|
||||||
Whether we should use `dressing.nvim` to build a session picker UI
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
setupOpts = mkPluginSetupOption "which-key" {
|
setupOpts = {
|
||||||
path_replacer = mkOption {
|
path_replacer = mkOption {
|
||||||
type = str;
|
type = types.str;
|
||||||
default = "__";
|
default = "__";
|
||||||
description = ''
|
description = "The character to which the path separator will be replaced for session files";
|
||||||
The character to which the path separator will be replaced for session files
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
colon_replacer = mkOption {
|
colon_replacer = mkOption {
|
||||||
type = str;
|
type = types.str;
|
||||||
default = "++";
|
default = "++";
|
||||||
description = ''
|
description = "The character to which the colon symbol will be replaced for session files";
|
||||||
The character to which the colon symbol will be replaced for session files
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
autoload_mode = mkOption {
|
autoload_mode = mkOption {
|
||||||
type = either (enum ["Disabled" "CurrentDir" "LastSession"]) luaInline;
|
type = types.enum ["Disabled" "CurrentDir" "LastSession"];
|
||||||
# Variable 'sm' is defined in the pluginRC of nvim-session-manager. The
|
|
||||||
# definition is as follows: `local sm = require('session_manager.config')`
|
|
||||||
apply = val:
|
|
||||||
if isString val
|
|
||||||
then mkLuaInline "sm.AutoloadMode.${val}"
|
|
||||||
else val;
|
|
||||||
default = "LastSession";
|
default = "LastSession";
|
||||||
description = ''
|
description = "Define what to do when Neovim is started without arguments. Possible values: Disabled, CurrentDir, LastSession";
|
||||||
Define what to do when Neovim is started without arguments.
|
|
||||||
|
|
||||||
Takes either one of `"Disabled"`, `"CurrentDir"`, `"LastSession` in which case the value
|
|
||||||
will be inserted into `sm.AutoloadMode.<value>`, or an inline Lua value.
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
max_path_length = mkOption {
|
max_path_length = mkOption {
|
||||||
type = nullOr int;
|
type = types.nullOr types.int;
|
||||||
default = 80;
|
default = 80;
|
||||||
description = ''
|
description = "Shorten the display path if length exceeds this threshold. Use 0 if don't want to shorten the path at all";
|
||||||
Shorten the display path if length exceeds this threshold.
|
|
||||||
|
|
||||||
Use `0` if don't want to shorten the path at all
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
autosave_last_session = mkOption {
|
autosave_last_session = mkOption {
|
||||||
type = bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = "Automatically save last session on exit and on session switch";
|
||||||
Automatically save last session on exit and on session switch
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
autosave_ignore_not_normal = mkOption {
|
autosave_ignore_not_normal = mkOption {
|
||||||
type = bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = "Plugin will not save a session when no buffers are opened, or all of them aren't writable or listed";
|
||||||
Plugin will not save a session when no buffers are opened, or all of them are
|
|
||||||
not writable or listed
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
autosave_ignore_dirs = mkOption {
|
autosave_ignore_dirs = mkOption {
|
||||||
type = listOf str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
description = "A list of directories where the session will not be autosaved";
|
description = "A list of directories where the session will not be autosaved";
|
||||||
};
|
};
|
||||||
|
|
||||||
autosave_ignore_filetypes = mkOption {
|
autosave_ignore_filetypes = mkOption {
|
||||||
type = listOf str;
|
type = types.listOf types.str;
|
||||||
default = ["gitcommit"];
|
default = ["gitcommit"];
|
||||||
description = ''
|
description = "All buffers of these file types will be closed before the session is saved";
|
||||||
All buffers of these file types will be closed before the session is saved
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
autosave_ignore_buftypes = mkOption {
|
autosave_ignore_buftypes = mkOption {
|
||||||
type = listOf str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
description = ''
|
description = "All buffers of these buffer types will be closed before the session is saved";
|
||||||
All buffers of these buffer types will be closed before the session is saved
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
autosave_only_in_session = mkOption {
|
autosave_only_in_session = mkOption {
|
||||||
type = bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = "Always autosaves session. If true, only autosaves after a session is active";
|
||||||
Always autosaves session. If `true`, only autosaves after a session is active
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -21,17 +21,6 @@
|
||||||
"codedark"
|
"codedark"
|
||||||
"dracula"
|
"dracula"
|
||||||
"everforest"
|
"everforest"
|
||||||
"github_dark"
|
|
||||||
"github_light"
|
|
||||||
"github_dark_dimmed"
|
|
||||||
"github_dark_default"
|
|
||||||
"github_light_default"
|
|
||||||
"github_dark_high_contrast"
|
|
||||||
"github_light_high_contrast"
|
|
||||||
"github_dark_colorblind"
|
|
||||||
"github_light_colorblind"
|
|
||||||
"github_dark_tritanopia"
|
|
||||||
"github_light_tritanopia"
|
|
||||||
"gruvbox"
|
"gruvbox"
|
||||||
"gruvbox_dark"
|
"gruvbox_dark"
|
||||||
"gruvbox_light"
|
"gruvbox_light"
|
||||||
|
|
|
||||||
|
|
@ -195,20 +195,4 @@ in {
|
||||||
vim.cmd.colorscheme("nord")
|
vim.cmd.colorscheme("nord")
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
github = {
|
|
||||||
setup = {
|
|
||||||
style ? "dark",
|
|
||||||
transparent ? false,
|
|
||||||
...
|
|
||||||
}: ''
|
|
||||||
require('github-theme').setup({
|
|
||||||
options = {
|
|
||||||
transparent = ${boolToString transparent},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.cmd[[colorscheme github_${style}]]
|
|
||||||
'';
|
|
||||||
styles = ["dark" "light" "dark_dimmed" "dark_default" "light_default" "dark_high_contrast" "light_high_contrast" "dark_colorblind" "light_colorblind" "dark_tritanopia" "light_tritanopia"];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,20 +4,22 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib.modules) mkIf;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
|
||||||
inherit (lib.nvim.dag) entryAnywhere;
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
|
|
||||||
cfg = config.vim.ui.illuminate;
|
cfg = config.vim.ui.illuminate;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
vim = {
|
vim.startPlugins = ["vim-illuminate"];
|
||||||
startPlugins = ["vim-illuminate"];
|
|
||||||
|
|
||||||
# vim-illuminate does not have a setup function. It is instead called 'configure'
|
vim.pluginRC.vim-illuminate = entryAnywhere ''
|
||||||
# and does what you expect from a setup function. Wild.
|
require('illuminate').configure({
|
||||||
pluginRC.vim-illuminate = entryAnywhere ''
|
filetypes_denylist = {
|
||||||
require('illuminate').configure(${toLuaObject cfg.setupOpts})
|
'dirvish',
|
||||||
'';
|
'fugitive',
|
||||||
};
|
'NvimTree',
|
||||||
|
'TelescopePrompt',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,7 @@
|
||||||
{lib, ...}: let
|
{lib, ...}: let
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
inherit (lib.types) listOf str;
|
|
||||||
inherit (lib.nvim.types) mkPluginSetupOption;
|
|
||||||
in {
|
in {
|
||||||
options.vim.ui.illuminate = {
|
options.vim.ui.illuminate = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption "automatically highlight other uses of the word under the cursor [vim-illuminate]";
|
||||||
automatically highlight other uses of the word under the cursor [vim-illuminate]
|
|
||||||
'';
|
|
||||||
|
|
||||||
setupOpts = mkPluginSetupOption "vim-illuminate" {
|
|
||||||
filetypes_denylist = mkOption {
|
|
||||||
type = listOf str;
|
|
||||||
default = ["dirvish" "fugitive" "NvimTree" "TelescopePrompt"];
|
|
||||||
description = "Filetypes to not illuminate, this overrides `filetypes_allowlist`";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,14 @@
|
||||||
./binds
|
./binds
|
||||||
./ccc
|
./ccc
|
||||||
./diffview
|
./diffview
|
||||||
./direnv
|
|
||||||
./fzf-lua
|
./fzf-lua
|
||||||
./gestures
|
./gestures
|
||||||
./harpoon
|
|
||||||
./icon-picker
|
./icon-picker
|
||||||
./images
|
./images
|
||||||
./leetcode-nvim
|
./leetcode-nvim
|
||||||
./mkdir
|
|
||||||
./motion
|
./motion
|
||||||
./multicursors
|
./multicursors
|
||||||
./new-file-template
|
./new-file-template
|
||||||
./nix-develop
|
|
||||||
./outline
|
./outline
|
||||||
./preview
|
./preview
|
||||||
./surround
|
./surround
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
|
|
||||||
cfg = config.vim.utility.direnv;
|
|
||||||
in {
|
|
||||||
vim = mkIf cfg.enable {
|
|
||||||
startPlugins = ["direnv-vim"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./config.nix
|
|
||||||
./direnv.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
inherit (lib.options) mkEnableOption;
|
|
||||||
in {
|
|
||||||
options.vim.utility.direnv.enable = mkEnableOption "syncing nvim shell environment with direnv's using `direnv.vim`";
|
|
||||||
}
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.binds) pushDownDefault mkKeymap;
|
|
||||||
|
|
||||||
cfg = config.vim.navigation.harpoon;
|
|
||||||
|
|
||||||
keys = cfg.mappings;
|
|
||||||
inherit (options.vim.navigation.harpoon) mappings;
|
|
||||||
in {
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim = {
|
|
||||||
startPlugins = ["plenary-nvim"];
|
|
||||||
|
|
||||||
lazy.plugins.harpoon = {
|
|
||||||
package = "harpoon";
|
|
||||||
setupModule = "harpoon";
|
|
||||||
inherit (cfg) setupOpts;
|
|
||||||
|
|
||||||
cmd = ["Harpoon"];
|
|
||||||
|
|
||||||
keys = [
|
|
||||||
(mkKeymap "n" keys.markFile "<Cmd>lua require('harpoon'):list():add()<CR>" {desc = mappings.markFile.description;})
|
|
||||||
(mkKeymap "n" keys.listMarks "<Cmd>lua require('harpoon').ui:toggle_quick_menu(require('harpoon'):list())<CR>" {desc = mappings.listMarks.description;})
|
|
||||||
(mkKeymap "n" keys.file1 "<Cmd>lua require('harpoon'):list():select(1)<CR>" {desc = mappings.file1.description;})
|
|
||||||
(mkKeymap "n" keys.file2 "<Cmd>lua require('harpoon'):list():select(2)<CR>" {desc = mappings.file2.description;})
|
|
||||||
(mkKeymap "n" keys.file3 "<Cmd>lua require('harpoon'):list():select(3)<CR>" {desc = mappings.file3.description;})
|
|
||||||
(mkKeymap "n" keys.file4 "<Cmd>lua require('harpoon'):list():select(4)<CR>" {desc = mappings.file4.description;})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
binds.whichKey.register = pushDownDefault {
|
|
||||||
"<leader>a" = "Harpoon Mark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./harpoon.nix
|
|
||||||
./config.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
inherit (lib.options) mkEnableOption mkOption;
|
|
||||||
inherit (lib.types) bool;
|
|
||||||
inherit (lib.nvim.binds) mkMappingOption;
|
|
||||||
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
|
|
||||||
inherit (lib.generators) mkLuaInline;
|
|
||||||
in {
|
|
||||||
options.vim.navigation.harpoon = {
|
|
||||||
mappings = {
|
|
||||||
markFile = mkMappingOption "Mark file [Harpoon]" "<leader>a";
|
|
||||||
listMarks = mkMappingOption "List marked files [Harpoon]" "<C-e>";
|
|
||||||
file1 = mkMappingOption "Go to marked file 1 [Harpoon]" "<C-j>";
|
|
||||||
file2 = mkMappingOption "Go to marked file 2 [Harpoon]" "<C-k>";
|
|
||||||
file3 = mkMappingOption "Go to marked file 3 [Harpoon]" "<C-l>";
|
|
||||||
file4 = mkMappingOption "Go to marked file 4 [Harpoon]" "<C-;>";
|
|
||||||
};
|
|
||||||
|
|
||||||
enable = mkEnableOption "Quick bookmarks on keybinds [Harpoon]";
|
|
||||||
|
|
||||||
setupOpts = mkPluginSetupOption "Harpoon" {
|
|
||||||
defaults = {
|
|
||||||
save_on_toggle = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Any time the ui menu is closed then we will save the
|
|
||||||
state back to the backing list, not to the fs
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
sync_on_ui_close = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Any time the ui menu is closed then the state of the
|
|
||||||
list will be sync'd back to the fs
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
key = mkOption {
|
|
||||||
type = luaInline;
|
|
||||||
default = mkLuaInline ''
|
|
||||||
function()
|
|
||||||
return vim.loop.cwd()
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
description = ''
|
|
||||||
How the out list key is looked up. This can be useful
|
|
||||||
when using worktrees and using git remote instead of file path
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
cfg = config.vim.utility.mkdir;
|
|
||||||
in {
|
|
||||||
vim = mkIf cfg.enable {
|
|
||||||
startPlugins = ["mkdir-nvim"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./config.nix
|
|
||||||
./mkdir.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
inherit (lib.options) mkEnableOption;
|
|
||||||
in {
|
|
||||||
options.vim.utility.mkdir.enable = mkEnableOption ''
|
|
||||||
parent directory creation when editing a nested path that does not exist using `mkdir.nvim`
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
cfg = config.vim.utility.nix-develop;
|
|
||||||
in {
|
|
||||||
vim = mkIf cfg.enable {
|
|
||||||
startPlugins = ["nix-develop-nvim"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./config.nix
|
|
||||||
./nix-develop.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
inherit (lib.options) mkEnableOption;
|
|
||||||
in {
|
|
||||||
options.vim.utility.nix-develop.enable = mkEnableOption "in-neovim `nix develop`, `nix shell`, and more using `nix-develop.nvim`";
|
|
||||||
}
|
|
||||||
|
|
@ -15,7 +15,6 @@
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
vim = {
|
vim = {
|
||||||
startPlugins = ["snacks-nvim"];
|
|
||||||
lazy.plugins."yazi.nvim" = {
|
lazy.plugins."yazi.nvim" = {
|
||||||
package = pkgs.vimPlugins.yazi-nvim;
|
package = pkgs.vimPlugins.yazi-nvim;
|
||||||
setupModule = "yazi";
|
setupModule = "yazi";
|
||||||
|
|
|
||||||
|
|
@ -51,18 +51,6 @@
|
||||||
"url": "https://api.github.com/repos/saghen/blink.cmp/tarball/v0.12.4",
|
"url": "https://api.github.com/repos/saghen/blink.cmp/tarball/v0.12.4",
|
||||||
"hash": "0jdifjifxjqa8r80wlqgkn5rm48wziap92340xz228nrgd0c9g69"
|
"hash": "0jdifjifxjqa8r80wlqgkn5rm48wziap92340xz228nrgd0c9g69"
|
||||||
},
|
},
|
||||||
"blink-cmp-spell": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "ribru17",
|
|
||||||
"repo": "blink-cmp-spell"
|
|
||||||
},
|
|
||||||
"branch": "master",
|
|
||||||
"revision": "38d6797dea6f72baa6e8b3bfca6da96d8fcac64d",
|
|
||||||
"url": "https://github.com/ribru17/blink-cmp-spell/archive/38d6797dea6f72baa6e8b3bfca6da96d8fcac64d.tar.gz",
|
|
||||||
"hash": "19pnasa446iiapgsr3z2fpk0nnrzh8g5wrzrq8n0y4q0z6spc9f6"
|
|
||||||
},
|
|
||||||
"blink-compat": {
|
"blink-compat": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -75,30 +63,6 @@
|
||||||
"url": "https://github.com/saghen/blink.compat/archive/4104671562c663d059d91a99da3780bead5bc467.tar.gz",
|
"url": "https://github.com/saghen/blink.compat/archive/4104671562c663d059d91a99da3780bead5bc467.tar.gz",
|
||||||
"hash": "0bsf8kg5s3m1xk9d4n0yl0h5xyk484hip3z8va547f6ibim9ccv4"
|
"hash": "0bsf8kg5s3m1xk9d4n0yl0h5xyk484hip3z8va547f6ibim9ccv4"
|
||||||
},
|
},
|
||||||
"blink-emoji-nvim": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "moyiz",
|
|
||||||
"repo": "blink-emoji.nvim"
|
|
||||||
},
|
|
||||||
"branch": "master",
|
|
||||||
"revision": "a77aebc092ebece1eed108f301452ae774d6b67a",
|
|
||||||
"url": "https://github.com/moyiz/blink-emoji.nvim/archive/a77aebc092ebece1eed108f301452ae774d6b67a.tar.gz",
|
|
||||||
"hash": "0n4qv2mk7zx910gnwf9ri2w5qxwx8szx99nqqzik4yyvl4axm41d"
|
|
||||||
},
|
|
||||||
"blink-ripgrep-nvim": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "mikavilpas",
|
|
||||||
"repo": "blink-ripgrep.nvim"
|
|
||||||
},
|
|
||||||
"branch": "main",
|
|
||||||
"revision": "305e1ae5363f527abdfd71915a3fe1f42af52824",
|
|
||||||
"url": "https://github.com/mikavilpas/blink-ripgrep.nvim/archive/305e1ae5363f527abdfd71915a3fe1f42af52824.tar.gz",
|
|
||||||
"hash": "1hcfyicgf33dlr2hhgnhhzdcxxqw1v8v1yjfbnwvlcsgw0rhjl8w"
|
|
||||||
},
|
|
||||||
"bufdelete-nvim": {
|
"bufdelete-nvim": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -351,18 +315,6 @@
|
||||||
"url": "https://github.com/sindrets/diffview.nvim/archive/4516612fe98ff56ae0415a259ff6361a89419b0a.tar.gz",
|
"url": "https://github.com/sindrets/diffview.nvim/archive/4516612fe98ff56ae0415a259ff6361a89419b0a.tar.gz",
|
||||||
"hash": "0brabpd02596hg98bml118bx6z2sly98kf1cr2p0xzybiinb4zs9"
|
"hash": "0brabpd02596hg98bml118bx6z2sly98kf1cr2p0xzybiinb4zs9"
|
||||||
},
|
},
|
||||||
"direnv-vim": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "direnv",
|
|
||||||
"repo": "direnv.vim"
|
|
||||||
},
|
|
||||||
"branch": "master",
|
|
||||||
"revision": "ab2a7e08dd630060cd81d7946739ac7442a4f269",
|
|
||||||
"url": "https://github.com/direnv/direnv.vim/archive/ab2a7e08dd630060cd81d7946739ac7442a4f269.tar.gz",
|
|
||||||
"hash": "1hhwfnaj9ibz17ggxvhzrkinghfy51fqfa0bs482z484jpvjc31g"
|
|
||||||
},
|
|
||||||
"dracula": {
|
"dracula": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -483,18 +435,6 @@
|
||||||
"url": "https://github.com/akinsho/git-conflict.nvim/archive/a1badcd070d176172940eb55d9d59029dad1c5a6.tar.gz",
|
"url": "https://github.com/akinsho/git-conflict.nvim/archive/a1badcd070d176172940eb55d9d59029dad1c5a6.tar.gz",
|
||||||
"hash": "05rnwhm1fmg3yb7j2xc9nmw262jc687qxhwabn97qarrk2da0r0a"
|
"hash": "05rnwhm1fmg3yb7j2xc9nmw262jc687qxhwabn97qarrk2da0r0a"
|
||||||
},
|
},
|
||||||
"github": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "projekt0n",
|
|
||||||
"repo": "github-nvim-theme"
|
|
||||||
},
|
|
||||||
"branch": "main",
|
|
||||||
"revision": "c106c9472154d6b2c74b74565616b877ae8ed31d",
|
|
||||||
"url": "https://github.com/projekt0n/github-nvim-theme/archive/c106c9472154d6b2c74b74565616b877ae8ed31d.tar.gz",
|
|
||||||
"hash": "/A4hkKTzjzeoR1SuwwklraAyI8oMkhxrwBBV9xb59PA="
|
|
||||||
},
|
|
||||||
"gitsigns-nvim": {
|
"gitsigns-nvim": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -531,18 +471,6 @@
|
||||||
"url": "https://github.com/ellisonleao/gruvbox.nvim/archive/089b60e92aa0a1c6fa76ff527837cd35b6f5ac81.tar.gz",
|
"url": "https://github.com/ellisonleao/gruvbox.nvim/archive/089b60e92aa0a1c6fa76ff527837cd35b6f5ac81.tar.gz",
|
||||||
"hash": "0mr8q2xi4s2anibll8lhxax7q1akyg687bp5r58gckkhi04064q4"
|
"hash": "0mr8q2xi4s2anibll8lhxax7q1akyg687bp5r58gckkhi04064q4"
|
||||||
},
|
},
|
||||||
"harpoon": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "ThePrimeagen",
|
|
||||||
"repo": "harpoon"
|
|
||||||
},
|
|
||||||
"branch": "harpoon2",
|
|
||||||
"revision": "ed1f853847ffd04b2b61c314865665e1dadf22c7",
|
|
||||||
"url": "https://github.com/ThePrimeagen/harpoon/archive/ed1f853847ffd04b2b61c314865665e1dadf22c7.tar.gz",
|
|
||||||
"hash": "1dcpdlna2lff9dlsh6i4v16qmn5r9279wdvn0ry3xg4abqwnzc9g"
|
|
||||||
},
|
|
||||||
"haskell-tools-nvim": {
|
"haskell-tools-nvim": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -1277,18 +1205,6 @@
|
||||||
"url": "https://github.com/wfxr/minimap.vim/archive/57287e2dd28fa3e63276a32d11c729df14741d54.tar.gz",
|
"url": "https://github.com/wfxr/minimap.vim/archive/57287e2dd28fa3e63276a32d11c729df14741d54.tar.gz",
|
||||||
"hash": "05k4cgcrz0gj92xy685bd4p6nh2jmaywc2f5sw1lap0v685h7n79"
|
"hash": "05k4cgcrz0gj92xy685bd4p6nh2jmaywc2f5sw1lap0v685h7n79"
|
||||||
},
|
},
|
||||||
"mkdir-nvim": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "jghauser",
|
|
||||||
"repo": "mkdir.nvim"
|
|
||||||
},
|
|
||||||
"branch": "main",
|
|
||||||
"revision": "c55d1dee4f099528a1853b28bb28caa802eba217",
|
|
||||||
"url": "https://github.com/jghauser/mkdir.nvim/archive/c55d1dee4f099528a1853b28bb28caa802eba217.tar.gz",
|
|
||||||
"hash": "0zpyvkbw7wfqdxfgidr7zfxqb5ldci4pflx50rsm1hbwai0ybv23"
|
|
||||||
},
|
|
||||||
"modes-nvim": {
|
"modes-nvim": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -1388,18 +1304,6 @@
|
||||||
"url": "https://github.com/otavioschwanck/new-file-template.nvim/archive/6ac66669dbf2dc5cdee184a4fe76d22465ca67e8.tar.gz",
|
"url": "https://github.com/otavioschwanck/new-file-template.nvim/archive/6ac66669dbf2dc5cdee184a4fe76d22465ca67e8.tar.gz",
|
||||||
"hash": "0c7378c3w6bniclp666rq15c28akb0sjy58ayva0wpyin4k26hl3"
|
"hash": "0c7378c3w6bniclp666rq15c28akb0sjy58ayva0wpyin4k26hl3"
|
||||||
},
|
},
|
||||||
"nix-develop-nvim": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "figsoda",
|
|
||||||
"repo": "nix-develop.nvim"
|
|
||||||
},
|
|
||||||
"branch": "main",
|
|
||||||
"revision": "afea026f5c478c000a8af8de87f7b711676387ab",
|
|
||||||
"url": "https://github.com/figsoda/nix-develop.nvim/archive/afea026f5c478c000a8af8de87f7b711676387ab.tar.gz",
|
|
||||||
"hash": "0nwjgr19pzdxd7yygz380b388qcfbzp9svs916kh0zayzi9yxc2k"
|
|
||||||
},
|
|
||||||
"noice-nvim": {
|
"noice-nvim": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -1804,9 +1708,9 @@
|
||||||
"repo": "otter.nvim"
|
"repo": "otter.nvim"
|
||||||
},
|
},
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
"revision": "e37053d2c6a17463e705483122eee04d41e3d4af",
|
"revision": "21f042f4d1a9ff4788634ad76a10033eed13c7f2",
|
||||||
"url": "https://github.com/jmbuhr/otter.nvim/archive/e37053d2c6a17463e705483122eee04d41e3d4af.tar.gz",
|
"url": "https://github.com/jmbuhr/otter.nvim/archive/21f042f4d1a9ff4788634ad76a10033eed13c7f2.tar.gz",
|
||||||
"hash": "0sq7x2mcxl7z0j4s3a395fy0bzz13h4rxd03lp6674y6hsjxcm55"
|
"hash": "1gi603ckyxljbhkg8jhwh2pf5kvgb676ykw3sv9gvi0c2s4fb55r"
|
||||||
},
|
},
|
||||||
"oxocarbon": {
|
"oxocarbon": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
|
|
@ -1976,18 +1880,6 @@
|
||||||
"url": "https://github.com/m4xshen/smartcolumn.nvim/archive/92f3773af80d674f1eb61e112dca79e2fa449fd1.tar.gz",
|
"url": "https://github.com/m4xshen/smartcolumn.nvim/archive/92f3773af80d674f1eb61e112dca79e2fa449fd1.tar.gz",
|
||||||
"hash": "0k1xnyvblshn4fhbxgl0i34j22n55xlwr09sdmb23l57br5rb07q"
|
"hash": "0k1xnyvblshn4fhbxgl0i34j22n55xlwr09sdmb23l57br5rb07q"
|
||||||
},
|
},
|
||||||
"snacks-nvim": {
|
|
||||||
"type": "Git",
|
|
||||||
"repository": {
|
|
||||||
"type": "GitHub",
|
|
||||||
"owner": "folke",
|
|
||||||
"repo": "snacks.nvim"
|
|
||||||
},
|
|
||||||
"branch": "main",
|
|
||||||
"revision": "bc0630e43be5699bb94dadc302c0d21615421d93",
|
|
||||||
"url": "https://github.com/folke/snacks.nvim/archive/bc0630e43be5699bb94dadc302c0d21615421d93.tar.gz",
|
|
||||||
"hash": "0a5nw7xa33shag1h12gf930g3vcixbwk8dxv0ji4980ycskh238v"
|
|
||||||
},
|
|
||||||
"sqls-nvim": {
|
"sqls-nvim": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -2140,9 +2032,9 @@
|
||||||
"repo": "vim-illuminate"
|
"repo": "vim-illuminate"
|
||||||
},
|
},
|
||||||
"branch": "master",
|
"branch": "master",
|
||||||
"revision": "19cb21f513fc2b02f0c66be70107741e837516a1",
|
"revision": "b5713e6ca3f627b46968386d6d3f24d374d3cb17",
|
||||||
"url": "https://github.com/RRethy/vim-illuminate/archive/19cb21f513fc2b02f0c66be70107741e837516a1.tar.gz",
|
"url": "https://github.com/RRethy/vim-illuminate/archive/b5713e6ca3f627b46968386d6d3f24d374d3cb17.tar.gz",
|
||||||
"hash": "1wfri17br6yqxnci43g69mvbckb7ajhj3c0mlcn1g0s7jkxz4acd"
|
"hash": "0l16qa2bm4nyimkcjlhajgcv8l9kyqqjpc55jxnny0gy6rycp40n"
|
||||||
},
|
},
|
||||||
"vim-markdown": {
|
"vim-markdown": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
|
|
@ -2206,4 +2098,4 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": 3
|
"version": 3
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue