{
  lib,
  callPackage,
  writeShellApplication,
  stdenv,
}:
let
  mainInfo = callPackage ./main.nix { };
  channelsURL = "https://raw.githubusercontent.com/NixOS/infra/refs/heads/main/channels.nix";
in
writeShellApplication {
  name = "version-info";

  runtimeEnv = {
    NIX_CONFIG = ''
      experimental-features = nix-command flakes pipe-operators
    '';
  };

  text = ''
    # Download channel info from NixOS/infra
    curl ${channelsURL} | nix eval --file - --json > channels.json

    # Use channels.nix to build channels.toml
    nix build --impure \
      --inputs-from ${toString ../..} \
      --file ${./supported-versions.nix} \
      --argstr system ${stdenv.hostPlatform.system} \
      --arg-from-file channelsJSON channels.json \
      --out-link channels.toml

    (
      echo "# DO NOT MODIFY!"
      echo "# This file was generated by ${
        lib.strings.removePrefix (toString ../.. + "/") (toString ./default.nix)
      }"
      cat ${mainInfo}
      echo
      cat channels.toml
    ) > version-info.toml
  '';
}
