From 6e95f125cef14c271cfb999d7ef65f036127e463 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 1 Jun 2025 20:00:17 +0200 Subject: [PATCH] pkgs/overlays/unstable-from-source: fix handling of overlays crossOverlays are just overlays applied only in the final layer --- pkgs/overlays/unstable-from-source.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/overlays/unstable-from-source.nix b/pkgs/overlays/unstable-from-source.nix index cd2ac95..4b40bcb 100644 --- a/pkgs/overlays/unstable-from-source.nix +++ b/pkgs/overlays/unstable-from-source.nix @@ -17,6 +17,13 @@ let "parsed" ]; + # if overlay is found in previous layer, then it was provided in "overlays" argument + # otherwise, it is provided in "crossOverlays" argument. + overlays = self.lib.groupBy (overlay: + if self.lib.elem overlay self.buildPackages.overlays then "allLayers" + else "finalLayer" + ) self.overlays; + unstablePkgs = import unstableSource { # localSystem -> pkgs.stdenv.buildPlatform localSystem = sanitizePlatform self.stdenv.buildPlatform; @@ -24,11 +31,10 @@ let # passing below # config -> pkgs.config config = self.config; - # overlays -> partial of pkgs.overlays - overlays = self.overlays; - # crossOverlays -> partial of pkgs.overlays - # crossOverlays are merged to overlays, not sure what issues that might raise. - # ignoring. + # overlays -> pkgs.buildPackages.overlays + overlays = overlays.allLayers; + # crossOverlays -> pkgs.overlays without pkgs.buildPackages.overlays + crossOverlays = overlays.finalLayer; } // self.lib.optionalAttrs ( self.lib.systems.equals self.stdenv.buildPlatform self.stdenv.hostPlatform ) {