overlay: make finalNix depend on the nix version being used by a package

This should address both of the following (were 35 is more general and
36 a specific case)

- #35
- #36
This commit is contained in:
Fabián Heredia Montiel 2024-09-25 19:46:13 -06:00
parent 58893c0c52
commit 6def4cc69a

View file

@ -62,8 +62,22 @@ let
overlay =
lib.genAttrs overridelist_upstream (
name: if (lib.functionArgs prev.${name}.override ? "nix") then prev.${name}.override {
nix = final.nixVersions.stable_upstream;
name:
if (lib.functionArgs prev.${name}.override ? "nix") then
let
# Get the two common inputs of a derivation/package.
inputs = prev.${name}.buildInputs ++ prev.${name}.nativeBuildInputs;
nixDependency = lib.findFirst
(drv: drv.pname == "nix")
prev.nixVersions.stable_upstream # default to stable nix if nix is not an input
inputs;
nixMajor = lib.versions.major nixDependency.version;
nixMinor = lib.versions.minor nixDependency.version;
nixAttr = "nix_${nixMajor}_${nixMinor}";
finalNix = final.nixVersions.${nixAttr};
in
prev.${name}.override {
nix = finalNix;
} else prev.${name}
) // {
lix-overlay-present = 1;