Open FranklinYu opened 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).
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.
The checksum is failing at the moment btw.
@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.
@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.
<?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>
@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)
{ "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" } }
sounds good to me!
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.
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.