···11+# Some workflows depend on the base branch of the PR, but changing the base branch is not included in the default trigger events, which would be `opened`, `synchronize` or `reopened`.
22+# Instead it causes an `edited` event.
33+# Since `edited` is also triggered when PR title/body is changed, we use this wrapper workflow, to run the other workflows conditionally only.
44+# There are already feature requests for adding a `base_changed` event:
55+# - https://github.com/orgs/community/discussions/35058
66+# - https://github.com/orgs/community/discussions/64119
77+#
88+# Instead of adding this to each workflow's pull_request_target event, we trigger this in a separate workflow.
99+# This has the advantage, that we can actually skip running those jobs for simple edits like changing the title or description.
1010+# The actual trigger happens by closing and re-opening the pull request, which triggers the default pull_request_target events.
1111+# This is much simpler and reliable than other approaches.
1212+1313+name: "Edited base branch"
1414+1515+on:
1616+ pull_request_target:
1717+ types: [edited]
1818+1919+permissions: {}
2020+2121+jobs:
2222+ base:
2323+ name: Trigger jobs
2424+ runs-on: ubuntu-24.04
2525+ if: github.event.changes.base.ref.from && github.event.changes.base.ref.from != github.event.pull_request.base.ref
2626+ steps:
2727+ # Use a GitHub App to create the PR so that CI gets triggered
2828+ # The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
2929+ # We only need Pull Requests: write here, but the app is also used for backports.
3030+ - uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
3131+ id: app-token
3232+ with:
3333+ app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
3434+ private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
3535+ permission-pull-requests: write
3636+3737+ - env:
3838+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
3939+ REPOSITORY: ${{ github.repository }}
4040+ NUMBER: ${{ github.event.number }}
4141+ run: |
4242+ gh api \
4343+ --method PATCH \
4444+ /repos/"$REPOSITORY"/pulls/"$NUMBER" \
4545+ -f "state=closed"
4646+ gh api \
4747+ --method PATCH \
4848+ /repos/"$REPOSITORY"/pulls/"$NUMBER" \
4949+ -f "state=open"
···1010 paths:
1111 - .github/workflows/nixpkgs-vet.yml
1212 pull_request_target:
1313- # This workflow depends on the base branch of the PR, but changing the base branch is not included in the default trigger events, which would be `opened`, `synchronize` or `reopened`.
1414- # Instead it causes an `edited` event, so we need to add it explicitly here.
1515- # While `edited` is also triggered when the PR title/body is changed, this PR action is fairly quick, and PRs don't get edited **that** often, so it shouldn't be a problem.
1616- # There is a feature request for adding a `base_changed` event: https://github.com/orgs/community/discussions/35058
1717- types: [opened, synchronize, reopened, edited]
18131914permissions: {}
2015
-2
.github/workflows/no-channel.yml
···55 paths:
66 - .github/workflows/no-channel.yml
77 pull_request_target:
88- # Re-run should be triggered when the base branch is updated, instead of silently failing
99- types: [opened, synchronize, reopened, edited]
108119permissions: {}
1210
-38
ci/eval/default.nix
···88 procps,
99 nixVersions,
1010 jq,
1111- sta,
1211 python3,
1312}:
1413···188187 rm "$chunkOutputDir"/stats/"$seq_end"
189188 fi
190189191191- # Make sure the glob doesn't break when there's no files
192192- shopt -s nullglob
193190 cat "$chunkOutputDir"/result/* > $out/paths
194194- cat "$chunkOutputDir"/stats/* > $out/stats.jsonstream
195191 '';
196192197193 combine =
···202198 {
203199 nativeBuildInputs = [
204200 jq
205205- sta
206201 ];
207202 }
208203 ''
···224219 end) | from_entries}
225220 ) | from_entries
226221 ' > $out/outpaths.json
227227-228228- # Computes min, mean, error, etc. for a list of values and outputs a JSON from that
229229- statistics() {
230230- local stat=$1
231231- sta --transpose |
232232- jq --raw-input --argjson stat "$stat" -n '
233233- [
234234- inputs |
235235- split("\t") |
236236- { key: .[0], value: (.[1] | fromjson) }
237237- ] |
238238- from_entries |
239239- {
240240- key: ($stat | join(".")),
241241- value: .
242242- }'
243243- }
244244-245245- # Gets all available number stats (without .sizes because those are constant and not interesting)
246246- readarray -t stats < <(jq -cs '.[0] | del(.sizes) | paths(type == "number")' ${resultsDir}/*/stats.jsonstream)
247247-248248- # Combines the statistics from all evaluations
249249- {
250250- echo "{ \"key\": \"minAvailMemory\", \"value\": $(cat ${resultsDir}/*/min-avail-memory | sta --brief --min) }"
251251- echo "{ \"key\": \"minFreeSwap\", \"value\": $(cat ${resultsDir}/*/min-free-swap | sta --brief --min) }"
252252- cat ${resultsDir}/*/total-time | statistics '["totalTime"]'
253253- for stat in "''${stats[@]}"; do
254254- cat ${resultsDir}/*/stats.jsonstream |
255255- jq --argjson stat "$stat" 'getpath($stat)' |
256256- statistics "$stat"
257257- done
258258- } |
259259- jq -s from_entries > $out/stats.json
260222261223 mkdir -p $out/stats
262224
+1
doc/release-notes/rl-2505.section.md
···17171818- The default GHC version has been updated from 9.6 to 9.8.
1919 `haskellPackages` also uses Stackage LTS 23 (instead of LTS 22) as a baseline.
2020+ We aim to remove the old GHC versions 8.10, 9.0 and 9.2 in the next release in accordance with [the new GHC deprecation policy](https://discourse.nixos.org/t/nixpkgs-ghc-deprecation-policy-user-feedback-necessary/64153).
20212122- LLVM has been updated from LLVM 16 (on Darwin) and LLVM 18 (on other platforms) to LLVM 19.
2223 This introduces some backwards‐incompatible changes; see the [upstream release notes](https://releases.llvm.org/) for details.
+1-1
doc/release-notes/rl-2511.section.md
···33## Highlights {#sec-nixpkgs-release-25.11-highlights}
44<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
5566-- Added `allowVariants` to gate availability of package sets like `pkgsLLVM`, `pkgsMusl`, `pkgsZig`, etc.
66+- Added `allowVariants` to gate availability of package sets like `pkgsLLVM`, `pkgsMusl`, `pkgsZig`, etc. This option will be removed in a future release.
7788## Backward Incompatibilities {#sec-nixpkgs-release-25.11-incompatibilities}
99
···66automatically from NixOS's Git repository after certain tests have
77passed and all packages have been built. These channels are:
8899-- *Stable channels*, such as [`nixos-24.11`](https://channels.nixos.org/nixos-24.11).
99+- *Stable channels*, such as [`nixos-25.05`](https://channels.nixos.org/nixos-25.05).
1010 These only get conservative bug fixes and package upgrades. For
1111 instance, a channel update may cause the Linux kernel on your system
1212 to be upgraded from 4.19.34 to 4.19.38 (a minor bug fix), but not
···1919 radical changes between channel updates. It's not recommended for
2020 production systems.
21212222-- *Small channels*, such as [`nixos-24.11-small`](https://channels.nixos.org/nixos-24.11-small)
2222+- *Small channels*, such as [`nixos-25.05-small`](https://channels.nixos.org/nixos-25.05-small)
2323 or [`nixos-unstable-small`](https://channels.nixos.org/nixos-unstable-small).
2424 These are identical to the stable and unstable channels described above,
2525 except that they contain fewer binary packages. This means they get updated
···38383939When you first install NixOS, you're automatically subscribed to the
4040NixOS channel that corresponds to your installation source. For
4141-instance, if you installed from a 24.11 ISO, you will be subscribed to
4242-the `nixos-24.11` channel. To see which NixOS channel you're subscribed
4141+instance, if you installed from a 25.05 ISO, you will be subscribed to
4242+the `nixos-25.05` channel. To see which NixOS channel you're subscribed
4343to, run the following as root:
44444545```ShellSession
···5454```
55555656(Be sure to include the `nixos` parameter at the end.) For instance, to
5757-use the NixOS 24.11 stable channel:
5757+use the NixOS 25.05 stable channel:
58585959```ShellSession
6060-# nix-channel --add https://channels.nixos.org/nixos-24.11 nixos
6060+# nix-channel --add https://channels.nixos.org/nixos-25.05 nixos
6161```
62626363If you have a server, you may want to use the "small" channel instead:
64646565```ShellSession
6666-# nix-channel --add https://channels.nixos.org/nixos-24.11-small nixos
6666+# nix-channel --add https://channels.nixos.org/nixos-25.05-small nixos
6767```
68686969And if you want to live on the bleeding edge:
···117117118118```nix
119119{
120120- system.autoUpgrade.channel = "https://channels.nixos.org/nixos-24.11";
120120+ system.autoUpgrade.channel = "https://channels.nixos.org/nixos-25.05";
121121}
122122```
+1-1
nixos/doc/manual/release-notes/rl-2505.section.md
···452452 Names are now known at evaluation time and customizable via the new options `image.baseName`, `image.extension`, `image.fileName` and `image.filePath` with the latter returning a path relative to the derivations out path (e.g. `iso/${image.fileName` for iso images).
453453454454 | `system.build` Option | Old Filename | New Filename |
455455- |--------------------------+------------------------------------------------------------+-----------------------------------------------------------------|
455455+ | ------------------------ | ---------------------------------------------------------- | ----------------------------------------------------------------|
456456 | amazonImage | nixos-amazon-image-25.05pre-git-x86_64-linux.vhd | nixos-image-amazon-25.05pre-git-x86_64-linux.vhd |
457457 | azureImage | disk.vhd | nixos-image-azure-25.05pre-git-x86_64-linux.vhd |
458458 | digitalOceanImage | nixos.qcow2.gz | nixos-image-digital-ocean-25.05pre-git-x86_64-linux.qcow2.gz |
+3-3
pkgs/applications/emulators/wine/sources.nix
···132132133133 unstable = fetchurl rec {
134134 # NOTE: Don't forget to change the hash for staging as well.
135135- version = "10.5";
135135+ version = "10.7";
136136 url = "https://dl.winehq.org/wine/source/10.x/wine-${version}.tar.xz";
137137- hash = "sha256-wDbsHvR2dHdKX5lFgwIuni62j+j8GLOox55oWzvsibw=";
137137+ hash = "sha256-dRNnoxCZkNcD5ZDi21MBh8Th39Lo5hNzq4S0L+EbGPo=";
138138139139 patches = [
140140 # Also look for root certificates at $NIX_SSL_CERT_FILE
···144144 # see https://gitlab.winehq.org/wine/wine-staging
145145 staging = fetchFromGitLab {
146146 inherit version;
147147- hash = "sha256-rXA/55rwQSJR247E4H7cQdTtXRmjomRbls7THV3jfcE=";
147147+ hash = "sha256-4doo7B3eEoQaml6KX02OhcLGGiLcgNhYq4ry/iB7kLc=";
148148 domain = "gitlab.winehq.org";
149149 owner = "wine";
150150 repo = "wine-staging";
+12
pkgs/applications/misc/pagefind/default.nix
···1212 npmHooks,
1313 python3,
1414 rustc,
1515+ versionCheckHook,
1516 wasm-bindgen-cli_0_2_92,
1617 wasm-pack,
1718}:
···6566 hash = "sha256-xFVMWX3q3za1w8v58Eysk6vclPd4qpCuQMjMcwwHoh0=";
6667 };
67686969+ env.GIT_VERSION = version;
7070+6871 postPatch = ''
7272+ # Set the correct version, e.g. for `pagefind --version`
7373+ node .backstage/version.cjs
7474+6975 # Tricky way to run npmConfigHook multiple times
7076 (
7177 local postPatchHooks=() # written to by npmConfigHook
···162168 '';
163169164170 buildFeatures = [ "extended" ];
171171+172172+ doInstallCheck = true;
173173+174174+ nativeInstallCheckInputs = [
175175+ versionCheckHook
176176+ ];
165177166178 meta = {
167179 description = "Generate low-bandwidth search index for your static website";
···33# and how deep in the tree they live. Equally-"popular" paths are then
44# sorted by name.
55#
66-# The existing writeReferencesToFile prints the paths in a simple
77-# ascii-based sorting of the paths.
66+# The existing writeClosure prints the paths in a simple ascii-based sorting of the paths.
87#
98# Sorting the paths by graph improves the chances that the difference
109# between two builds appear near the end of the list, instead of near