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;
};
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;
in
{
build = {
inherit initFile initSource;
package = config.build.packageUnchecked;
wrappedNeovim = wrappedNeovim'.override (prev: {
nvimPackage = 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;
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";

View file

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

View file

@ -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";
}
];

View file

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

View file

@ -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"; };

View file

@ -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";

View file

@ -39,18 +39,9 @@ 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 {
nixvimConfig.config.build.package.overrideAttrs (old: {
passthru = old.passthru or { } // rec {
inherit (nixvimConfig) config options;
extend =
extension:
@ -62,5 +53,6 @@ let
};
nixvimExtend = lib.warn "<nixvim>.nixvimExtend has been renamed to <nixvim>.extend" extend;
};
});
in
mkNvim module