66 lines
1.8 KiB
Nix
Raw Normal View History

2026-05-04 11:29:17 +02:00
{
# Consumes a non-flake input as raw source by setting `flake = false`.
description = "Consume a non-flake input as raw source";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
releaseData = {
url = "path:./release-data";
flake = false;
};
};
outputs =
{ self, nixpkgs, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
manifest = builtins.fromJSON (builtins.readFile "${self.inputs.releaseData}/manifest.json");
renderWave = wave: "${wave.stage}: ${toString wave.percentage}% owned by ${wave.owner}";
reportText = builtins.concatStringsSep "\n" (
[
"release: ${manifest.release}"
"channel: ${manifest.channel}"
"waves:"
]
++ map renderWave manifest.waves
);
in
{
packages.${system}.default = pkgs.writeShellApplication {
name = "show-raw-release";
text = ''
cat <<'EOF'
${reportText}
EOF
'';
};
checks.${system}.release-data =
pkgs.runCommand "non-flake-input-check"
{
releaseName = manifest.release;
waveCount = toString (builtins.length manifest.waves);
rawManifest = builtins.readFile "${self.inputs.releaseData}/manifest.json";
}
''
if [ "$releaseName" != "edge-cache-2026-05" ]; then
echo "unexpected release name: $releaseName" >&2
exit 1
fi
if [ "$waveCount" != "2" ]; then
echo "unexpected wave count: $waveCount" >&2
exit 1
fi
printf '%s\n' "$rawManifest" | grep -q '"channel": "canary"'
echo ok > "$out"
'';
};
}