-
-
Notifications
You must be signed in to change notification settings - Fork 16.7k
doc/rl-2511: announce projected x86_64-darwin
deprecation
#415566
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Intel Mac user is here) |
Intel mac users can become x86_64-linux users by then 😼 |
No support for MacBook Pro 13 in https://github.com/NixOS/nixos-hardware :( |
Yes, I think that’s probably the best path forward for the hardware. Though I expect that MacPorts will continue building software throughout the support lifetime of macOS 26, if we drop the platform sooner than that; not so sure about Homebrew. @sikmir I believe https://github.com/NixOS/nixos-hardware/tree/master/apple/t2 should work to run NixOS to run on your machine? But it’ll be a year and a half before the earliest Nixpkgs release I’d expect to lack support, anyway. |
I would expect more community effort on adding support for nixos on the hardware with an announced deprecation, for those who aren't going to upgrade hardware. |
doc/release-notes/rl-2511.section.md
Outdated
@@ -3,6 +3,9 @@ | |||
## Highlights {#sec-nixpkgs-release-25.11-highlights} | |||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> | |||
|
|||
- The `x86_64-darwin` platform will be deprecated within the next few years, in light of Apple’s announcement that macOS 26 will be the final version to support Intel Macs. | |||
Based on Apple’s security support policy and our available build and maintenance resources, we expect the first Nixpkgs release without `x86_64-darwin` support to be between 26.11 and 28.11. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Realistically, I don’t think we’ll be able to maintain support past 27.05. 27.11 will release after macOS 28, which will have diminished Rosetta 2 support. Depending on what that looks like, it may not be feasible for contributors to build and test on x86_64-darwin. We could maintain x86_64-darwin as a cross target, but that comes with some pretty big caveats (like no Python support).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed that the last year of potential support here seems very unlikely to be worth the trade‐off, since we’d most likely have to hold the builders back and deal with limited ability to test things at a time when the platform will be on its last legs. Do you want me to tighten the end of the range to 27.11?
95fc0fb
to
d0db927
Compare
Updated to 26.11–27.11 based on discussion with Randy on Matrix. |
Can we clarify what deprecation/support actually means in this context? Can packages still declare that OS as a supported platform even if there aren't going to be caches, CI builds etc? |
We may want to be more explicit: x86_64-darwin support will be removed once it is no longer possible to target it using Rosetta 2 on the latest OS release (because that’s what the builders will be running).
If the limited Rosetta 2 works with nixpkgs, we might be able to continue support until 29.11. It depends on what exactly Apple means by that, which we (unfortunately) won’t know until the first beta with of macOS 28 is released. |
Well, ultimately it just means what we’ll support – whatever you can get working might work, but it’s up to you to keep it working. But in practice, you’d have to build hundreds to thousands of packages to get anything running once the builders stop, and there’d be no expectation that any contributor avoid breaking the platform. In practice, I expect things would break quickly: we’d have no reason to avoid using AArch64‐only SDK versions in core packages or work around toolchain updates and Apple source releases that drop upstream support for Once we do drop support it’s unlikely the Darwin team will want to devote our limited time to reviewing things related to it, so I’d expect we’d hard‐drop Ultimately (I don’t want to be dismissive of people still using the platform – I currently daily drive an Intel MacBook Pro! If I was just making decisions based on what’s convenient for me personally I’d stretch out
I don’t think that we definitely want to keep supporting it while Rosetta 2 works. Let’s say that in a year’s time the macOS 27 beta is out, and that (as I expect) indicators of Intel Mac usage seem to have dropped in response to the announcement (they’re already around the percentage of users we chose to cut off by aligning with Apple’s OS support policy). There are things other than Rosetta 2 that could make it hard to continue supporting it, e.g.:
And there are benefits to dropping support. Hydra has been getting slower and slower with jobset growth recently and I do think that we should make sure to give reasonable notice for dropping a platform like this, and 26.11 seems like the earliest release for that. But I wouldn’t want to pre‐commit to definitely continuing to support a platform that is now dying beyond that, especially since depending on Apple’s aggressiveness it’s possible that 26.11 will have to make tough decisions between dropping I can’t really imagine a justification for making an exception to the policy of not supporting macOS releases that are out of Apple security support that we’re just enacting this release to extend support to 29.11. I’m not sure if I’m interpreting you correctly though – I thought you were saying we should commit to 27.11 as the latest release, but I’m happy to put it back to the 26.11–28.11 range if we’re not confident about that :) |
I picked 29.11 because that would be the first version with macOS 28 (which is the first release with Rosetta 2 only for old games) as a minimum version in nixpkgs.
|
Fair enough, but that’d mean 28.11 and 29.05 would ship with a minimum version of macOS 27 but supporting a macOS platform that it can’t even boot on, right? That seems questionable to me. If we have to go down the |
@reckenrode I’m not sure how we should move forward with this. I’d like to get a preliminary announcement out with a range we feel pretty confident that the drop will be within. I’d be happy to revert this back to 26.11 to 28.11 if you think there’s a chance there’ll be the maintenance resources past 27.11. Going as far as 29.11 seems excessive since it seems extremely unlikely we’d want to keep maintaining it past the end of security support. 26.11 is the first release coinciding with the latest macOS dropping support and is the earliest possible release there could be things (e.g. source releases or other packages requiring the latest SDK if it drops |
macOS 27 is going to drop Intel support, so we’re pre‐announcing the inevitable so that people can prepare. We don’t yet know exactly which Nixpkgs release will drop support for `x86_64-darwin`, but the 26.11–27.11 range, between the release of the first OS version to not support the platform and the release of the first OS version to not be able to fully emulate it, seems like a safe bet. We already announced that we’re aligning our OS support policy with Apple’s starting in 25.11, so it’s very unlikely that we could justify making an exception to devote resources to `x86_64-darwin` support in 28.11 and beyond, after Apple stop releasing security updates for the platform. However, the end of support in Nixpkgs may come sooner than that. Apple have announced that [Rosetta 2 will be pared down] by macOS 28 to not support emulation of arbitrary applications. We use `aarch64-darwin` builder machines exclusively and rely on Rosetta 2 to build packages for `x86_64-darwin`. As we try to keep the builders on the latest OS versions, that would mean that we’d lose the ability to build for `x86_64-darwin` around the release of 27.11, unless we held back on updating the OS on the builders for a year. [Rosetta 2 will be pared down]: https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment Additionally, `x86_64-darwin` is the slowest system to build due to our limited Mac builder resources and the emulation overhead. Dropping support will more than double our effective `aarch64-darwin` build capacity and benefit the whole project by reducing the bottleneck on world rebuilds during `staging-next` cycles. It’s hard to find good data on the relative market share, but the May 2025 [Steam Hardware Survey] shows over 80% of their macOS users already being on Apple Silicon. Therefore, I’d personally expect us to drop support in 26.11 or 27.11, given the trade‐off between the resources it will take to continue supporting `x86_64-darwin` and the number of users it is likely to benefit. (And I’m typing this on a Intel Mac myself…) [Steam Hardware Survey]: https://store.steampowered.com/hwsurvey/processormfg/
d0db927
to
5fdda89
Compare
After some discussion on Matrix in light of the upcoming demotion in Rust, I’ve updated the wording to be clearer about what the deprecation will mean, the potential of it happening in a staged manner, and 26.11 as the most likely release. |
macOS 27 is going to drop Intel support, so we’re pre‐announcing the inevitable so that people can prepare. We don’t yet know exactly which Nixpkgs release will drop support for
x86_64-darwin
, but the 26.11–27.11 range, between the release of the first OS version to not support the platform and the release of the first OS version to not be able to fully emulate it, seems like a safe bet.We already announced that we’re aligning our OS support policy with Apple’s starting in 25.11, so it’s very unlikely that we could justify making an exception to devote resources to
x86_64-darwin
support in 28.11 and beyond, after Apple stop releasing security updates for the platform.However, the end of support in Nixpkgs may come sooner than that. Apple have announced that Rosetta 2 will be pared down by macOS 28 to not support emulation of arbitrary applications. We use
aarch64-darwin
builder machines exclusively and rely on Rosetta 2 to build packages forx86_64-darwin
. As we try to keep the builders on the latest OS versions, that would mean that we’d lose the ability to build forx86_64-darwin
around the release of 27.11, unless we held back on updating the OS on the builders for a year.Additionally,
x86_64-darwin
is the slowest system to build due to our limited Mac builder resources and the emulation overhead. Dropping support will more than double our effectiveaarch64-darwin
build capacity and benefit the whole project by reducing the bottleneck on world rebuilds duringstaging-next
cycles. It’s hard to find good data on the relative market share, but the May 2025 Steam Hardware Survey shows over 80% of their macOS users already being on Apple Silicon. Therefore, I’d personally expect us to drop support in 26.11 or 27.11, given the trade‐off between the resources it will take to continue supportingx86_64-darwin
and the number of users it is likely to benefit. (And I’m typing this on a Intel Mac myself…)cc @NixOS/darwin-maintainers
Things done
nix.conf
? (See Nix manual)sandbox = relaxed
sandbox = true
nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"
. Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/
)Add a 👍 reaction to pull requests you find important.