[Backport release-26.05] nixos/nixpkgs: add zstd flavored nixexprs tarballs (#539631)

This commit is contained in:
Martin Weinelt
2026-07-10 11:12:37 +00:00
committed by GitHub
4 changed files with 77 additions and 4 deletions

View File

@@ -4,7 +4,17 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- Create the first release note entry in this section!
- The {file}`nixexprs.tar.xz` tarball will be discontinued together with Nixpkgs
27.05 after 2027-12-31. Migrate to the {file}`nixexprs.tar.zst` tarball
instead.
This affects for example users who pull Nixpkgs as a flake input from
https://channels.nixos.org:
```diff
-nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz";
+nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.zst";
```
## Backward Incompatibilities {#sec-nixpkgs-release-26.11-incompatibilities}

View File

@@ -4,7 +4,17 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- Create the first release note entry in this section!
- The {file}`nixexprs.tar.xz` tarball will be discontinued together with Nixpkgs
27.05 after 2027-12-31. Migrate to the {file}`nixexprs.tar.zst` tarball
instead.
This affects for example users who pull Nixpkgs as a flake input from
https://channels.nixos.org:
```diff
-nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz";
+nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.zst";
```
## New Modules {#sec-release-26.11-new-modules}

View File

@@ -18,7 +18,10 @@ pkgs.releaseTools.makeSourceTarball {
officialRelease = false; # FIXME: fix this in makeSourceTarball
inherit version versionSuffix;
buildInputs = [ pkgs.nix ];
buildInputs = with pkgs; [
nix
zstd
];
distPhase = ''
rm -rf .git
@@ -32,6 +35,35 @@ pkgs.releaseTools.makeSourceTarball {
NIX_STATE_DIR=$TMPDIR nix-env -f ../$releaseName/default.nix -qaP --meta --show-trace --xml \* > /dev/null
cd ..
chmod -R u+w $releaseName
tar cfJ $out/tarballs/$releaseName.tar.xz $releaseName
# The compression tasks are shortlived; use all available CPUs (-T0) to
# prioritize fast channel advancement.
XZ_OPT="-T0" tar \
--create \
--file=$out/tarballs/$releaseName.tar.xz \
--xz \
--absolute-names \
--owner=0 \
--group=0 \
--numeric-owner \
--format=gnu \
--sort=name \
--mtime="@$SOURCE_DATE_EPOCH" \
--hard-dereference \
$releaseName
tar \
--create \
--file="$out/tarballs/$releaseName.tar.zst" \
--use-compress-program="zstd -19 -T0" \
--absolute-names \
--owner=0 \
--group=0 \
--numeric-owner \
--format=gnu \
--sort=name \
--mtime="@$SOURCE_DATE_EPOCH" \
--hard-dereference \
$releaseName
'';
}

View File

@@ -24,6 +24,7 @@ pkgs.releaseTools.sourceTarball {
jq
lib-tests
brotli
zstd
];
configurePhase = ''
@@ -63,6 +64,9 @@ pkgs.releaseTools.sourceTarball {
# Some context: https://github.com/NixOS/infra/issues/438
distPhase = ''
mkdir -p $out/tarballs
# The compression tasks are shortlived; use all available CPUs (-T0) to
# prioritize fast channel advancement.
XZ_OPT="-T0" tar \
--create \
--xz \
@@ -79,5 +83,22 @@ pkgs.releaseTools.sourceTarball {
--mode=ug+w \
--hard-dereference \
$src $(pwd)/{.version-suffix,.git-revision}
tar \
--create \
--use-compress-program="zstd -19 -T0" \
--file=$out/tarballs/$releaseName.tar.zst \
--absolute-names \
--transform="s|^$src|$releaseName|g" \
--transform="s|^$(pwd)|$releaseName|g" \
--owner=0 \
--group=0 \
--numeric-owner \
--format=gnu \
--sort=name \
--mtime="@$SOURCE_DATE_EPOCH" \
--mode=ug+w \
--hard-dereference \
$src $(pwd)/{.version-suffix,.git-revision}
'';
}