diff --git a/modules/top-level/output.nix b/modules/top-level/output.nix index 399a971a..c9f52ac9 100644 --- a/modules/top-level/output.nix +++ b/modules/top-level/output.nix @@ -113,6 +113,15 @@ in readOnly = true; }; + nvimPackage = mkOption { + type = types.package; + description = '' + Wrapped Neovim (without man-docs, printInitPackage, etc). + ''; + readOnly = true; + internal = true; + }; + initFile = mkOption { type = types.path; description = '' @@ -310,10 +319,10 @@ in } ); - wrappedNeovim' = pkgs.wrapNeovimUnstable package neovimConfig; + wrappedNeovim = pkgs.wrapNeovimUnstable package neovimConfig; customRC = helpers.concatNonEmptyLines [ - (helpers.wrapVimscriptForLua wrappedNeovim'.initRc) + (helpers.wrapVimscriptForLua wrappedNeovim.initRc) config.content ]; @@ -356,20 +365,33 @@ in } else config.package; - - wrappedNeovim = wrappedNeovim'.override (prev: { - wrapperArgs = - (if lib.isString prev.wrapperArgs then prev.wrapperArgs else lib.escapeShellArgs prev.wrapperArgs) - + " " - + extraWrapperArgs; - wrapRc = false; - }); in { build = { - package = config.build.packageUnchecked; - packageUnchecked = wrappedNeovim; inherit initFile initSource; + package = config.build.packageUnchecked; + + nvimPackage = wrappedNeovim.override (prev: { + wrapperArgs = + (if lib.isString prev.wrapperArgs then prev.wrapperArgs else lib.escapeShellArgs prev.wrapperArgs) + + " " + + extraWrapperArgs; + wrapRc = false; + }); + + packageUnchecked = pkgs.symlinkJoin { + name = "nixvim"; + paths = + with config.build; + [ + nvimPackage + printInitPackage + ] + ++ lib.optionals config.enableMan [ + manDocsPackage + ]; + meta.mainProgram = "nvim"; + }; printInitPackage = pkgs.writeShellApplication { name = "nixvim-print-init"; diff --git a/modules/top-level/test.nix b/modules/top-level/test.nix index 63e62888..ed4cfc65 100644 --- a/modules/top-level/test.nix +++ b/modules/top-level/test.nix @@ -296,7 +296,7 @@ in cfg.runCommand cfg.name { nativeBuildInputs = lib.optionals cfg.buildNixvim [ - config.build.packageUnchecked + config.build.nvimPackage ]; inherit (failedExpectations) warnings assertions; diff --git a/tests/test-sources/modules/performance/combine-plugins.nix b/tests/test-sources/modules/performance/combine-plugins.nix index d5f7d640..b200db1d 100644 --- a/tests/test-sources/modules/performance/combine-plugins.nix +++ b/tests/test-sources/modules/performance/combine-plugins.nix @@ -33,7 +33,7 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one plugin is defined in packpathDirs, expected one plugin pack."; } ]; @@ -50,7 +50,7 @@ in ]; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" >= 2; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" >= 2; message = "Only one plugin is defined in packpathDirs, expected at least two."; } ]; @@ -79,7 +79,7 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one plugin is defined in packpathDirs."; } ]; @@ -107,7 +107,7 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one plugin is defined in packpathDirs."; } ]; @@ -134,7 +134,7 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one plugin is defined in packpathDirs."; } ]; @@ -188,11 +188,11 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one start plugin is defined in packpathDirs"; } { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "opt" == 2; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "opt" == 2; message = "Less than two opt plugins are defined in packpathDirs"; } ]; @@ -235,7 +235,7 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one start plugin is defined in packpathDirs"; } ]; @@ -305,7 +305,7 @@ in ''; assertions = [ { - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 1; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1; message = "More than one start plugin is defined in packpathDirs"; } ]; @@ -373,7 +373,7 @@ in assertions = [ { # plugin-pack, nvim-treesitter, nvim-lspconfig, telescope-nvim, nvim-cmp - assertion = pluginCount config.build.packageUnchecked config.build.extraFiles "start" == 5; + assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 5; message = "Wrong number of plugins in packpathDirs"; } ]; diff --git a/wrappers/darwin.nix b/wrappers/darwin.nix index 4a4ce940..3c78ee8d 100644 --- a/wrappers/darwin.nix +++ b/wrappers/darwin.nix @@ -26,7 +26,6 @@ in config = mkIf cfg.enable { environment.systemPackages = [ cfg.build.package - cfg.build.printInitPackage - ] ++ lib.optional cfg.enableMan cfg.build.manDocsPackage; + ]; }; } diff --git a/wrappers/hm.nix b/wrappers/hm.nix index 0ecb4d23..47867738 100644 --- a/wrappers/hm.nix +++ b/wrappers/hm.nix @@ -34,8 +34,7 @@ in config = mkIf cfg.enable { home.packages = [ cfg.build.package - cfg.build.printInitPackage - ] ++ lib.optional cfg.enableMan cfg.build.manDocsPackage; + ]; home.sessionVariables = mkIf cfg.defaultEditor { EDITOR = "nvim"; }; diff --git a/wrappers/nixos.nix b/wrappers/nixos.nix index 698bfa9c..e82b7fdc 100644 --- a/wrappers/nixos.nix +++ b/wrappers/nixos.nix @@ -35,8 +35,7 @@ in config = mkIf cfg.enable { environment.systemPackages = [ cfg.build.package - cfg.build.printInitPackage - ] ++ lib.optional cfg.enableMan cfg.build.manDocsPackage; + ]; environment.variables = { VIM = mkIf (!cfg.wrapRc) "/etc/nvim"; diff --git a/wrappers/standalone.nix b/wrappers/standalone.nix index a7eac7ce..724ef418 100644 --- a/wrappers/standalone.nix +++ b/wrappers/standalone.nix @@ -39,28 +39,20 @@ let ]; inherit extraSpecialArgs; }; - inherit (nixvimConfig.config) enableMan build; - inherit (nixvimConfig._module.args.pkgs) symlinkJoin; in - (symlinkJoin { - name = "nixvim"; - paths = [ - build.package - build.printInitPackage - ] ++ lib.optional enableMan build.manDocsPackage; - meta.mainProgram = "nvim"; - }) - // rec { - inherit (nixvimConfig) config options; - extend = - extension: - mkNvim { - imports = [ - mod - extension - ]; - }; - nixvimExtend = lib.warn ".nixvimExtend has been renamed to .extend" extend; - }; + nixvimConfig.config.build.package.overrideAttrs (old: { + passthru = old.passthru or { } // rec { + inherit (nixvimConfig) config options; + extend = + extension: + mkNvim { + imports = [ + mod + extension + ]; + }; + nixvimExtend = lib.warn ".nixvimExtend has been renamed to .extend" extend; + }; + }); in mkNvim module