From c6ac6df30f36afc38c62d270a9d6105dc2f4bba5 Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Tue, 21 Oct 2025 11:30:28 +0200 Subject: [PATCH] top-level/stage: assert no by-name overwrites This asserts that no by-name packages are overwritten by definitions in all-packages.nix. --- pkgs/top-level/stage.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index 926a132a3805e..12d3b9315e9a5 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -186,7 +186,11 @@ let overlays ; } res self super; + + conflictingAttrs = lib.intersectAttrs res super; in + assert lib.assertMsg (conflictingAttrs == { }) + "The following attributes were defined both in `pkgs/top-level/all-packages.nix` and elsewhere, most likely in `pkgs/by-name/`: ${lib.concatStringsSep ", " (lib.attrNames conflictingAttrs)}"; res; aliases = self: super: lib.optionalAttrs config.allowAliases (import ./aliases.nix lib self super);