modules/output: move symlinkJoin to build.package

This commit is contained in:
Matt Sturgeon 2025-01-20 13:50:50 +00:00
parent 731699a24c
commit 00586f8f1b
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
7 changed files with 62 additions and 51 deletions

View file

@ -113,6 +113,15 @@ in
readOnly = true; readOnly = true;
}; };
nvimPackage = mkOption {
type = types.package;
description = ''
Wrapped Neovim (without man-docs, printInitPackage, etc).
'';
readOnly = true;
internal = true;
};
initFile = mkOption { initFile = mkOption {
type = types.path; type = types.path;
description = '' description = ''
@ -310,10 +319,10 @@ in
} }
); );
wrappedNeovim' = pkgs.wrapNeovimUnstable package neovimConfig; wrappedNeovim = pkgs.wrapNeovimUnstable package neovimConfig;
customRC = helpers.concatNonEmptyLines [ customRC = helpers.concatNonEmptyLines [
(helpers.wrapVimscriptForLua wrappedNeovim'.initRc) (helpers.wrapVimscriptForLua wrappedNeovim.initRc)
config.content config.content
]; ];
@ -356,20 +365,33 @@ in
} }
else else
config.package; config.package;
wrappedNeovim = wrappedNeovim'.override (prev: {
wrapperArgs =
(if lib.isString prev.wrapperArgs then prev.wrapperArgs else lib.escapeShellArgs prev.wrapperArgs)
+ " "
+ extraWrapperArgs;
wrapRc = false;
});
in in
{ {
build = { build = {
package = config.build.packageUnchecked;
packageUnchecked = wrappedNeovim;
inherit initFile initSource; 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 { printInitPackage = pkgs.writeShellApplication {
name = "nixvim-print-init"; name = "nixvim-print-init";

View file

@ -296,7 +296,7 @@ in
cfg.runCommand cfg.name cfg.runCommand cfg.name
{ {
nativeBuildInputs = lib.optionals cfg.buildNixvim [ nativeBuildInputs = lib.optionals cfg.buildNixvim [
config.build.packageUnchecked config.build.nvimPackage
]; ];
inherit (failedExpectations) warnings assertions; inherit (failedExpectations) warnings assertions;

View file

@ -33,7 +33,7 @@ in
''; '';
assertions = [ 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."; message = "More than one plugin is defined in packpathDirs, expected one plugin pack.";
} }
]; ];
@ -50,7 +50,7 @@ in
]; ];
assertions = [ 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."; message = "Only one plugin is defined in packpathDirs, expected at least two.";
} }
]; ];
@ -79,7 +79,7 @@ in
''; '';
assertions = [ 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."; message = "More than one plugin is defined in packpathDirs.";
} }
]; ];
@ -107,7 +107,7 @@ in
''; '';
assertions = [ 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."; message = "More than one plugin is defined in packpathDirs.";
} }
]; ];
@ -134,7 +134,7 @@ in
''; '';
assertions = [ 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."; message = "More than one plugin is defined in packpathDirs.";
} }
]; ];
@ -188,11 +188,11 @@ in
''; '';
assertions = [ 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"; 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"; message = "Less than two opt plugins are defined in packpathDirs";
} }
]; ];
@ -235,7 +235,7 @@ in
''; '';
assertions = [ 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"; message = "More than one start plugin is defined in packpathDirs";
} }
]; ];
@ -305,7 +305,7 @@ in
''; '';
assertions = [ 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"; message = "More than one start plugin is defined in packpathDirs";
} }
]; ];
@ -373,7 +373,7 @@ in
assertions = [ assertions = [
{ {
# plugin-pack, nvim-treesitter, nvim-lspconfig, telescope-nvim, nvim-cmp # 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"; message = "Wrong number of plugins in packpathDirs";
} }
]; ];

View file

@ -26,7 +26,6 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ environment.systemPackages = [
cfg.build.package cfg.build.package
cfg.build.printInitPackage ];
] ++ lib.optional cfg.enableMan cfg.build.manDocsPackage;
}; };
} }

View file

@ -34,8 +34,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = [ home.packages = [
cfg.build.package cfg.build.package
cfg.build.printInitPackage ];
] ++ lib.optional cfg.enableMan cfg.build.manDocsPackage;
home.sessionVariables = mkIf cfg.defaultEditor { EDITOR = "nvim"; }; home.sessionVariables = mkIf cfg.defaultEditor { EDITOR = "nvim"; };

View file

@ -35,8 +35,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ environment.systemPackages = [
cfg.build.package cfg.build.package
cfg.build.printInitPackage ];
] ++ lib.optional cfg.enableMan cfg.build.manDocsPackage;
environment.variables = { environment.variables = {
VIM = mkIf (!cfg.wrapRc) "/etc/nvim"; VIM = mkIf (!cfg.wrapRc) "/etc/nvim";

View file

@ -39,28 +39,20 @@ let
]; ];
inherit extraSpecialArgs; inherit extraSpecialArgs;
}; };
inherit (nixvimConfig.config) enableMan build;
inherit (nixvimConfig._module.args.pkgs) symlinkJoin;
in in
(symlinkJoin { nixvimConfig.config.build.package.overrideAttrs (old: {
name = "nixvim"; passthru = old.passthru or { } // rec {
paths = [ inherit (nixvimConfig) config options;
build.package extend =
build.printInitPackage extension:
] ++ lib.optional enableMan build.manDocsPackage; mkNvim {
meta.mainProgram = "nvim"; imports = [
}) mod
// rec { extension
inherit (nixvimConfig) config options; ];
extend = };
extension: nixvimExtend = lib.warn "<nixvim>.nixvimExtend has been renamed to <nixvim>.extend" extend;
mkNvim { };
imports = [ });
mod
extension
];
};
nixvimExtend = lib.warn "<nixvim>.nixvimExtend has been renamed to <nixvim>.extend" extend;
};
in in
mkNvim module mkNvim module