workflows: use ARM runners

ARM runners are supposed to be more energy efficient than x86. Also,
from limited testing, they appear to be faster for the eval jobs as
well. Average run time for the "Outpaths (x86_64-linux)" job was 4m 27s,
so far. In the first run, this job came in at 3m 9s. This effect did not
show for other jobs, yet.

The following two exceptions are made right now:
- nixpkgs-lib-tests currently fails on the ARM runner building Nix 2.3
- nixpkgs-vet is currently pinned to a x86_64-linux only binary release

+1 -1
.github/workflows/backport.yml
···
backport:
name: Backport Pull Request
if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true && (github.event.action != 'labeled' || startsWith(github.event.label.name, 'backport'))
-
runs-on: ubuntu-24.04
steps:
# Use a GitHub App to create the PR so that CI gets triggered
# The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
···
backport:
name: Backport Pull Request
if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true && (github.event.action != 'labeled' || startsWith(github.event.label.name, 'backport'))
+
runs-on: ubuntu-24.04-arm
steps:
# Use a GitHub App to create the PR so that CI gets triggered
# The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
+1 -1
.github/workflows/check-cherry-picks.yml
···
jobs:
check:
name: cherry-pick-check
-
runs-on: ubuntu-24.04
if: github.repository_owner == 'NixOS'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
···
jobs:
check:
name: cherry-pick-check
+
runs-on: ubuntu-24.04-arm
if: github.repository_owner == 'NixOS'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+1 -1
.github/workflows/check-format.yml
···
nixos:
name: fmt-check
-
runs-on: ubuntu-24.04
needs: get-merge-commit
if: needs.get-merge-commit.outputs.mergedSha
steps:
···
nixos:
name: fmt-check
+
runs-on: ubuntu-24.04-arm
needs: get-merge-commit
if: needs.get-merge-commit.outputs.mergedSha
steps:
+2 -2
.github/workflows/codeowners-v2.yml
···
# Check that code owners is valid
check:
name: Check
-
runs-on: ubuntu-24.04
needs: get-merge-commit
if: github.repository_owner == 'NixOS' && needs.get-merge-commit.outputs.mergedSha
steps:
···
# Request reviews from code owners
request:
name: Request
-
runs-on: ubuntu-24.04
if: github.repository_owner == 'NixOS'
steps:
- uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
···
# Check that code owners is valid
check:
name: Check
+
runs-on: ubuntu-24.04-arm
needs: get-merge-commit
if: github.repository_owner == 'NixOS' && needs.get-merge-commit.outputs.mergedSha
steps:
···
# Request reviews from code owners
request:
name: Request
+
runs-on: ubuntu-24.04-arm
if: github.repository_owner == 'NixOS'
steps:
- uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
+1 -1
.github/workflows/eval-aliases.yml
···
eval-aliases:
name: Eval nixpkgs with aliases enabled
-
runs-on: ubuntu-24.04
needs: [ get-merge-commit ]
steps:
- name: Check out the PR at the test merge commit
···
eval-aliases:
name: Eval nixpkgs with aliases enabled
+
runs-on: ubuntu-24.04-arm
needs: [ get-merge-commit ]
steps:
- name: Check out the PR at the test merge commit
+8 -8
.github/workflows/eval.yml
···
attrs:
name: Attributes
-
runs-on: ubuntu-24.04
needs: get-merge-commit
if: needs.get-merge-commit.outputs.mergedSha
outputs:
···
outpaths:
name: Outpaths
-
runs-on: ubuntu-24.04
needs: [ attrs, get-merge-commit ]
strategy:
fail-fast: false
···
steps:
- name: Enable swap
run: |
-
sudo fallocate -l 10G /swapfile
-
sudo chmod 600 /swapfile
-
sudo mkswap /swapfile
-
sudo swapon /swapfile
- name: Download the list of all attributes
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
···
process:
name: Process
-
runs-on: ubuntu-24.04
needs: [ outpaths, attrs, get-merge-commit ]
outputs:
targetRunId: ${{ steps.targetRunId.outputs.targetRunId }}
···
# Separate job to have a very tightly scoped PR write token
tag:
name: Tag
-
runs-on: ubuntu-24.04
needs: [ attrs, process ]
if: needs.process.outputs.targetRunId
permissions:
···
attrs:
name: Attributes
+
runs-on: ubuntu-24.04-arm
needs: get-merge-commit
if: needs.get-merge-commit.outputs.mergedSha
outputs:
···
outpaths:
name: Outpaths
+
runs-on: ubuntu-24.04-arm
needs: [ attrs, get-merge-commit ]
strategy:
fail-fast: false
···
steps:
- name: Enable swap
run: |
+
sudo fallocate -l 10G /swap
+
sudo chmod 600 /swap
+
sudo mkswap /swap
+
sudo swapon /swap
- name: Download the list of all attributes
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
···
process:
name: Process
+
runs-on: ubuntu-24.04-arm
needs: [ outpaths, attrs, get-merge-commit ]
outputs:
targetRunId: ${{ steps.targetRunId.outputs.targetRunId }}
···
# Separate job to have a very tightly scoped PR write token
tag:
name: Tag
+
runs-on: ubuntu-24.04-arm
needs: [ attrs, process ]
if: needs.process.outputs.targetRunId
permissions:
+1 -1
.github/workflows/get-merge-commit.yml
···
jobs:
resolve-merge-commit:
-
runs-on: ubuntu-24.04
outputs:
mergedSha: ${{ steps.merged.outputs.mergedSha }}
steps:
···
jobs:
resolve-merge-commit:
+
runs-on: ubuntu-24.04-arm
outputs:
mergedSha: ${{ steps.merged.outputs.mergedSha }}
steps:
+1 -1
.github/workflows/labels.yml
···
jobs:
labels:
name: label-pr
-
runs-on: ubuntu-24.04
if: "github.repository_owner == 'NixOS' && !contains(github.event.pull_request.title, '[skip treewide]')"
steps:
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
···
jobs:
labels:
name: label-pr
+
runs-on: ubuntu-24.04-arm
if: "github.repository_owner == 'NixOS' && !contains(github.event.pull_request.title, '[skip treewide]')"
steps:
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
+1 -1
.github/workflows/manual-nixpkgs-v2.yml
···
jobs:
nixpkgs:
name: nixpkgs-manual-build
-
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
···
jobs:
nixpkgs:
name: nixpkgs-manual-build
+
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+1 -1
.github/workflows/nix-parse-v2.yml
···
tests:
name: nix-files-parseable-check
-
runs-on: ubuntu-24.04
needs: get-merge-commit
if: "needs.get-merge-commit.outputs.mergedSha && !contains(github.event.pull_request.title, '[skip treewide]')"
steps:
···
tests:
name: nix-files-parseable-check
+
runs-on: ubuntu-24.04-arm
needs: get-merge-commit
if: "needs.get-merge-commit.outputs.mergedSha && !contains(github.event.pull_request.title, '[skip treewide]')"
steps:
+1 -1
.github/workflows/no-channel.yml
···
startsWith(github.event.pull_request.base.ref, 'nixos-') ||
startsWith(github.event.pull_request.base.ref, 'nixpkgs-')
name: "This PR is targeting a channel branch"
-
runs-on: ubuntu-24.04
steps:
- run: |
cat <<EOF
···
startsWith(github.event.pull_request.base.ref, 'nixos-') ||
startsWith(github.event.pull_request.base.ref, 'nixpkgs-')
name: "This PR is targeting a channel branch"
+
runs-on: ubuntu-24.04-arm
steps:
- run: |
cat <<EOF
+1 -1
.github/workflows/periodic-merge.yml
···
jobs:
merge:
-
runs-on: ubuntu-24.04
name: ${{ inputs.from }} → ${{ inputs.into }}
steps:
# Use a GitHub App to create the PR so that CI gets triggered
···
jobs:
merge:
+
runs-on: ubuntu-24.04-arm
name: ${{ inputs.from }} → ${{ inputs.into }}
steps:
# Use a GitHub App to create the PR so that CI gets triggered