Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ For new packages please briefly describe the package or provide a link to its ho
- Built on platform:
- [ ] x86_64-linux
- [ ] aarch64-linux
- [ ] x86_64-darwin
- [ ] aarch64-darwin
- Tested, as applicable:
- [ ] [NixOS tests] in [nixos/tests].
Expand Down
15 changes: 6 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,18 @@ jobs:
matrix:
include:
- runner: ubuntu-24.04
name: x86_64-linux
systems: x86_64-linux
system: x86_64-linux
builds: [shell, manual-nixos, lib-tests, tarball]
desc: shell, docs, lib, tarball
- runner: ubuntu-24.04-arm
name: aarch64-linux
systems: aarch64-linux
system: aarch64-linux
builds: [shell, manual-nixos, manual-nixpkgs]
desc: shell, docs
- runner: macos-14
name: darwin
systems: aarch64-darwin x86_64-darwin
system: aarch64-darwin
builds: [shell]
desc: shell
name: '${{ matrix.name }}: ${{ matrix.desc }}'
name: '${{ matrix.system }}: ${{ matrix.desc }}'
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
steps:
Expand Down Expand Up @@ -80,7 +77,7 @@ jobs:

- name: Build shell
if: contains(matrix.builds, 'shell')
run: echo "${{ matrix.systems }}" | xargs -n1 nix-build-uncached nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A shell --argstr system
run: nix-build-uncached nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A shell --argstr system '${{ matrix.system }}'

- name: Build NixOS manual
if: |
Expand All @@ -106,5 +103,5 @@ jobs:
contains(fromJSON(inputs.baseBranch).type, 'primary')
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: ${{ inputs.artifact-prefix }}nixos-manual-${{ matrix.name }}
name: ${{ inputs.artifact-prefix }}nixos-manual-${{ matrix.system }}
path: nixos-manual
19 changes: 13 additions & 6 deletions .github/workflows/merge-group.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
with:
persist-credentials: false
sparse-checkout: |
ci/supportedSystems.json
ci/github-script/supportedSystems.js

- id: prepare
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
Expand All @@ -39,6 +39,8 @@ jobs:
with:
script: |
const { classify } = require('./ci/supportedBranches.js')
const supportedSystems = require('./ci/github-script/supportedSystems.js')

const baseBranch = (
context.payload.merge_group?.base_ref ??
context.payload.pull_request.base.ref
Expand All @@ -47,11 +49,16 @@ jobs:
core.setOutput('base', baseClassification)
core.info('base classification:', baseClassification)

core.setOutput('mergedSha', context.payload.merge_group?.head_sha ?? process.env.MERGED_SHA)
core.info(`mergedSha: ${context.payload.merge_group?.head_sha ?? process.env.MERGED_SHA}`)
core.setOutput('targetSha', context.payload.merge_group?.base_sha ?? process.env.TARGET_SHA)
core.info(`targetSha: ${context.payload.merge_group?.base_sha ?? process.env.TARGET_SHA}`)
core.setOutput('systems', require('./ci/supportedSystems.json'))
const mergedSha = context.payload.merge_group?.head_sha ?? process.env.MERGED_SHA
core.setOutput('mergedSha', mergedSha)
core.info(`mergedSha: ${mergedSha}`)

const targetSha = context.payload.merge_group?.base_sha ?? process.env.TARGET_SHA
core.setOutput('targetSha', targetSha)
core.info(`targetSha: ${targetSha}`)

const systems = await supportedSystems({ github, context, targetSha })
core.setOutput('systems', systems)

check:
name: Check
Expand Down
4 changes: 2 additions & 2 deletions ci/eval/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ nix-build ci -A eval.baseline

The two most important arguments are:
- `--arg evalSystems`: The set of systems for which `nixpkgs` should be evaluated.
Defaults to the four official platforms (`x86_64-linux`, `aarch64-linux`, `x86_64-darwin` and `aarch64-darwin`).
Defaults to the [supported systems](../../pkgs/top-level/release-supported-systems.json) for the branch.
Example: `--arg evalSystems '["x86_64-linux" "aarch64-darwin"]'`
- `--arg quickTest`: Enables testing a single chunk of the current system only for quick iteration.
Example: `--arg quickTest true`

The following arguments can be used to fine-tune performance:
- `--max-jobs`: The maximum number of derivations to run at the same time.
Only each [supported system](../supportedSystems.json) gets a separate derivation, so it doesn't make sense to set this higher than that number.
Only each supported system gets a separate derivation, so it doesn't make sense to set this higher than that number.
- `--cores`: The number of cores to use for each job.
Recommended to set this to the number of cores on your system divided by `--max-jobs`.
- `--arg chunkSize`: The number of attributes that are evaluated simultaneously on a single core.
Expand Down
5 changes: 3 additions & 2 deletions ci/eval/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ let
fileset = unions (
map (lib.path.append ../..) [
".version"
"ci/supportedSystems.json"
"ci/eval/attrpaths.nix"
"ci/eval/chunk.nix"
"ci/eval/outpaths.nix"
Expand All @@ -53,7 +52,9 @@ let
);
};

supportedSystems = builtins.fromJSON (builtins.readFile ../supportedSystems.json);
supportedSystems = builtins.fromJSON (
builtins.readFile ../../pkgs/top-level/release-supported-systems.json
);

attrpathsSuperset =
{
Expand Down
4 changes: 3 additions & 1 deletion ci/eval/outpaths.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
attrNamesOnly ? false,

# Set this to `null` to build for builtins.currentSystem only
systems ? builtins.fromJSON (builtins.readFile ../supportedSystems.json),
systems ? builtins.fromJSON (
builtins.readFile (path + "/pkgs/top-level/release-supported-systems.json")
),

# Customize the config used to evaluate nixpkgs
extraNixpkgsConfig ? { },
Expand Down
4 changes: 3 additions & 1 deletion ci/github-script/prepare.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const { classify } = require('../supportedBranches.js')
const { postReview, dismissReviews } = require('./reviews.js')
const reviewKey = 'prepare'
const supportedSystems = require('./supportedSystems.js')

module.exports = async ({ github, context, core, dry }) => {
const pull_number = context.payload.pull_request.number
Expand Down Expand Up @@ -209,7 +210,8 @@ module.exports = async ({ github, context, core, dry }) => {
core.setOutput('mergedSha', mergedSha)
core.setOutput('targetSha', targetSha)

core.setOutput('systems', require('../supportedSystems.json'))
const systems = await supportedSystems({ github, context, targetSha })
core.setOutput('systems', systems)

const files = (
await github.paginate(github.rest.pulls.listFiles, {
Expand Down
10 changes: 10 additions & 0 deletions ci/github-script/supportedSystems.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = async ({ github, context, targetSha }) => {
const { content, encoding } = (
await github.rest.repos.getContent({
...context.repo,
path: 'pkgs/top-level/release-supported-systems.json',
ref: targetSha,
})
).data
return JSON.parse(Buffer.from(content, encoding).toString())
}
3 changes: 3 additions & 0 deletions doc/redirects.json
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,9 @@
"tar-files": [
"index.html#tar-files"
],
"x86_64-darwin-26.05": [
"release-notes.html#x86_64-darwin-26.05"
],
"zip-files": [
"index.html#zip-files"
],
Expand Down
21 changes: 21 additions & 0 deletions doc/release-notes/rl-2605.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,27 @@
- Ruby default version has been updated from 3.3 to 3.4.
Refer to the [upstream release announcement](https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/) for details.

- []{#x86_64-darwin-26.05}

**This will be the last release of Nixpkgs to support `x86_64-darwin`.**
Platform support will be maintained and binaries built until Nixpkgs 26.05 goes out of support at the end of 2026.
For 26.11, due to Apple’s deprecation of the platform and limited build infrastructure and developer time, we will no longer build packages for `x86_64-darwin` or support building them from source.

By the time of 26.11’s release, Homebrew will offer only limited [Tier 3](https://docs.brew.sh/Support-Tiers#tier-3) support for the platform, but MacPorts will likely continue to support it for a long time.
We also recommend users consider installing NixOS, which should continue to run on essentially all Intel Macs, especially after Apple stops security support for macOS 26 in 2028.

A warning will be displayed for `x86_64-darwin` users; you can set [](#opt-allowDeprecatedx86_64Darwin) in the [Nixpkgs configuration](https://nixos.org/manual/nixpkgs/stable/#chap-packageconfig) to silence it.
The {file}`~/.config/nixpkgs/config.nix` file will not work for users of flakes, who can instead replace `nixpkgs.legacyPackages.x86_64-darwin` with

```nix
import nixpkgs {
system = "x86_64-darwin";
config.allowDeprecatedx86_64Darwin = true;
}
```

nix-darwin users can set [`nixpkgs.config.allowDeprecatedx86_64Darwin`](https://nix-darwin.github.io/nix-darwin/manual/index.html#opt-nixpkgs.config) in their system configurations.

- The Factor programming language has been updated to Version 0.101 bringing various improvements to UI rendering and HiDPI support as well as support for Unicode 17.0.0.
Starting from Version 0.100, the Factor VM is compiled with Clang.

Expand Down
4 changes: 2 additions & 2 deletions pkgs/top-level/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -451,8 +451,8 @@ let
Silence the warning for the upcoming deprecation of the
`x86_64-darwin` platform in Nixpkgs 26.11.

This does nothing in 25.11, and is provided there for forward
compatibility of configurations with 26.05.
See the [release notes](#x86_64-darwin-26.05) for more
information.
'';
};

Expand Down
32 changes: 29 additions & 3 deletions pkgs/top-level/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,25 @@
or dot-files.
*/

let
# We hoist this above the closure so that the same thunk is shared
# between multiple imports of Nixpkgs. This ensures that commands
# like `nix eval nixpkgs#legacyPackages.x86_64-darwin.pkgsStatic.hello`
# print only one warning, which would otherwise be spammy in common
# scenarios that instantiate many copies of Nixpkgs.
#
# Unfortunately, flakes’ handling of transitive dependencies mean
# that it’s still likely users will see multiple warnings, but
# there’s nothing we can do about that within the constraints of the
# Nix language.
x86_64DarwinDeprecationWarning =
pristineLib.warn
"Nixpkgs 26.05 will be the last release to support x86_64-darwin; see https://nixos.org/manual/nixpkgs/unstable/release-notes#x86_64-darwin-26.05"
(x: x);

pristineLib = import ../../lib;
in

{
# The system packages will be built on. See the manual for the
# subtle division of labor between these two `*System`s and the three
Expand Down Expand Up @@ -55,8 +74,6 @@ let # Rename the function arguments

in
let
pristineLib = import ../../lib;

lib =
if __allowFileset then
pristineLib
Expand All @@ -82,8 +99,17 @@ let
(throwIfNot (lib.isList overlays) "The overlays argument to nixpkgs must be a list.")
(throwIfNot (lib.all lib.isFunction overlays) "All overlays passed to nixpkgs must be functions.")
(throwIfNot (lib.isList crossOverlays) "The crossOverlays argument to nixpkgs must be a list.")
(throwIfNot (lib.all lib.isFunction crossOverlays) "All crossOverlays passed to nixpkgs must be functions.")
(
throwIfNot (lib.all lib.isFunction crossOverlays) "All crossOverlays passed to nixpkgs must be functions."
if
(
((localSystem.isDarwin && localSystem.isx86) || (crossSystem.isDarwin && crossSystem.isx86))
&& config.allowDeprecatedx86_64Darwin == false
)
then
x86_64DarwinDeprecationWarning
else
x: x
);

localSystem = lib.systems.elaborate args.localSystem;
Expand Down
6 changes: 3 additions & 3 deletions pkgs/top-level/nixpkgs-basic-release-checks.nix
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ pkgs.runCommand "nixpkgs-release-checks"
set -x
nix-env -f $src \
--show-trace --argstr system "$platform" \
--arg config '{ allowAliases = false; }' \
--arg config '{ allowAliases = false; allowDeprecatedx86_64Darwin = true; }' \
--option experimental-features 'no-url-literals' \
-qa --drv-path --system-filter \* --system \
"''${opts[@]}" 2> eval-warnings.log > packages1
Expand All @@ -72,7 +72,7 @@ pkgs.runCommand "nixpkgs-release-checks"

nix-env -f $src2 \
--show-trace --argstr system "$platform" \
--arg config '{ allowAliases = false; }' \
--arg config '{ allowAliases = false; allowDeprecatedx86_64Darwin = true; }' \
--option experimental-features 'no-url-literals' \
-qa --drv-path --system-filter \* --system \
"''${opts[@]}" > packages2
Expand All @@ -95,7 +95,7 @@ pkgs.runCommand "nixpkgs-release-checks"

nix-env -f $src \
--show-trace --argstr system "$platform" \
--arg config '{ allowAliases = false; }' \
--arg config '{ allowAliases = false; allowDeprecatedx86_64Darwin = true; }' \
--option experimental-features 'no-url-literals' \
-qa --drv-path --system-filter \* --system --meta --xml \
"''${opts[@]}" > /dev/null
Expand Down
2 changes: 1 addition & 1 deletion pkgs/top-level/release-haskell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
$ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix
*/
{
supportedSystems ? builtins.fromJSON (builtins.readFile ../../ci/supportedSystems.json),
supportedSystems ? builtins.fromJSON (builtins.readFile ./release-supported-systems.json),
}:

let
Expand Down
7 changes: 1 addition & 6 deletions pkgs/top-level/release-staging.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,7 @@
revision = "0000000000000000000000000000000000000000";
},
# The platform doubles for which we build Nixpkgs.
supportedSystems ? [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
],
supportedSystems ? builtins.fromJSON (builtins.readFile ./release-supported-systems.json),
# Attributes passed to nixpkgs. Don't build packages marked as unfree.
nixpkgsArgs ? {
config = {
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion pkgs/top-level/release.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
system ? builtins.currentSystem,
officialRelease ? false,
# The platform doubles for which we build Nixpkgs.
supportedSystems ? builtins.fromJSON (builtins.readFile ../../ci/supportedSystems.json),
supportedSystems ? builtins.fromJSON (builtins.readFile ./release-supported-systems.json),
# The platform triples for which we build bootstrap tools.
bootstrapConfigs ? [
"arm64-apple-darwin"
Expand Down
16 changes: 10 additions & 6 deletions pkgs/top-level/stage.nix
Original file line number Diff line number Diff line change
Expand Up @@ -268,12 +268,16 @@ let
]
++ overlays;
${if stdenv.hostPlatform == stdenv.buildPlatform then "localSystem" else "crossSystem"} = {
config = lib.systems.parse.tripleFromSystem (
stdenv.hostPlatform.parsed
// {
cpu = lib.systems.parse.cpuTypes.i686;
}
);
config =
if isSupported then
lib.systems.parse.tripleFromSystem (
stdenv.hostPlatform.parsed
// {
cpu = lib.systems.parse.cpuTypes.i686;
}
)
else
"i686-unknown-linux-gnu";
};
}
else
Expand Down
Loading