From 5387b308ea088744a009c561a94a08060cf945da Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Mon, 28 Sep 2026 16:03:03 -0500 Subject: [PATCH] vimPlugins: reject aliases that shadow plugins An alias that shadows a plugin only threw when that attribute was evaluated with aliases enabled. CI evaluates with allowAliases = false, so a shadowing alias passed review and left rust-tools-nvim unevaluable for users. Check the alias names against the plugin set whenever vimPlugins is evaluated, as mpvScripts does, and drop the per-alias check this replaces. --- pkgs/applications/editors/vim/plugins/aliases.nix | 10 +--------- pkgs/applications/editors/vim/plugins/default.nix | 9 ++++++++- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/editors/vim/plugins/aliases.nix b/pkgs/applications/editors/vim/plugins/aliases.nix index 6f89bd8b1ac7..33f4a01ef76d 100644 --- a/pkgs/applications/editors/vim/plugins/aliases.nix +++ b/pkgs/applications/editors/vim/plugins/aliases.nix @@ -17,16 +17,8 @@ let # sets from building on Hydra. removeDistribute = alias: if lib.isDerivation alias then lib.dontDistribute alias else alias; - # Make sure that we are not shadowing something from - # all-packages.nix. - checkInPkgs = - n: alias: if builtins.hasAttr n prev then throw "Alias ${n} is still in vim-plugins" else alias; - mapAliases = - aliases: - lib.mapAttrs ( - n: alias: removeDistribute (removeRecurseForDerivations (checkInPkgs n alias)) - ) aliases; + aliases: lib.mapAttrs (_: alias: removeDistribute (removeRecurseForDerivations alias)) aliases; deprecations = lib.mapAttrs ( old: info: diff --git a/pkgs/applications/editors/vim/plugins/default.nix b/pkgs/applications/editors/vim/plugins/default.nix index 9630944dc0d3..7ace8d226c77 100644 --- a/pkgs/applications/editors/vim/plugins/default.nix +++ b/pkgs/applications/editors/vim/plugins/default.nix @@ -55,7 +55,14 @@ let inherit llvmPackages; }; - aliases = if config.allowAliases then (import ./aliases.nix lib) else final: prev: { }; + aliases = + final: prev: + let + defined = import ./aliases.nix lib final prev; + shadowed = builtins.attrNames (builtins.intersectAttrs prev defined); + in + assert lib.assertMsg (shadowed == [ ]) "vimPlugins aliases shadow plugins: ${toString shadowed}"; + lib.optionalAttrs config.allowAliases defined; in lib.pipe initialPackages [ (extends plugins)