diff --git a/docs/manual.xml b/docs/manual.xml
index 7184dbb1..b16baa1f 100644
--- a/docs/manual.xml
+++ b/docs/manual.xml
@@ -20,6 +20,7 @@
+
diff --git a/docs/manual/custom-package.adoc b/docs/manual/custom-package.adoc
new file mode 100644
index 00000000..64c043c8
--- /dev/null
+++ b/docs/manual/custom-package.adoc
@@ -0,0 +1,14 @@
+[[ch-custom-package]]
+== Custom Neovim Package
+
+As of v0.5, you may now specify the neovim package that will be wrapped with your configuration. This is done with the `vim.package` option.
+
+[source,nix]
+----
+{inputs, pkgs, ...}: {
+ # using the neovim-nightly overlay
+ config.vim.package = inputs.neovim-overlay.packages.${pkgs.system}.neovim;
+}
+----
+
+The neovim-nightly-overlay always exposes an unwrapped package. If using a different source, you are highly recommended to get an "unwrapped" version of the neovim package,similar to `neovim-unwrapped` in nixpkgs.
diff --git a/docs/release-notes/rl-0.5.adoc b/docs/release-notes/rl-0.5.adoc
index f6416fb3..5b45d110 100644
--- a/docs/release-notes/rl-0.5.adoc
+++ b/docs/release-notes/rl-0.5.adoc
@@ -41,3 +41,5 @@ https://github.com/notashelf[notashelf]:
* Added lsp_lines plugin for showing diagnostic messages
* Added a configuration option for choosing the leader key
+
+* The package used for neovim is now customizable by the user, using <>. For best results, always use an unwrapped package.
diff --git a/modules/basic/config.nix b/modules/basic/config.nix
index 6e4237c3..93293467 100644
--- a/modules/basic/config.nix
+++ b/modules/basic/config.nix
@@ -138,7 +138,7 @@ in {
${optionalString (!cfg.enableEditorconfig) ''
let g:editorconfig = v:false
''}
- ${optionalString (cfg.spellChecking.enable) ''
+ ${optionalString cfg.spellChecking.enable ''
set spell
set spelllang=${toString cfg.spellChecking.language}
''}
diff --git a/modules/basic/module.nix b/modules/basic/module.nix
index 3f8e49a7..17936073 100644
--- a/modules/basic/module.nix
+++ b/modules/basic/module.nix
@@ -1,11 +1,19 @@
{
+ pkgs,
lib,
- config,
...
}:
with lib;
with builtins; {
options.vim = {
+ package = mkOption {
+ type = types.package;
+ default = pkgs.neovim-unwrapped;
+ description = ''
+ The neovim package to use. You will need to use an unwrapped package for this option to work as intended.
+ '';
+ };
+
debugMode = {
enable = mkEnableOption "debug mode";
level = mkOption {
diff --git a/modules/default.nix b/modules/default.nix
index 1e06398c..815055c9 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -6,7 +6,7 @@ inputs: {
extraSpecialArgs ? {},
}: let
inherit (pkgs) neovim-unwrapped wrapNeovim vimPlugins;
- inherit (builtins) map filter isString toString getAttr hasAttr attrNames;
+ inherit (builtins) map filter isString toString getAttr;
inherit (pkgs.vimUtils) buildVimPluginFrom2Nix;
extendedLib = import ../lib/stdlib-extended.nix lib;
@@ -18,11 +18,7 @@ inputs: {
module = extendedLib.evalModules {
modules = [configuration] ++ nvimModules;
- specialArgs =
- {
- modulesPath = toString ./.;
- }
- // extraSpecialArgs;
+ specialArgs = {modulesPath = toString ./.;} // extraSpecialArgs;
};
buildPlug = {pname, ...} @ args:
@@ -59,9 +55,10 @@ inputs: {
(f: f != null)
plugins);
- neovim = wrapNeovim neovim-unwrapped {
- viAlias = vimOptions.viAlias;
- vimAlias = vimOptions.vimAlias;
+ neovim = wrapNeovim vimOptions.package {
+ inherit (vimOptions) viAlias;
+ inherit (vimOptions) vimAlias;
+
configure = {
customRC = vimOptions.builtConfigRC;
@@ -72,7 +69,6 @@ inputs: {
};
};
in {
- imports = [./assertions.nix];
inherit (module) options config;
inherit (module._module.args) pkgs;
inherit neovim;