diff --git a/flake.nix b/flake.nix index 62db4909d..1d54eac26 100644 --- a/flake.nix +++ b/flake.nix @@ -171,7 +171,7 @@ { otherSplices = final.generateSplicesForMkScope "nixDependencies"; f = import ./packaging/dependencies.nix { - inherit stdenv; + inherit inputs stdenv; pkgs = final; }; }; diff --git a/packaging/dependencies.nix b/packaging/dependencies.nix index f06b65dee..0af670bfb 100644 --- a/packaging/dependencies.nix +++ b/packaging/dependencies.nix @@ -1,14 +1,33 @@ # These overrides are applied to the dependencies of the Nix components. { + # Flake inputs; used for sources + inputs, + # The raw Nixpkgs, not affected by this scope pkgs, stdenv, }: +let + prevStdenv = stdenv; +in + let inherit (pkgs) lib; + + stdenv = if prevStdenv.isDarwin && prevStdenv.isx86_64 then darwinStdenv else prevStdenv; + + # Fix the following error with the default x86_64-darwin SDK: + # + # error: aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on macOS 10.13 or newer + # + # Despite the use of the 10.13 deployment target here, the aligned + # allocation function Clang uses with this setting actually works + # all the way back to 10.6. + darwinStdenv = pkgs.overrideSDK prevStdenv { darwinMinVersion = "10.13"; }; + in scope: { inherit stdenv;