nix-community / nixbox

NixOS Vagrant boxes [maintainer=@ifurther]
https://app.vagrantup.com/nixbox/
MIT License
304 stars 101 forks source link

Use permanent URL instead of latest #61

Open FranklinYu opened 4 years ago

FranklinYu commented 4 years ago

Currently both 32-bit and 64-bit templates are referring to the “latest” ISO of current release. For example, the 64-bit one refers to

https://channels.nixos.org/nixos-20.03/latest-nixos-minimal-x86_64-linux.iso

This has the problem that there will be a gap between a new release in the channel and an update in this repository. During this gap, the checksum would fail.

I hereby propose to change the link to one with exact version number, such as

https://releases.nixos.org/nixos/20.03/nixos-20.03.1795.d6c1b566b77/nixos-minimal-20.03.1795.d6c1b566b77-x86_64-linux.iso

for 64-bit. This doesn’t remove the gap, but it allows users to keep using the old (albeit outdated) version during the gap. This change isn’t expected to add much maintenance burden, since the checksum would need an update anyway.

I can certainly make a PR for this, but since this affects maintenance update, I think it’s better to discuss in advance.

Note: the version number 20.03.1795.d6c1b566b77 can be extracted into Packer variable.

FranklinYu commented 4 years ago

It’s easy to find the ISO URLs, but I would also like to update the Ruby script iso_urls_update.rb. It’s easy to find the full version given the channel (20.03 currently), but I’m hesitating whether to automate finding the latest stable channel (LSC).

  1. My way of finding LSC is less “natural”: by looking at the unstable channel, and deduce back a channel.
  2. Maintainers may want to create a new branch for the old channel, so manual work is required anyway.

In conclusion I propose to keep the channel hard-coded in the script, and update it twice a year.

By the way, I’m going to hard-code the URL patterns. Is it acceptable? It could be less adaptive than current solution of HTML look up; note that current URL pattern lasted only for a year (since 145f7ced5011a8dc44c52e66c396643bc5661bc7).

I would also like to know ideas from @cdituri as author of #58.

nrdsp commented 4 years ago

The checksum is failing at the moment btw.

cdituri commented 4 years ago

@nrdsp thank you for reporting the checksum failure.

@FranklinYu apologies for any delay. COVID certainly caused an impact on my side; and I would safely venture everyone else as well. I see you tagged me in your comment a while back. Will carve out some time this weekend to circle back and gather thoughts. Thank you for submitting this issue.

cdituri commented 4 years ago

@FranklinYu makes sense what you propose, least from my perspective. The only gotcha here looks to be the choice of urls.

channels.nixos.org and releases.nixos.org are both backed by s3 bucket. If you hit these directly, for example curl -s 'https://releases.nixos.org/?prefix=nixos/', you'll see that unevaluated javascript is returned.

Thus if nix-community/nixbox chooses to hard-code the channel, I'd propose we walk the latest release using the following url: https://nix-releases.s3.amazonaws.com/?delimiter=/&prefix=nixos/20.03/. It returns structured XML along with a LastModified, see below.

Open to all thoughts, opinions, and suggestions.


curl -s 'https://nix-releases.s3.amazonaws.com/?delimiter=/&prefix=nixos/20.03/' | xmllint --format -
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>nix-releases</Name>
  <Prefix>nixos/20.03/</Prefix>
  <Marker/>
  <MaxKeys>1000</MaxKeys>
  <Delimiter>/</Delimiter>
  <IsTruncated>false</IsTruncated>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1405.a17e021b948</Key>
    <LastModified>2020-04-19T22:02:22.000Z</LastModified>
    <ETag>"555a156b126ceb66f777de2b33446736"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1414.e03eeffd616</Key>
    <LastModified>2020-04-20T11:53:12.000Z</LastModified>
    <ETag>"ae04e8db7d8d45e058c0ed4f95c5f19d"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1418.5272327b81e</Key>
    <LastModified>2020-04-20T21:10:55.000Z</LastModified>
    <ETag>"fe07e5628aa9a82f9cd7e1964804dd5d"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1422.1e90c46c2d9</Key>
    <LastModified>2020-04-21T16:43:04.000Z</LastModified>
    <ETag>"fe951ddceb7550654e7e451c18ac48e1"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1438.63284ecf6fb</Key>
    <LastModified>2020-04-22T20:50:23.000Z</LastModified>
    <ETag>"d7ad2f22383b37d25c3409f63ccf9c41"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1445.95b9c99f6d0</Key>
    <LastModified>2020-04-22T22:46:00.000Z</LastModified>
    <ETag>"f40f71f32fb512d7c4856b999ed24946"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1574.4b6bfecc0bd</Key>
    <LastModified>2020-04-26T15:26:13.000Z</LastModified>
    <ETag>"4ba65c0991c3f1554f77df074736addc"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1577.74a80c5a9ab</Key>
    <LastModified>2020-04-26T17:55:42.000Z</LastModified>
    <ETag>"d09eb114cc5940cd9e9e8036a3a84c59"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1589.9137f05564e</Key>
    <LastModified>2020-04-27T09:27:12.000Z</LastModified>
    <ETag>"b757371f09bc04b722b3481c41eccfae"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1596.2faa76db27c</Key>
    <LastModified>2020-04-28T03:15:22.000Z</LastModified>
    <ETag>"c9160dc84cdde12558a74784b7997ac4"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1602.365ca111211</Key>
    <LastModified>2020-04-29T01:10:25.000Z</LastModified>
    <ETag>"02dcdfeb9fa1fa7a39ce3a35145b66a3"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1619.ab3adfe1c76</Key>
    <LastModified>2020-04-29T06:52:38.000Z</LastModified>
    <ETag>"0ceeea0e17d6d35f34a6beb72dbf7ec4"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1739.4d373182597</Key>
    <LastModified>2020-05-06T08:12:51.000Z</LastModified>
    <ETag>"f767e2877b15c41859515d9343fe35e3"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1754.b0e3df2f843</Key>
    <LastModified>2020-05-07T09:38:41.000Z</LastModified>
    <ETag>"c1eafefa9199df3a1ea086ac2c98a552"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1782.210d8624ac4</Key>
    <LastModified>2020-05-08T16:52:43.000Z</LastModified>
    <ETag>"70aae143bcdd981894781b2e417f9091"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1791.6958957214b</Key>
    <LastModified>2020-05-09T00:11:26.000Z</LastModified>
    <ETag>"0a288f0bbeb0a0ebbdefa1181340ddb9"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1795.d6c1b566b77</Key>
    <LastModified>2020-05-09T11:44:24.000Z</LastModified>
    <ETag>"5986e323f8e07abda59fe08833041862"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1812.14dd961b8d5</Key>
    <LastModified>2020-05-10T15:52:06.000Z</LastModified>
    <ETag>"537492c82b4a9fa563291834ccaa65fb"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1822.5adf2a6c116</Key>
    <LastModified>2020-05-11T13:25:28.000Z</LastModified>
    <ETag>"4f1a6feba24e2355114d7336f4f6148e"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1844.a4f8cec54dc</Key>
    <LastModified>2020-05-14T08:44:29.000Z</LastModified>
    <ETag>"1942c9d502360dc81ce086185b2a4385"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1853.7829e5791ba</Key>
    <LastModified>2020-05-14T19:56:37.000Z</LastModified>
    <ETag>"7e75896fb5367c538b3c2c2e1ad93129"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1866.a7c70f2e10b</Key>
    <LastModified>2020-05-15T11:47:37.000Z</LastModified>
    <ETag>"2be039a694aaa391902716b07e67112a"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1879.91cdcf31357</Key>
    <LastModified>2020-05-16T07:23:34.000Z</LastModified>
    <ETag>"c50f540e62d122c71ca781bad7f0097b"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1885.885a6658073</Key>
    <LastModified>2020-05-16T23:53:08.000Z</LastModified>
    <ETag>"244ef7af6462fd32982e9f3971be6ae9"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1896.025deb80b24</Key>
    <LastModified>2020-05-17T11:52:09.000Z</LastModified>
    <ETag>"885e8fa7906afd0e120f4fb9c8983a0a"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1917.82b5f87fcc7</Key>
    <LastModified>2020-05-19T14:50:00.000Z</LastModified>
    <ETag>"4d05f4f15f7d5c1265ce8208a8747ea1"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1926.f45ccd9d20b</Key>
    <LastModified>2020-05-20T17:52:20.000Z</LastModified>
    <ETag>"3464f770ea997f852224baab1e6dbe57"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1942.6d68b920eb2</Key>
    <LastModified>2020-05-22T01:58:29.000Z</LastModified>
    <ETag>"eb034899f79f83556fa8275d97ea520d"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1950.48723f48ab9</Key>
    <LastModified>2020-05-22T17:14:51.000Z</LastModified>
    <ETag>"63ed1a07ff9a6565a41bea7e4c6aaa03"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1996.fc60ed1fffb</Key>
    <LastModified>2020-05-28T17:18:51.000Z</LastModified>
    <ETag>"be47e8e4c8ac41b03ac1fef6ddc28a5b"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.1998.93b68c7cc5a</Key>
    <LastModified>2020-05-28T19:18:40.000Z</LastModified>
    <ETag>"2ea1098591fab0a435784ac16adbd8bf"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.2012.71c059d12a8</Key>
    <LastModified>2020-05-29T02:50:02.000Z</LastModified>
    <ETag>"9bedbb3c7588e3a67943c820b9dadb1d"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.2013.e985ffea2d6</Key>
    <LastModified>2020-05-29T06:29:56.000Z</LastModified>
    <ETag>"a7d7cdc026b81ebd97bd0b688368e0f3"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.2015.e7752db2fb6</Key>
    <LastModified>2020-05-29T20:08:11.000Z</LastModified>
    <ETag>"0bed3325df536f1e11547c0736af66f1"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03.2059.05a32d8e771</Key>
    <LastModified>2020-06-04T07:28:13.000Z</LastModified>
    <ETag>"44f199c3f8d996b3ac61ab8859d09439"</ETag>
    <Size>3201</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta-410.67c24f6f8a7</Key>
    <LastModified>2020-02-25T11:42:22.000Z</LastModified>
    <ETag>"11b13ac256d690a4e0a10301ed8a3fe7"</ETag>
    <Size>2823</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta-436.43ab8e86ca6</Key>
    <LastModified>2020-03-03T10:05:30.000Z</LastModified>
    <ETag>"17e886b9ecb2db17e4f99122d167f436"</ETag>
    <Size>2823</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta-475.71be729a58e</Key>
    <LastModified>2020-02-20T11:23:38.000Z</LastModified>
    <ETag>"1f76d69c64aea9bcb804e6008a620780"</ETag>
    <Size>2823</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1010.5bf91db519c</Key>
    <LastModified>2020-04-04T01:45:15.000Z</LastModified>
    <ETag>"8606dd07aff91f96774478bc9fb5ca21"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1023.e89b1063fb5</Key>
    <LastModified>2020-04-04T07:27:36.000Z</LastModified>
    <ETag>"7c3c7272fd7e29dcb634d60c71df9876"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1064.4dc8447c55f</Key>
    <LastModified>2020-04-04T15:34:50.000Z</LastModified>
    <ETag>"6c5e9ffdcc93970a79942f48bbb670cd"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1083.7c9e1ecdf5a</Key>
    <LastModified>2020-04-05T17:55:37.000Z</LastModified>
    <ETag>"e6b3205671baece56c574b77d60413f8"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1085.182f229ba7c</Key>
    <LastModified>2020-04-05T22:07:53.000Z</LastModified>
    <ETag>"5b959cc5203dbca213c83ff974bf71cb"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1088.0bb35152be8</Key>
    <LastModified>2020-04-06T09:14:50.000Z</LastModified>
    <ETag>"4698022e0f37dc5a86b40a8519c60e97"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1155.29eddfc36d7</Key>
    <LastModified>2020-04-07T22:27:22.000Z</LastModified>
    <ETag>"2197f1cc3f7543285728714117b56f48"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1301.708cb6b307b</Key>
    <LastModified>2020-04-13T22:26:16.000Z</LastModified>
    <ETag>"470593605b15898cf53e3660047b74c7"</ETag>
    <Size>3263</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1320.9f0f06ac8be</Key>
    <LastModified>2020-04-14T22:52:24.000Z</LastModified>
    <ETag>"5e47e48530d8c220ddeb939b5cf08b31"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1324.21750051b26</Key>
    <LastModified>2020-04-15T21:24:16.000Z</LastModified>
    <ETag>"33f0b2e6be16189004af0420dfe06363"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1341.a438aed5a6c</Key>
    <LastModified>2020-04-16T04:09:31.000Z</LastModified>
    <ETag>"9199ae3dcee245065c717c75bd311f00"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1355.0f920b05cbc</Key>
    <LastModified>2020-04-17T09:13:02.000Z</LastModified>
    <ETag>"5fa8c58bc81421f19982e33ab16bc86c"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta1405.a17e021b948</Key>
    <LastModified>2020-04-19T06:29:05.000Z</LastModified>
    <ETag>"fb2d9d9d70e9d4d436cb150168681a37"</ETag>
    <Size>3264</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta216.d31e383c44e</Key>
    <LastModified>2020-02-22T17:30:08.000Z</LastModified>
    <ETag>"848d6737c92bded2609be3223553a4e7"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta219.153baa26740</Key>
    <LastModified>2020-02-23T13:41:11.000Z</LastModified>
    <ETag>"dc063b6fb916342ea24acb07b59bc6d1"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta248.04aca9ac24a</Key>
    <LastModified>2020-02-23T18:05:44.000Z</LastModified>
    <ETag>"9bac1e59d95049006b2084397de5b45c"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta258.68df00b0ba6</Key>
    <LastModified>2020-02-24T16:20:07.000Z</LastModified>
    <ETag>"e3a9c37999864a04978471f9fa6a058b"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta315.8d49ebf4888</Key>
    <LastModified>2020-02-27T04:08:13.000Z</LastModified>
    <ETag>"834d2d15ce0d56fbac46631fe12289c8"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta321.be346a1f4bd</Key>
    <LastModified>2020-02-27T05:37:47.000Z</LastModified>
    <ETag>"aa142d3dfcc36b34aad5c0cedae7aba0"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta322.f823335caa8</Key>
    <LastModified>2020-02-27T23:47:18.000Z</LastModified>
    <ETag>"35b2b63593cedec3aa093725152338b1"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta331.a2bb258c603</Key>
    <LastModified>2020-02-28T09:38:42.000Z</LastModified>
    <ETag>"a09d01f3099a702fea738dc7d1c4484f"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta335.89536cd763c</Key>
    <LastModified>2020-02-28T21:58:37.000Z</LastModified>
    <ETag>"755a2420a892649c0e2e61f2640f567a"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta358.4f8bc8e10bf</Key>
    <LastModified>2020-02-29T15:09:08.000Z</LastModified>
    <ETag>"b16e290c924abd4607b83f34e6cfab9f"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta377.ebc9620c3f6</Key>
    <LastModified>2020-03-02T00:28:04.000Z</LastModified>
    <ETag>"80dc77aa0160ab54ca9f4f03456ebcee"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta387.61cc1f0dc07</Key>
    <LastModified>2020-03-02T15:54:55.000Z</LastModified>
    <ETag>"f02f6caaa08932ad1122efc1a1f05e03"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta441.08bcfe14ae2</Key>
    <LastModified>2020-03-05T13:34:12.000Z</LastModified>
    <ETag>"170a689ec3b01049063430a7c23c0ff1"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta448.1f99fd2fdbe</Key>
    <LastModified>2020-03-06T07:03:58.000Z</LastModified>
    <ETag>"741d1544dac2d449ae09d2cc455b2f07"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta451.4707311e202</Key>
    <LastModified>2020-03-07T05:46:13.000Z</LastModified>
    <ETag>"9c0fc18aacbfc67fb9abfee3e833042c"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta482.b780aefc621</Key>
    <LastModified>2020-03-07T19:47:32.000Z</LastModified>
    <ETag>"9436b918e591e59811c4dc83011dc2eb"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta497.cbe553c988a</Key>
    <LastModified>2020-03-08T01:54:14.000Z</LastModified>
    <ETag>"ca351c03872bf874c6f6e3c54bdd6cb9"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta499.fb34ac13e46</Key>
    <LastModified>2020-03-08T17:53:59.000Z</LastModified>
    <ETag>"8388572062acdef3362203446c3a455b"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta503.62b2bf3f8e8</Key>
    <LastModified>2020-03-09T07:43:38.000Z</LastModified>
    <ETag>"0297557879fcfc1af4788aaad680aa5f"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta529.da92e0566d1</Key>
    <LastModified>2020-03-10T03:59:01.000Z</LastModified>
    <ETag>"5eb1cebe3c8d2c755d8dbacf2bf5f680"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta536.dbacfa172f9</Key>
    <LastModified>2020-03-10T15:19:58.000Z</LastModified>
    <ETag>"833d9edb7b5b50cbf12e13cac489ef5e"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta570.730453919bd</Key>
    <LastModified>2020-03-13T21:05:35.000Z</LastModified>
    <ETag>"fac5b418ca703772d0b66d79d7dfdcfc"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta591.99a3d7a86fc</Key>
    <LastModified>2020-03-16T12:41:13.000Z</LastModified>
    <ETag>"951b84893eb7b7d19eb3c5466129c633"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta687.16dd1df0817</Key>
    <LastModified>2020-03-20T00:56:33.000Z</LastModified>
    <ETag>"d3d611fab0e509873b50a09671d66cb0"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta695.b2935fbecea</Key>
    <LastModified>2020-03-21T08:03:46.000Z</LastModified>
    <ETag>"2e77fcc26c7de0f5c451ad76bbb14890"</ETag>
    <Size>2804</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta786.c6839e5ae8c</Key>
    <LastModified>2020-03-26T18:25:43.000Z</LastModified>
    <ETag>"a29fa1c958b6549b3b54a4472874e5f0"</ETag>
    <Size>3243</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta806.3a009bd5daf</Key>
    <LastModified>2020-03-26T22:06:42.000Z</LastModified>
    <ETag>"0dec12a0e325cf0bd5f032fbbd0e1d69"</ETag>
    <Size>3243</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta835.85055b3ab7b</Key>
    <LastModified>2020-03-28T01:23:29.000Z</LastModified>
    <ETag>"693d3e8d49a8ddd918cd40e4ec45ceff"</ETag>
    <Size>3243</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <Contents>
    <Key>nixos/20.03/nixos-20.03beta874.b0c285807d6</Key>
    <LastModified>2020-03-28T16:48:37.000Z</LastModified>
    <ETag>"b458707e30dde3a7e32c805c8743a23b"</ETag>
    <Size>3243</Size>
    <StorageClass>STANDARD</StorageClass>
  </Contents>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1405.a17e021b948/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1414.e03eeffd616/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1418.5272327b81e/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1422.1e90c46c2d9/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1438.63284ecf6fb/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1445.95b9c99f6d0/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1574.4b6bfecc0bd/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1577.74a80c5a9ab/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1589.9137f05564e/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1596.2faa76db27c/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1602.365ca111211/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1619.ab3adfe1c76/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1739.4d373182597/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1754.b0e3df2f843/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1782.210d8624ac4/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1791.6958957214b/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1795.d6c1b566b77/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1812.14dd961b8d5/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1822.5adf2a6c116/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1844.a4f8cec54dc/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1853.7829e5791ba/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1866.a7c70f2e10b/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1879.91cdcf31357/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1885.885a6658073/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1896.025deb80b24/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1917.82b5f87fcc7/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1926.f45ccd9d20b/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1942.6d68b920eb2/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1950.48723f48ab9/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1996.fc60ed1fffb/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.1998.93b68c7cc5a/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.2012.71c059d12a8/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.2013.e985ffea2d6/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.2015.e7752db2fb6/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03.2059.05a32d8e771/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta-410.67c24f6f8a7/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta-436.43ab8e86ca6/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta-475.71be729a58e/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1010.5bf91db519c/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1023.e89b1063fb5/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1064.4dc8447c55f/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1083.7c9e1ecdf5a/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1085.182f229ba7c/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1088.0bb35152be8/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1155.29eddfc36d7/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1301.708cb6b307b/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1320.9f0f06ac8be/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1324.21750051b26/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1341.a438aed5a6c/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1355.0f920b05cbc/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta1405.a17e021b948/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta216.d31e383c44e/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta219.153baa26740/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta248.04aca9ac24a/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta258.68df00b0ba6/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta315.8d49ebf4888/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta321.be346a1f4bd/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta322.f823335caa8/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta331.a2bb258c603/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta335.89536cd763c/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta358.4f8bc8e10bf/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta377.ebc9620c3f6/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta387.61cc1f0dc07/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta441.08bcfe14ae2/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta448.1f99fd2fdbe/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta451.4707311e202/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta482.b780aefc621/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta497.cbe553c988a/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta499.fb34ac13e46/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta503.62b2bf3f8e8/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta529.da92e0566d1/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta536.dbacfa172f9/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta570.730453919bd/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta591.99a3d7a86fc/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta687.16dd1df0817/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta695.b2935fbecea/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta786.c6839e5ae8c/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta806.3a009bd5daf/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta835.85055b3ab7b/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>nixos/20.03/nixos-20.03beta874.b0c285807d6/</Prefix>
  </CommonPrefixes>
</ListBucketResult>
cdituri commented 4 years ago

@FranklinYu @zimbatm @PierreR

The below is by no means well written. Just threw something together quick to provide some colour to my comment above. Could be viable if cleaned up and made proper. Thoughts?

#!/usr/bin/env nix-shell
#!nix-shell -i ruby
#
# Heuristic to update the ISO urls
#

require 'open-uri'
require 'json'
require 'rexml/document'
include REXML

isos = {}
keys = []

CHANNEL = "20.03"
BASE_URL = "https://nix-releases.s3.amazonaws.com"
RELEASES_URL = "#{BASE_URL}/?delimiter=/&prefix=nixos/#{CHANNEL}/"

xml = Document.new(open(RELEASES_URL))
xml.elements.each("ListBucketResult/Contents/Key") { |key|
  if key.text !~ /beta/
    keys.push(key.text)
  end
}
latest = keys.sort!.last

keys = []
LATEST_URL = "https://nix-releases.s3.amazonaws.com/?delimiter=/&prefix=#{latest}/"

xml = Document.new(open(LATEST_URL))
xml.elements.each("ListBucketResult/Contents/Key") { |key|
  if key.text =~ /nixos-minimal-.*-linux.iso/
    keys.push(key.text)
  end
}

i686, x86_64 = keys.partition { |el| el =~ /-i686-/ }

isos['i686'] = {
  iso_url: BASE_URL + '/' + i686.select { |i| i =~ /\.iso$/ }.first,
  iso_sha256: open(BASE_URL + '/' + i686.select { |i| i =~ /\.sha256$/ }.first).read.strip.split.first
}

isos['x86_64'] = {
  iso_url: BASE_URL + '/' + x86_64.select { |i| i =~ /\.iso$/ }.first,
  iso_sha256: open(BASE_URL + '/' + x86_64.select { |i| i =~ /\.sha256$/ }.first).read.strip.split.first
}

out = JSON.pretty_generate(isos)
puts out
File.write("iso_urls.json", out)
$ ./iso_urls_update.rb
{
  "i686": {
    "iso_url": "https://nix-releases.s3.amazonaws.com/nixos/20.03/nixos-20.03.2059.05a32d8e771/nixos-minimal-20.03.2059.05a32d8e771-i686-linux.iso",
    "iso_sha256": "9c684a943607d9b5804ed0ed413c44ac0e4e9dd0fbcad944fc7215376a42414c"
  },
  "x86_64": {
    "iso_url": "https://nix-releases.s3.amazonaws.com/nixos/20.03/nixos-20.03.2059.05a32d8e771/nixos-minimal-20.03.2059.05a32d8e771-x86_64-linux.iso",
    "iso_sha256": "ef9c74e65185a36e61dbab842faeacebfc04fcc0608f19bd2aaae2cbfe620d45"
  }
}
zimbatm commented 4 years ago

sounds good to me!

FranklinYu commented 4 years ago

LGTM.

By the way, I tried to find a documentation page for the XML from S3; the URL matches request syntax of REST API ListOpjects, but the response doesn’t match the Response Syntax section of that page at all. The page itself is inconsistent, since the Response Syntax section contradicts with Examples section. Amazon should seriously fix their documentation! I can’t believe that S3 is one of the most popular services they provide.

In comparison, Google Cloud Storage provides JSON API.