# 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. # NOTE: this is not just a version constraint, but a request to make Darwin # provide this version level of support. Removing this minimum version # request will regress the above error. darwinStdenv = pkgs.overrideSDK prevStdenv { darwinMinVersion = "10.13"; }; in scope: { inherit stdenv; aws-sdk-cpp = (pkgs.aws-sdk-cpp.override { apis = [ "identity-management" "s3" "transfer" ]; customMemoryManagement = false; }).overrideAttrs { # only a stripped down version is built, which takes a lot less resources # to build, so we don't need a "big-parallel" machine. requiredSystemFeatures = [ ]; }; boehmgc = pkgs.boehmgc.override { enableLargeConfig = true; }; # TODO Hack until https://github.com/NixOS/nixpkgs/issues/45462 is fixed. boost = (pkgs.boost.override { extraB2Args = [ "--with-container" "--with-context" "--with-coroutine" "--with-iostreams" ]; enableIcu = false; }).overrideAttrs (old: { # Need to remove `--with-*` to use `--with-libraries=...` buildPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.buildPhase; installPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.installPhase; }); libgit2 = if lib.versionAtLeast pkgs.libgit2.version "1.9.0" then pkgs.libgit2 else pkgs.libgit2.overrideAttrs (attrs: { # libgit2: Nixpkgs 24.11 has < 1.9.0, which needs our patches nativeBuildInputs = attrs.nativeBuildInputs or [ ] # gitMinimal does not build on Windows. See packbuilder patch. ++ lib.optionals (!stdenv.hostPlatform.isWindows) [ # Needed for `git apply`; see `prePatch` pkgs.buildPackages.gitMinimal ]; # Only `git apply` can handle git binary patches prePatch = attrs.prePatch or "" + lib.optionalString (!stdenv.hostPlatform.isWindows) '' patch() { git apply } ''; patches = attrs.patches or [ ] ++ [ ./patches/libgit2-mempack-thin-packfile.patch ] # gitMinimal does not build on Windows, but fortunately this patch only # impacts interruptibility ++ lib.optionals (!stdenv.hostPlatform.isWindows) [ # binary patch; see `prePatch` ./patches/libgit2-packbuilder-callback-interruptible.patch ]; }); }