diff --git a/.github/README.md b/.github/README.md
index 5d10c73f..9a059419 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -206,6 +206,20 @@ features.
## Credits
+### Co-Maintainers
+
+Alongside myself, nvf is developed by those talented folk:
+
+- [**@horriblename**](https://github.com/horriblename)
+ ([Liberapay](https://liberapay.com/horriblename/))- For actively implementing
+ planned features and quality of life updates.
+- [**@Diniamo**](https://github.com/Diniamo)
+ ([Liberapay](https://en.liberapay.com/diniamo/)) - For actively submitting
+ pull requests, issues and assistance with maintenance of nvf.
+
+Please do remember to extend your thanks (financially or otherwise) if this
+project has been helpful to you.
+
### Contributors
[mnw]: https://github.com/gerg-l/mnw
@@ -213,21 +227,19 @@ features.
nvf would not be what it is today without the awesome people below. Special,
heart-felt thanks to
-- [@fufexan](https://github.com/fufexan) - For the transition to flake-parts and
- invaluable Nix assistance.
-- [@FlafyDev](https://github.com/FlafyDev) - For getting home-manager module to
- work and Nix assistance.
-- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally
+- [**@fufexan**](https://github.com/fufexan) - For the transition to flake-parts
+ and invaluable Nix assistance.
+- [**@FlafyDev**](https://github.com/FlafyDev) - For getting Home-Manager module
+ to work and Nix assistance.
+- [**@n3oney**](https://github.com/n3oney) - For making custom keybinds finally
possible, and other module additions.
-- [@horriblename](https://github.com/horriblename) - For actively implementing
- planned features and quality of life updates.
-- [@Yavko](https://github.com/Yavko) - For the amazing **nvf** logo
-- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I
- could not.
-- [@Diniamo](https://github.com/Diniamo) - For actively submitting pull
- requests, issues and assistance with maintenance of nvf.
-- [@Gerg-l](https://github.com/gerg-l) - For the modern Neovim wrapper, [mnw],
- and occasional code improvements.
+- [**@Yavko**](https://github.com/Yavko) - For the amazing **nvf** logo
+- [**@FrothyMarrow**](https://github.com/FrothyMarrow) - For seeing mistakes
+ that I could not.
+- [**@Gerg-l**](https://github.com/gerg-l) 🐸 - For the modern Neovim wrapper,
+ [mnw], and occasional code improvements.
+- [**@Soliprem**](https://github.com/soliprem) - Rigorously implementing missing
+ features and excellent work on new language modules.
and everyone who has submitted issues or pull requests!
@@ -237,17 +249,17 @@ This configuration borrows from and is based on a few other configurations,
including:
- [@jordanisaacs's](https://github.com/jordanisaacs)
- [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake
- is originally based on.
-- [@sioodmy's](https://github.com/sioodmy)
- [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design
- choices for UI and plugin defaults.
+ [**neovim-flake**](https://github.com/jordanisaacs/neovim-flake) that this
+ flake is originally based on.
- [@wiltaylor's](https://github.com/wiltaylor)
[neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and
design ideas.
- [@gvolpe's](https://github.com/gvolpe)
[neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and
nix concepts.
+- [@sioodmy's](https://github.com/sioodmy)
+ [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design
+ choices for UI and plugin defaults.
I am grateful for their previous work and inspiration, and I wholeheartedly
recommend checking their work out.
@@ -255,12 +267,12 @@ recommend checking their work out.
## License
-Following the license of the
-[original neovim-flake](https://github.com/jordanisaacs/neovim-flake), nvf has
-been made available under the [**MIT License**](LICENSE). However, all assets
-and documentation are published under the
+Following the license of
+[the original neovim-flake](https://github.com/jordanisaacs/neovim-flake), nvf
+has been made available under the [**MIT License**](LICENSE). However, all
+assets and documentation are published under the
[**CC BY License**](https://github.com/NotAShelf/nvf/blob/main/.github/assets/LICENSE)
-under explicit permission by the artist.
+under explicit permission by the author or authors.
Yes, this includes the logo work too. Stop taking artwork that is not yours!
diff --git a/docs/manual/installation/modules/home-manager.md b/docs/manual/installation/modules/home-manager.md
index a2170159..34f2757e 100644
--- a/docs/manual/installation/modules/home-manager.md
+++ b/docs/manual/installation/modules/home-manager.md
@@ -10,12 +10,18 @@ To use it, we first add the input flake.
```nix
{
inputs = {
+ # Optional, if you intend to follow nvf's obsidian-nvim input
+ # you must also add it as a flake input.
obsidian-nvim.url = "github:epwalsh/obsidian.nvim";
+
+ # Required, nvf works best and only directly supports flakes
nvf = {
url = "github:notashelf/nvf";
- # you can override input nixpkgs
+ # You can override the input nixpkgs to follow your system's
+ # instance of nixpkgs. This is safe to do as nvf does not depend
+ # on a binary cache.
inputs.nixpkgs.follows = "nixpkgs";
- # you can also override individual plugins
+ # Optionally, you can also override individual plugins
# for example:
inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs
};
@@ -27,8 +33,8 @@ Followed by importing the home-manager module somewhere in your configuration.
```nix
{
- # assuming nvf is in your inputs and inputs is in the argset
- # see example below
+ # Assuming "nvf" is in your inputs and inputs is in the argument set.
+ # See example installation below
imports = [ inputs.nvf.homeManagerModules.default ];
}
```
@@ -44,12 +50,15 @@ Followed by importing the home-manager module somewhere in your configuration.
};
outputs = { nixpkgs, home-manager, nvf, ... }: let
- system = "x86_64-linux"; in {
+ system = "x86_64-linux";
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
# ↓ this is your home output in the flake schema, expected by home-manager
- "your-username@your-hostname" = home-manager.lib.homeManagerConfiguration
+ "your-username@your-hostname" = home-manager.lib.homeManagerConfiguration {
+ inherit pkgs;
modules = [
nvf.homeManagerModules.default # <- this imports the home-manager module that provides the options
- ./home.nix # <- your home entrypoint
+ ./home.nix # <- your home entrypoint, `programs.nvf.*` may be defined here
];
};
};
diff --git a/docs/manual/installation/modules/nixos.md b/docs/manual/installation/modules/nixos.md
index d8be2035..bcf7472b 100644
--- a/docs/manual/installation/modules/nixos.md
+++ b/docs/manual/installation/modules/nixos.md
@@ -10,12 +10,18 @@ To use it, we first add the input flake.
```nix
{
inputs = {
+ # Optional, if you intend to follow nvf's obsidian-nvim input
+ # you must also add it as a flake input.
obsidian-nvim.url = "github:epwalsh/obsidian.nvim";
+
+ # Required, nvf works best and only directly supports flakes
nvf = {
url = "github:notashelf/nvf";
- # you can override input nixpkgs
+ # You can override the input nixpkgs to follow your system's
+ # instance of nixpkgs. This is safe to do as nvf does not depend
+ # on a binary cache.
inputs.nixpkgs.follows = "nixpkgs";
- # you can also override individual plugins
+ # Optionally, you can also override individual plugins
# for example:
inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs
};
@@ -42,13 +48,12 @@ Followed by importing the NixOS module somewhere in your configuration.
nvf.url = "github:notashelf/nvf";
};
- outputs = { nixpkgs, nvf, ... }: let
- system = "x86_64-linux"; in {
+ outputs = { nixpkgs, nvf, ... }: {
# ↓ this is your host output in the flake schema
- nixosConfigurations."yourUsername»" = nixpkgs.lib.nixosSystem {
+ nixosConfigurations."your-hostname" = nixpkgs.lib.nixosSystem {
modules = [
nvf.nixosModules.default # <- this imports the NixOS module that provides the options
- ./configuration.nix # <- your host entrypoint
+ ./configuration.nix # <- your host entrypoint, `programs.nvf.*` may be defined here
];
};
};
diff --git a/docs/manual/manual.md b/docs/manual/manual.md
index fd7ddcd9..fd225766 100644
--- a/docs/manual/manual.md
+++ b/docs/manual/manual.md
@@ -11,6 +11,7 @@ try-it-out.md
default-configs.md
installation.md
configuring.md
+tips.md
```
```{=include=} chapters
diff --git a/docs/manual/tips.md b/docs/manual/tips.md
new file mode 100644
index 00000000..0d2637f1
--- /dev/null
+++ b/docs/manual/tips.md
@@ -0,0 +1,6 @@
+# Helpful Tips {#ch-helpful-tips}
+
+```{=include=} chapters
+tips/debugging-nvf.md
+tips/offline-docs.md
+```
diff --git a/docs/manual/tips/debugging-nvf.md b/docs/manual/tips/debugging-nvf.md
new file mode 100644
index 00000000..a642b0a7
--- /dev/null
+++ b/docs/manual/tips/debugging-nvf.md
@@ -0,0 +1,19 @@
+# Debugging nvf {#sec-debugging-nvf}
+
+There may be instances where the your Nix configuration evaluates to invalid
+Lua, or times when you will be asked to provide your built Lua configuration for
+easier debugging by nvf maintainers. nvf provides two helpful utilities out of
+the box.
+
+**nvf-print-config** and **nvf-print-config-path** will be bundled with nvf as
+lightweight utilities to help you view or share your built configuration when
+necessary.
+
+To view your configuration with syntax highlighting, you may use the
+[bat pager](https://github.com/sharkdp/bat).
+
+```bash
+nvf-print-config | bat --language=lua
+```
+
+Alternatively, `cat` or `less` may also be used.
diff --git a/docs/manual/tips/offline-docs.md b/docs/manual/tips/offline-docs.md
new file mode 100644
index 00000000..ed11d965
--- /dev/null
+++ b/docs/manual/tips/offline-docs.md
@@ -0,0 +1,11 @@
+# Offline Documentation {#sec-offline-documentation}
+
+[https://notashelf.github.io/nvf/options.html]: https://notashelf.github.io/nvf/options.html
+
+The manpages provided by nvf contains an offline version of the option search
+normally available at [https://notashelf.github.io/nvf/options.html]. You may
+use the `man 5 nvf` command to view option documentation from the comfort of
+your terminal.
+
+Note that this is only available for NixOS and Home-Manager module
+installations.
diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md
index 59267ddf..32186a8f 100644
--- a/docs/release-notes/rl-0.7.md
+++ b/docs/release-notes/rl-0.7.md
@@ -28,11 +28,11 @@ configuration formats.
### `vim.maps` rewrite {#sec-vim-maps-rewrite}
-Instead of specifying map modes using submodules (eg.: `vim.maps.normal`), a new
-`vim.keymaps` submodule with support for a `mode` option has been introduced. It
-can be either a string, or a list of strings, where a string represents the
-short-name of the map mode(s), that the mapping should be set for. See
-`:help map-modes` for more information.
+Instead of specifying map modes using submodules (e.g.: `vim.maps.normal`), a
+new `vim.keymaps` submodule with support for a `mode` option has been
+introduced. It can be either a string, or a list of strings, where a string
+represents the short-name of the map mode(s), that the mapping should be set
+for. See `:help map-modes` for more information.
For example:
diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md
index e41911ba..c65defeb 100644
--- a/docs/release-notes/rl-0.8.md
+++ b/docs/release-notes/rl-0.8.md
@@ -13,6 +13,19 @@
- Add [render-markdown.nvim] under
`languages.markdown.extensions.render-markdown-nvim`
+- Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table
+ in gitsigns configuration.
+
+- [](#opt-vim.options.mouse) no longer compares values to an enum of available
+ mouse modes. This means you can provide any string without the module system
+ warning you that it is invalid. Do keep in mind that this value is no longer
+ checked, so you will be responsible for ensuring its validity.
+
+- Deprecate `vim.enableEditorconfig` in favor of
+ [](#opt-vim.globals.editorconfig).
+
+- Deprecate rnix-lsp as it has been abandoned and archived upstream.
+
[amadaluzia](https://github.com/amadaluzia):
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
@@ -25,3 +38,16 @@
- Disable the built-in format-on-save feature of zls. Use `vim.lsp.formatOnSave`
instead.
+
+[horriblename](https://github.com/horriblename):
+
+[aerial.nvim](https://github.com/stevearc/aerial.nvim)
+[nvim-ufo](https://github.com/kevinhwang91/nvim-ufo)
+
+- Add [aerial.nvim]
+- Add [nvim-ufo]
+
+[LilleAila](https://github.com/LilleAila):
+
+- Remove `vim.notes.obsidian.setupOpts.dir`, which was set by default. Fixes
+ issue with setting the workspace directory.
diff --git a/flake.lock b/flake.lock
index 0a7ee1a5..da38b967 100644
--- a/flake.lock
+++ b/flake.lock
@@ -51,27 +51,6 @@
"type": "github"
}
},
- "naersk": {
- "inputs": {
- "nixpkgs": [
- "rnix-lsp",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1655042882,
- "narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
- "owner": "nix-community",
- "repo": "naersk",
- "rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "naersk",
- "type": "github"
- }
- },
"nil": {
"inputs": {
"flake-utils": [
@@ -124,22 +103,6 @@
"url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
}
},
- "nixpkgs_2": {
- "locked": {
- "lastModified": 1656753965,
- "narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nmd": {
"flake": false,
"locked": {
@@ -156,6 +119,22 @@
"type": "sourcehut"
}
},
+ "plugin-aerial-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1736064692,
+ "narHash": "sha256-7YQtkUTACTMfAGoqoFDPmRrqtw+ypxDbeLCTB3sy4Us=",
+ "owner": "stevearc",
+ "repo": "aerial.nvim",
+ "rev": "b3ec25ca8c347fafa976484a6cace162239112e1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "stevearc",
+ "repo": "aerial.nvim",
+ "type": "github"
+ }
+ },
"plugin-alpha-nvim": {
"flake": false,
"locked": {
@@ -1502,6 +1481,22 @@
"type": "github"
}
},
+ "plugin-nvim-ufo": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1735147722,
+ "narHash": "sha256-etyfm4KpwjYN+kkotOMl0LgbQniILmqMqab4acMtTlw=",
+ "owner": "kevinhwang91",
+ "repo": "nvim-ufo",
+ "rev": "32cb247b893a384f1888b9cd737264159ecf183c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "kevinhwang91",
+ "repo": "nvim-ufo",
+ "type": "github"
+ }
+ },
"plugin-nvim-web-devicons": {
"flake": false,
"locked": {
@@ -1678,6 +1673,22 @@
"type": "github"
}
},
+ "plugin-promise-async": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1722813441,
+ "narHash": "sha256-9eM66brPjiFlY64vmBetRYrKnpDyN7+/URMm4GsGimA=",
+ "owner": "kevinhwang91",
+ "repo": "promise-async",
+ "rev": "119e8961014c9bfaf1487bf3c2a393d254f337e2",
+ "type": "github"
+ },
+ "original": {
+ "owner": "kevinhwang91",
+ "repo": "promise-async",
+ "type": "github"
+ }
+ },
"plugin-registers": {
"flake": false,
"locked": {
@@ -2062,26 +2073,6 @@
"type": "github"
}
},
- "rnix-lsp": {
- "inputs": {
- "naersk": "naersk",
- "nixpkgs": "nixpkgs_2",
- "utils": "utils"
- },
- "locked": {
- "lastModified": 1669555118,
- "narHash": "sha256-F0s0m62S5bHNVWNHLZD6SeHiLrsDx98VQbRjDyIu+qQ=",
- "owner": "nix-community",
- "repo": "rnix-lsp",
- "rev": "95d40673fe43642e2e1144341e86d0036abd95d9",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "rnix-lsp",
- "type": "github"
- }
- },
"root": {
"inputs": {
"flake-parts": "flake-parts",
@@ -2090,6 +2081,7 @@
"nil": "nil",
"nixpkgs": "nixpkgs",
"nmd": "nmd",
+ "plugin-aerial-nvim": "plugin-aerial-nvim",
"plugin-alpha-nvim": "plugin-alpha-nvim",
"plugin-base16": "plugin-base16",
"plugin-bufdelete-nvim": "plugin-bufdelete-nvim",
@@ -2174,6 +2166,7 @@
"plugin-nvim-tree-lua": "plugin-nvim-tree-lua",
"plugin-nvim-treesitter-context": "plugin-nvim-treesitter-context",
"plugin-nvim-ts-autotag": "plugin-nvim-ts-autotag",
+ "plugin-nvim-ufo": "plugin-nvim-ufo",
"plugin-nvim-web-devicons": "plugin-nvim-web-devicons",
"plugin-obsidian-nvim": "plugin-obsidian-nvim",
"plugin-omnisharp-extended": "plugin-omnisharp-extended",
@@ -2185,6 +2178,7 @@
"plugin-plenary-nvim": "plugin-plenary-nvim",
"plugin-precognition-nvim": "plugin-precognition-nvim",
"plugin-project-nvim": "plugin-project-nvim",
+ "plugin-promise-async": "plugin-promise-async",
"plugin-registers": "plugin-registers",
"plugin-render-markdown-nvim": "plugin-render-markdown-nvim",
"plugin-rose-pine": "plugin-rose-pine",
@@ -2209,7 +2203,6 @@
"plugin-vim-repeat": "plugin-vim-repeat",
"plugin-vim-startify": "plugin-vim-startify",
"plugin-which-key": "plugin-which-key",
- "rnix-lsp": "rnix-lsp",
"systems": "systems_2"
}
},
@@ -2263,21 +2256,6 @@
"repo": "default",
"type": "github"
}
- },
- "utils": {
- "locked": {
- "lastModified": 1656928814,
- "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
}
},
"root": "root",
diff --git a/flake.nix b/flake.nix
index d5a7b709..89690cad 100644
--- a/flake.nix
+++ b/flake.nix
@@ -89,7 +89,6 @@
};
# Language servers (use master instead of nixpkgs)
- rnix-lsp.url = "github:nix-community/rnix-lsp";
nil = {
url = "github:oxalica/nil";
inputs.nixpkgs.follows = "nixpkgs";
@@ -720,6 +719,16 @@
flake = false;
};
+ plugin-promise-async = {
+ url = "github:kevinhwang91/promise-async";
+ flake = false;
+ };
+
+ plugin-nvim-ufo = {
+ url = "github:kevinhwang91/nvim-ufo";
+ flake = false;
+ };
+
plugin-new-file-template-nvim = {
# (required by new-file-template.nvim)
url = "github:otavioschwanck/new-file-template.nvim";
@@ -730,5 +739,10 @@
url = "github:mrcjkb/haskell-tools.nvim";
flake = false;
};
+
+ plugin-aerial-nvim = {
+ url = "github:stevearc/aerial.nvim";
+ flake = false;
+ };
};
}
diff --git a/flake/legacyPackages.nix b/flake/legacyPackages.nix
index 389ca0ce..b77d057a 100644
--- a/flake/legacyPackages.nix
+++ b/flake/legacyPackages.nix
@@ -8,8 +8,10 @@
inherit system;
overlays = [
inputs.self.overlays.default
+
(_: _: {
- rnix-lsp = inputs'.rnix-lsp.defaultPackage;
+ # Build nil from source to get most recent
+ # features as they are added.
nil = inputs'.nil.packages.default;
})
];
diff --git a/lib/languages.nix b/lib/languages.nix
index 52f1b5b8..56c225d6 100644
--- a/lib/languages.nix
+++ b/lib/languages.nix
@@ -6,7 +6,12 @@
inherit (lib.nvim.attrsets) mapListToAttrs;
in {
# Converts a boolean to a yes/no string. This is used in lots of
- # configuration formats.
+ # configuration formats, and is not covered by `toLuaObject`
+ toVimBool = bool:
+ if bool
+ then "yes"
+ else "no";
+
diagnosticsToLua = {
lang,
config,
@@ -30,8 +35,8 @@ in {
mkEnable = desc:
mkOption {
- description = "Turn on ${desc} for enabled languages by default";
- type = bool;
default = false;
+ type = bool;
+ description = "Turn on ${desc} for enabled languages by default";
};
}
diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix
index e4cb193f..8d27d7ac 100644
--- a/modules/extra/deprecations.nix
+++ b/modules/extra/deprecations.nix
@@ -14,6 +14,7 @@
splitRight = "splitright";
autoIndent = "autoindent";
wordWrap = "wrap";
+ showSignColumn = "signcolumn";
};
in {
imports = concatLists [
@@ -35,23 +36,28 @@ in {
vim.autopairs.enable has been removed in favor of per-plugin modules.
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
'')
+
(mkRemovedOptionModule ["vim" "autopairs" "type"] ''
vim.autopairs.type has been removed in favor of per-plugin modules.
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
'')
+
(mkRemovedOptionModule ["vim" "autocomplete" "enable"] ''
vim.autocomplete.enable has been removed in favor of per-plugin modules.
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
'')
+
(mkRemovedOptionModule ["vim" "autocomplete" "type"] ''
vim.autocomplete.type has been removed in favor of per-plugin modules.
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
'')
+
(mkRemovedOptionModule ["vim" "autocomplete" "sources"] ''
vim.autocomplete.sources has been removed in favor of per-plugin modules.
You can add nvim-cmp sources with vim.autocomplete.nvim-cmp.sources
instead.
'')
+
(mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] ''
vim.snippets.vsnip.enable has been removed in favor of the more modern luasnip.
'')
@@ -84,9 +90,12 @@ in {
`tabstop` and `shiftwidth` manually in `vim.options` or per-filetype in a
`ftplugin` directory added to your runtime path.
'')
+
+ # 2024-12-02
+ (mkRenamedOptionModule ["vim" "enableEditorconfig"] ["vim" "globals" "editorconfig"])
]
- # 2024-12-1
+ # 2024-12-01
# Migrated via batchRenameOptions. Further batch renames must be below this line.
renamedVimOpts
];
diff --git a/modules/neovim/init/basic.nix b/modules/neovim/init/basic.nix
index 9370fa8f..532ebcea 100644
--- a/modules/neovim/init/basic.nix
+++ b/modules/neovim/init/basic.nix
@@ -5,6 +5,7 @@
}: let
inherit (lib.options) mkOption mkEnableOption literalMD;
inherit (lib.strings) optionalString;
+ inherit (lib.attrsets) optionalAttrs;
inherit (lib.types) enum bool str int either;
inherit (lib.generators) mkLuaInline;
inherit (lib.nvim.dag) entryAfter;
@@ -58,24 +59,12 @@ in {
description = "Prevent swapfile and backupfile from being created";
};
- showSignColumn = mkOption {
- type = bool;
- default = true;
- description = "Show the sign column";
- };
-
bell = mkOption {
type = enum ["none" "visual" "on"];
default = "none";
description = "Set how bells are handled. Options: on, visual or none";
};
- enableEditorconfig = mkOption {
- type = bool;
- default = true;
- description = "Follow editorconfig rules in current directory";
- };
-
searchCase = mkOption {
type = enum ["ignore" "smart" "sensitive"];
default = "sensitive";
@@ -106,63 +95,55 @@ in {
# Set options that were previously interpolated in 'luaConfigRC.basic' as vim.options (vim.o)
# and 'vim.globals' (vim.g). Future options, if possible, should be added here instead of the
# luaConfigRC section below.
- options = pushDownDefault {
- encoding = "utf-8";
- hidden = true;
- expandtab = true;
- };
+ options = pushDownDefault (lib.mergeAttrsList [
+ {
+ # Options that are always set, with a lower priority
+ encoding = "utf-8";
+ hidden = true;
+ expandtab = true;
- globals = pushDownDefault {
- editorconfig = cfg.enableEditorconfig;
- };
+ # Junkfile Behaviour
+ swapfile = !cfg.preventJunkFiles;
+ backup = !cfg.preventJunkFiles;
+ writebackup = !cfg.preventJunkFiles;
+ }
- # Options that are more difficult to set through 'vim.options'. Fear not, though
- # as the Lua DAG is still as powerful as it could be.
+ (optionalAttrs cfg.undoFile.enable {
+ undofile = true;
+ undodir = cfg.undoFile.path;
+ })
+
+ (optionalAttrs (cfg.bell == "none") {
+ errorbells = false;
+ visualbell = false;
+ })
+
+ (optionalAttrs (cfg.bell == "on") {
+ visualbell = false;
+ })
+
+ (optionalAttrs (cfg.bell == "visual") {
+ visualbell = false;
+ })
+
+ (optionalAttrs (cfg.lineNumberMode == "relative") {
+ relativenumber = true;
+ })
+
+ (optionalAttrs (cfg.lineNumberMode == "number") {
+ number = true;
+ })
+
+ (optionalAttrs (cfg.lineNumberMode == "relNumber") {
+ number = true;
+ relativenumber = true;
+ })
+ ]);
+
+ # Options that are more difficult to set through 'vim.options'. Namely, appending values
+ # to pre-set Neovim options. Fear not, though as the Lua DAG is still as powerful as it
+ # could be.
luaConfigRC.basic = entryAfter ["globalsScript"] ''
- -- Settings that are set for everything
- vim.opt.shortmess:append("c")
-
- ${optionalString cfg.undoFile.enable ''
- vim.o.undofile = true
- vim.o.undodir = ${toLuaObject cfg.undoFile.path}
- ''}
-
- ${optionalString cfg.showSignColumn ''
- vim.o.signcolumn = "yes"
- ''}
-
- ${optionalString cfg.preventJunkFiles ''
- vim.o.swapfile = false
- vim.o.backup = false
- vim.o.writebackup = false
- ''}
-
- ${optionalString (cfg.bell == "none") ''
- vim.o.errorbells = false
- vim.o.visualbell = false
- ''}
-
- ${optionalString (cfg.bell == "on") ''
- vim.o.visualbell = false
- ''}
-
- ${optionalString (cfg.bell == "visual") ''
- vim.o.errorbells = false
- ''}
-
- ${optionalString (cfg.lineNumberMode == "relative") ''
- vim.o.relativenumber = true
- ''}
-
- ${optionalString (cfg.lineNumberMode == "number") ''
- vim.o.number = true
- ''}
-
- ${optionalString (cfg.lineNumberMode == "relNumber") ''
- vim.o.number = true
- vim.o.relativenumber = true
- ''}
-
${optionalString cfg.useSystemClipboard ''
vim.opt.clipboard:append("unnamedplus")
''}
diff --git a/modules/neovim/init/spellcheck.nix b/modules/neovim/init/spellcheck.nix
index 5d6f5bed..f8d784da 100644
--- a/modules/neovim/init/spellcheck.nix
+++ b/modules/neovim/init/spellcheck.nix
@@ -124,7 +124,6 @@ in {
nvim --headless --clean \
--cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
done
-
'';
in
mkIf (cfg.extraSpellWords != {}) [
@@ -133,10 +132,12 @@ in {
compileJoinedSpellfiles.outPath
];
- luaConfigRC.spellcheck = entryAfter ["basic"] ''
- vim.opt.spell = true
- vim.opt.spelllang = ${listToLuaTable cfg.languages}
+ options = {
+ spell = true;
+ spelllang = cfg.languages;
+ };
+ luaConfigRC.spellcheck = entryAfter ["basic"] ''
-- Disable spellchecking for certain filetypes
-- as configured by `vim.spellcheck.ignoredFiletypes`
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
diff --git a/modules/plugins/filetree/nvimtree/config.nix b/modules/plugins/filetree/nvimtree/config.nix
index 11fa9fed..0d0381a0 100644
--- a/modules/plugins/filetree/nvimtree/config.nix
+++ b/modules/plugins/filetree/nvimtree/config.nix
@@ -1,7 +1,7 @@
{
+ options,
config,
lib,
- pkgs,
...
}: let
inherit (lib.strings) optionalString;
@@ -11,8 +11,7 @@
inherit (lib.nvim.binds) pushDownDefault;
cfg = config.vim.filetree.nvimTree;
- self = import ./nvimtree.nix {inherit pkgs lib;};
- inherit (self.options.vim.filetree.nvimTree) mappings;
+ inherit (options.vim.filetree.nvimTree) mappings;
in {
config = mkIf cfg.enable {
vim = {
diff --git a/modules/plugins/git/gitsigns/config.nix b/modules/plugins/git/gitsigns/config.nix
index 039ab635..9aee73b7 100644
--- a/modules/plugins/git/gitsigns/config.nix
+++ b/modules/plugins/git/gitsigns/config.nix
@@ -7,6 +7,7 @@
inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetExprBinding mkSetLuaBinding pushDownDefault;
inherit (lib.nvim.dag) entryAnywhere;
+ inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.git.gitsigns;
@@ -70,7 +71,7 @@ in {
};
pluginRC.gitsigns = entryAnywhere ''
- require('gitsigns').setup{}
+ require('gitsigns').setup(${toLuaObject cfg.setupOpts})
'';
};
}
diff --git a/modules/plugins/git/gitsigns/gitsigns.nix b/modules/plugins/git/gitsigns/gitsigns.nix
index ef880bce..9c2375d8 100644
--- a/modules/plugins/git/gitsigns/gitsigns.nix
+++ b/modules/plugins/git/gitsigns/gitsigns.nix
@@ -6,6 +6,7 @@
inherit (lib.options) mkEnableOption;
inherit (lib.modules) mkRenamedOptionModule;
inherit (lib.nvim.binds) mkMappingOption;
+ inherit (lib.nvim.types) mkPluginSetupOption;
in {
imports = [
(mkRenamedOptionModule ["vim" "git" "gitsigns" "codeActions" "vim" "gitsigns" "codeActions"] ["vim" "git" "gitsigns" "codeActions" "enable"])
@@ -13,6 +14,7 @@ in {
options.vim.git.gitsigns = {
enable = mkEnableOption "gitsigns" // {default = config.vim.git.enable;};
+ setupOpts = mkPluginSetupOption "gitsigns" {};
codeActions.enable = mkEnableOption "gitsigns codeactions through null-ls";
diff --git a/modules/plugins/languages/dart.nix b/modules/plugins/languages/dart.nix
index ee069a7d..e2b3182e 100644
--- a/modules/plugins/languages/dart.nix
+++ b/modules/plugins/languages/dart.nix
@@ -130,7 +130,6 @@ in {
(mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true;
-
vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig;
})
diff --git a/modules/plugins/languages/haskell.nix b/modules/plugins/languages/haskell.nix
index 62f4cd41..ff6c7d78 100644
--- a/modules/plugins/languages/haskell.nix
+++ b/modules/plugins/languages/haskell.nix
@@ -71,7 +71,7 @@ in {
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
- else ''{"${cfg.lsp.package}/bin/haskell-language-server-wrapper"}''
+ else ''{"${cfg.lsp.package}/bin/haskell-language-server-wrapper", "--lsp"}''
},
on_attach = function(client, bufnr, ht)
default_on_attach(client, bufnr, ht)
diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix
index ffb69e92..1120633c 100644
--- a/modules/plugins/languages/nix.nix
+++ b/modules/plugins/languages/nix.nix
@@ -26,22 +26,6 @@
then expToLua package
else ''{"${package}/bin/${defaultCmd}"}'';
servers = {
- rnix = {
- package = pkgs.rnix-lsp;
- internalFormatter = cfg.format.type == "nixpkgs-fmt";
- lspConfig = ''
- lspconfig.rnix.setup{
- capabilities = capabilities,
- ${
- if (cfg.format.enable && cfg.format.type == "nixpkgs-fmt")
- then useFormat
- else noFormat
- },
- cmd = ${packageToCmd cfg.lsp.package "rnix-lsp"},
- }
- '';
- };
-
nil = {
package = pkgs.nil;
internalFormatter = true;
@@ -165,6 +149,7 @@ in {
type = enum (attrNames formats);
default = defaultFormat;
};
+
package = mkOption {
description = "Nix formatter package";
type = package;
@@ -188,7 +173,18 @@ in {
assertions = [
{
assertion = cfg.format.type != "nixpkgs-fmt";
- message = "nixpkgs-fmt has been archived upstream. Please use one of the following instead: ${concatStringsSep ", " (attrNames formats)}";
+ message = ''
+ nixpkgs-fmt has been archived upstream. Please use one of the following available formatters:
+ ${concatStringsSep ", " (attrNames formats)}
+ '';
+ }
+
+ {
+ assertion = cfg.lsp.server != "rnix";
+ message = ''
+ rnix-lsp has been archived upstream. Please use one of the following available language servers:
+ ${concatStringsSep ", " (attrNames servers)}
+ '';
}
];
vim.pluginRC.nix = ''
diff --git a/modules/plugins/notes/obsidian/obsidian.nix b/modules/plugins/notes/obsidian/obsidian.nix
index 2dae5a9c..2da2127b 100644
--- a/modules/plugins/notes/obsidian/obsidian.nix
+++ b/modules/plugins/notes/obsidian/obsidian.nix
@@ -24,12 +24,6 @@ in {
enable = mkEnableOption "complementary neovim plugins for Obsidian editor";
setupOpts = mkPluginSetupOption "Obsidian.nvim" {
- dir = mkOption {
- type = str;
- default = "~/my-vault";
- description = "Obsidian vault directory";
- };
-
daily_notes = {
folder = mkOption {
type = nullOr str;
diff --git a/modules/plugins/ui/default.nix b/modules/plugins/ui/default.nix
index 34076600..e9489e9b 100644
--- a/modules/plugins/ui/default.nix
+++ b/modules/plugins/ui/default.nix
@@ -2,6 +2,7 @@
imports = [
./noice
./modes
+ ./nvim-ufo
./notifications
./smartcolumn
./colorizer
diff --git a/modules/plugins/ui/nvim-ufo/config.nix b/modules/plugins/ui/nvim-ufo/config.nix
new file mode 100644
index 00000000..7b40386f
--- /dev/null
+++ b/modules/plugins/ui/nvim-ufo/config.nix
@@ -0,0 +1,20 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ inherit (lib.modules) mkIf;
+
+ cfg = config.vim.ui.nvim-ufo;
+in {
+ config = mkIf cfg.enable {
+ vim = {
+ startPlugins = ["promise-async"];
+ lazy.plugins.nvim-ufo = {
+ package = "nvim-ufo";
+ setupModule = "ufo";
+ inherit (cfg) setupOpts;
+ };
+ };
+ };
+}
diff --git a/modules/plugins/ui/nvim-ufo/default.nix b/modules/plugins/ui/nvim-ufo/default.nix
new file mode 100644
index 00000000..9f541f97
--- /dev/null
+++ b/modules/plugins/ui/nvim-ufo/default.nix
@@ -0,0 +1,6 @@
+{
+ imports = [
+ ./nvim-ufo.nix
+ ./config.nix
+ ];
+}
diff --git a/modules/plugins/ui/nvim-ufo/nvim-ufo.nix b/modules/plugins/ui/nvim-ufo/nvim-ufo.nix
new file mode 100644
index 00000000..d5ad4933
--- /dev/null
+++ b/modules/plugins/ui/nvim-ufo/nvim-ufo.nix
@@ -0,0 +1,9 @@
+{lib, ...}: let
+ inherit (lib.options) mkEnableOption;
+ inherit (lib.nvim.types) mkPluginSetupOption;
+in {
+ options.vim.ui.nvim-ufo = {
+ enable = mkEnableOption "nvim-ufo";
+ setupOpts = mkPluginSetupOption "nvim-ufo" {};
+ };
+}
diff --git a/modules/plugins/utility/default.nix b/modules/plugins/utility/default.nix
index 835ebf6e..686295e2 100644
--- a/modules/plugins/utility/default.nix
+++ b/modules/plugins/utility/default.nix
@@ -1,5 +1,6 @@
{
imports = [
+ ./outline
./binds
./ccc
./gestures
diff --git a/modules/plugins/utility/gestures/gesture-nvim/config.nix b/modules/plugins/utility/gestures/gesture-nvim/config.nix
index 2996f7d2..9838c178 100644
--- a/modules/plugins/utility/gestures/gesture-nvim/config.nix
+++ b/modules/plugins/utility/gestures/gesture-nvim/config.nix
@@ -15,43 +15,47 @@
mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions;
in {
config = mkIf cfg.enable {
- vim.startPlugins = ["gesture-nvim"];
+ vim = {
+ startPlugins = ["gesture-nvim"];
- vim.maps.normal = mkMerge [
- (mkSetLuaBinding mappings.draw "require('gesture').draw")
- (mkSetLuaBinding mappings.finish "require('gesture').finish")
- (mkIf (mappings.draw.value == "") {
- "" = {action = "";};
- })
- ];
+ maps.normal = mkMerge [
+ (mkSetLuaBinding mappings.draw "require('gesture').draw")
+ (mkSetLuaBinding mappings.finish "require('gesture').finish")
+ (mkIf (mappings.draw.value == "") {
+ "" = {action = "";};
+ })
+ ];
- vim.pluginRC.gesture-nvim = entryAnywhere ''
- vim.opt.mouse = "a"
+ options.mouse = "a";
+ pluginRC.gesture-nvim = entryAnywhere ''
+ local gesture = require("gesture")
+ gesture.register({
+ name = "scroll to bottom",
+ inputs = { gesture.up(), gesture.down() },
+ action = "normal! G",
+ })
- local gesture = require("gesture")
- gesture.register({
- name = "scroll to bottom",
- inputs = { gesture.up(), gesture.down() },
- action = "normal! G",
- })
- gesture.register({
- name = "next tab",
- inputs = { gesture.right() },
- action = "tabnext",
- })
- gesture.register({
- name = "previous tab",
- inputs = { gesture.left() },
- action = function(ctx) -- also can use callable
- vim.cmd.tabprevious()
- end,
- })
- gesture.register({
- name = "go back",
- inputs = { gesture.right(), gesture.left() },
- -- map to `` keycode
- action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", true)]],
- })
- '';
+ gesture.register({
+ name = "next tab",
+ inputs = { gesture.right() },
+ action = "tabnext",
+ })
+
+ gesture.register({
+ name = "previous tab",
+ inputs = { gesture.left() },
+ action = function(ctx) -- also can use callable
+ vim.cmd.tabprevious()
+ end,
+ })
+
+ gesture.register({
+ name = "go back",
+ inputs = { gesture.right(), gesture.left() },
+ -- map to `` keycode
+ action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", true)]],
+ })
+ '';
+ };
};
}
diff --git a/modules/plugins/utility/gestures/gesture-nvim/default.nix b/modules/plugins/utility/gestures/gesture-nvim/default.nix
index 27e7e09f..4c7987e7 100644
--- a/modules/plugins/utility/gestures/gesture-nvim/default.nix
+++ b/modules/plugins/utility/gestures/gesture-nvim/default.nix
@@ -1,4 +1,4 @@
-_: {
+{
imports = [
./gesture-nvim.nix
./config.nix
diff --git a/modules/plugins/utility/outline/aerial-nvim/aerial-nvim.nix b/modules/plugins/utility/outline/aerial-nvim/aerial-nvim.nix
new file mode 100644
index 00000000..beede428
--- /dev/null
+++ b/modules/plugins/utility/outline/aerial-nvim/aerial-nvim.nix
@@ -0,0 +1,14 @@
+{lib, ...}: let
+ inherit (lib.options) mkEnableOption;
+ inherit (lib.nvim.types) mkPluginSetupOption;
+ inherit (lib.nvim.binds) mkMappingOption;
+in {
+ options.vim.utility.outline.aerial-nvim = {
+ enable = mkEnableOption "Aerial.nvim";
+ setupOpts = mkPluginSetupOption "aerial.nvim" {};
+
+ mappings = {
+ toggle = mkMappingOption "Toggle aerial window" "gO";
+ };
+ };
+}
diff --git a/modules/plugins/utility/outline/aerial-nvim/config.nix b/modules/plugins/utility/outline/aerial-nvim/config.nix
new file mode 100644
index 00000000..803302f7
--- /dev/null
+++ b/modules/plugins/utility/outline/aerial-nvim/config.nix
@@ -0,0 +1,42 @@
+{
+ options,
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib.modules) mkIf;
+ inherit (lib.nvim.binds) mkKeymap;
+
+ cfg = config.vim.utility.outline.aerial-nvim;
+ inherit (options.vim.utility.outline.aerial-nvim) mappings;
+in {
+ config = mkIf cfg.enable {
+ vim = {
+ lazy.plugins.aerial-nvim = {
+ package = "aerial-nvim";
+
+ setupModule = "aerial";
+ inherit (cfg) setupOpts;
+
+ cmd = [
+ "AerialClose"
+ "AerialCloseAll"
+ "AerialGo"
+ "AerialInfo"
+ "AerialNavClose"
+ "AerialNavOpen"
+ "AerialNavToggle"
+ "AerialNext"
+ "AerialOpen"
+ "AerialOpenAll"
+ "AerialPrev"
+ "AerialToggle"
+ ];
+
+ keys = [
+ (mkKeymap "n" cfg.mappings.toggle ":AerialToggle" {desc = mappings.toggle.description;})
+ ];
+ };
+ };
+ };
+}
diff --git a/modules/plugins/utility/outline/aerial-nvim/default.nix b/modules/plugins/utility/outline/aerial-nvim/default.nix
new file mode 100644
index 00000000..ea782c89
--- /dev/null
+++ b/modules/plugins/utility/outline/aerial-nvim/default.nix
@@ -0,0 +1,6 @@
+{
+ imports = [
+ ./aerial-nvim.nix
+ ./config.nix
+ ];
+}
diff --git a/modules/plugins/utility/outline/default.nix b/modules/plugins/utility/outline/default.nix
new file mode 100644
index 00000000..d8262edd
--- /dev/null
+++ b/modules/plugins/utility/outline/default.nix
@@ -0,0 +1,5 @@
+{
+ imports = [
+ ./aerial-nvim
+ ];
+}
diff --git a/modules/plugins/utility/telescope/config.nix b/modules/plugins/utility/telescope/config.nix
index 76cfa8bd..95f81327 100644
--- a/modules/plugins/utility/telescope/config.nix
+++ b/modules/plugins/utility/telescope/config.nix
@@ -22,6 +22,12 @@ in {
package = "telescope";
setupModule = "telescope";
inherit (cfg) setupOpts;
+
+ # HACK: workaround until https://github.com/NotAShelf/nvf/issues/535 gets resolved
+ before = ''
+ vim.g.loaded_telescope = nil
+ '';
+
after = ''
local telescope = require("telescope")
${optionalString config.vim.ui.noice.enable "telescope.load_extension('noice')"}
diff --git a/modules/plugins/utility/wakatime/config.nix b/modules/plugins/utility/wakatime/config.nix
index a1892e7b..675f0034 100644
--- a/modules/plugins/utility/wakatime/config.nix
+++ b/modules/plugins/utility/wakatime/config.nix
@@ -1,18 +1,22 @@
{
config,
- lib,
pkgs,
+ lib,
...
}: let
inherit (lib.modules) mkIf;
+ inherit (lib.meta) getExe;
cfg = config.vim.utility.vim-wakatime;
in {
config = mkIf cfg.enable {
- vim.startPlugins = [pkgs.vimPlugins.vim-wakatime];
+ vim = {
+ startPlugins = [pkgs.vimPlugins.vim-wakatime];
- vim.pluginRC.vim-wakatime = mkIf (cfg.cli-package != null) ''
- vim.g.wakatime_CLIPath = "${cfg.cli-package}"
- '';
+ # Wakatime configuration is stored as vim globals.
+ globals = {
+ "wakatime_CLIPath" = mkIf (cfg.cli-package != null) "${getExe cfg.cli-package}";
+ };
+ };
};
}
diff --git a/modules/plugins/utility/wakatime/default.nix b/modules/plugins/utility/wakatime/default.nix
index d6d67d57..c72189d5 100644
--- a/modules/plugins/utility/wakatime/default.nix
+++ b/modules/plugins/utility/wakatime/default.nix
@@ -1,4 +1,4 @@
-_: {
+{
imports = [
./config.nix
./vim-wakatime.nix
diff --git a/modules/plugins/utility/wakatime/vim-wakatime.nix b/modules/plugins/utility/wakatime/vim-wakatime.nix
index 6b853821..04f27868 100644
--- a/modules/plugins/utility/wakatime/vim-wakatime.nix
+++ b/modules/plugins/utility/wakatime/vim-wakatime.nix
@@ -1,18 +1,24 @@
{
- lib,
pkgs,
+ lib,
...
}: let
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) nullOr package;
in {
options.vim.utility.vim-wakatime = {
- enable = mkEnableOption "vim-wakatime: live code statistics";
+ enable = mkEnableOption ''
+ automatic time tracking and metrics generated from your programming activity [vim-wakatime]
+ '';
cli-package = mkOption {
type = nullOr package;
- default = pkgs.wakatime;
- description = "The package that should be used for wakatime-cli. Set as null to use the default path in `$XDG_DATA_HOME`";
+ default = pkgs.wakatime-cli;
+ example = null;
+ description = ''
+ The package that should be used for wakatime-cli.
+ Set as null to use the default path in {env}`$XDG_DATA_HOME`
+ '';
};
};
}
diff --git a/modules/wrapper/build/config.nix b/modules/wrapper/build/config.nix
index ee5b4fda..46d99b36 100644
--- a/modules/wrapper/build/config.nix
+++ b/modules/wrapper/build/config.nix
@@ -49,6 +49,17 @@
flutter-tools-patched = buildPlug {
pname = "flutter-tools";
patches = [./patches/flutter-tools.patch];
+
+ # Disable failing require check hook checks
+ nvimSkipModule = [
+ "flutter-tools.devices"
+ "flutter-tools.dap"
+ "flutter-tools.runners.job_runner"
+ "flutter-tools.decorations"
+ "flutter-tools.commands"
+ "flutter-tools.executable"
+ "flutter-tools.dev_tools"
+ ];
};
};
diff --git a/modules/wrapper/rc/options.nix b/modules/wrapper/rc/options.nix
index df3831ec..36296f02 100644
--- a/modules/wrapper/rc/options.nix
+++ b/modules/wrapper/rc/options.nix
@@ -3,9 +3,11 @@
lib,
...
}: let
- inherit (lib.options) mkOption mkEnableOption literalMD literalExpression;
+ inherit (lib.options) mkOption literalMD literalExpression;
inherit (lib.strings) optionalString;
inherit (lib.types) str bool int enum attrsOf lines listOf either path submodule anything;
+ inherit (lib.trivial) isBool;
+ inherit (lib.nvim.languages) toVimBool;
inherit (lib.nvim.types) dagOf;
inherit (lib.nvim.lua) listToLuaTable;
@@ -17,7 +19,7 @@ in {
default = false;
example = true;
description = ''
- [{option}`official documentation`]: https://neovim.io/doc/user/lua.html#vim.loader.enable()
+ [official documentation]: https://neovim.io/doc/user/lua.html#vim.loader.enable()
the experimental Lua module loader to speed up the start up process
@@ -29,7 +31,7 @@ in {
::: {.note}
The Lua module loader is *disabled* by default. Before setting this option, please
- take a look at the [{option}`official documentation`]. This option may be enabled by
+ take a look at the {option}`[official documentation]`. This option may be enabled by
default in the future.
:::
'';
@@ -81,7 +83,7 @@ in {
./nvim/my-lua-file.lua
# source type path - pure and reproducible
- (builtins.source {
+ (builtins.path {
path = ./nvim/my-lua-file.lua;
name = "my-lua-file";
})
@@ -121,6 +123,21 @@ in {
default = ",";
description = "The key used for `` mappings";
};
+
+ editorconfig = mkOption {
+ type = bool;
+ default = true;
+ description = ''
+ Whether to enable EditorConfig integration in Neovim.
+
+ This defaults to true as it is enabled by default in stock
+ Neovim, setting this option to false disables EditorConfig
+ integration entirely.
+
+ See [Neovim documentation](https://neovim.io/doc/user/editorconfig.html)
+ for more details on configuring EditorConfig behaviour.
+ '';
+ };
};
};
@@ -150,16 +167,25 @@ in {
};
mouse = mkOption {
- type = enum ["a" "n" "v" "i" "c"];
- default = "a";
+ type = str;
+ default = "nvi";
+ example = "a";
description = ''
Set modes for mouse support.
- * a - all
* n - normal
* v - visual
* i - insert
- * c - command
+ * c - command-line
+ * h - all modes when editing a help file
+ * a - all modes
+ * r - for hit-enter and more-prompt prompt
+
+ [neovim documentation]: https://neovim.io/doc/user/options.html#'mouse'"
+
+ This option takes a string to ensure proper conversion to the corresponding Lua type.
+ As such, we do not check the value passed to this option. Please ensure that any value
+ that is set here is a valid value as per [neovim documentation].
'';
};
@@ -211,6 +237,16 @@ in {
description = "Enable word wrapping.";
};
+ signcolumn = mkOption {
+ type = either str bool;
+ default = true;
+ apply = x:
+ if isBool x
+ then toVimBool x # convert to a yes/no str
+ else x;
+ description = "Show the sign column";
+ };
+
tabstop = mkOption {
type = int;
default = 8; # Neovim default
@@ -263,7 +299,11 @@ in {
vim.opt.runtimepath:append(${listToLuaTable cfg.additionalRuntimePaths})
''}
- ${optionalString cfg.enableLuaLoader "vim.loader.enable()"}
+ ${optionalString cfg.enableLuaLoader ''
+ if vim.loader then
+ vim.loader.enable()
+ end
+ ''}
'';
defaultText = literalMD ''
@@ -273,7 +313,7 @@ in {
if [](#opt-vim.enableLuaLoader) is set to true.
'';
- example = literalExpression ''"$${builtins.readFile ./my-lua-config-pre.lua}"'';
+ example = literalExpression ''''${builtins.readFile ./my-lua-config-pre.lua}'';
description = ''
Verbatim lua code that will be inserted **before**