| 26 Jun 2026 |
| zimward joined the room. | 14:27:54 |
hexa | by which you mean … if Claude did the thing? 😜 | 14:37:24 |
hexa | https://github.com/NixOS/nixos-channel-scripts/issues/59 | 14:38:00 |
hexa | I'd like it if we had that | 14:38:04 |
Mic92 | I did this once by hand for the nix release script back in the day but never upstreamed it. It had even a self-test with a local registry and minio. | 14:41:37 |
hexa | so yeah, a job in nixpkgs that drops a manifest and we just upload what we just execute based on that | 14:42:27 |
hexa | instead of piling on janky version dependent logic | 14:42:37 |
Mic92 | * I did this once by hand for the nix release script back in the day but never upstreamed it. It had even a self-test with a local docker registry and minio. | 14:43:03 |
hexa | Redacted or Malformed Event | 14:43:20 |
hexa | and then, sure, it can be python for all I care | 14:43:32 |
hexa | the code is so "complex" because we need to deal with nixpkgs changes | 14:44:09 |
hexa | Redacted or Malformed Event | 14:44:21 |
Mic92 | I am still in favour moving the iso image to a non-hydra CI. In nix we do that in GitHub actions with oidc Auth for aws | 14:44:32 |
hexa | that's orthogonal, no? | 14:44:57 |
Mic92 | * I am still in favour of moving the iso image to a non-hydra CI. In nix we do that in GitHub actions with oidc Auth for aws | 14:44:59 |
hexa | I mean sure, it would kill most of the janky logic | 14:45:14 |
Mic92 | This was not part of those scripts as well? | 14:45:28 |
hexa | but the logic wouldn't be so janky if it was just very flat an in a nixpkgs branch | 14:45:47 |
hexa | if ($channelName =~ /nixos/) {
downloadFile("nixos.channel", "nixexprs.tar.xz", "source-dist", '\.tar\.xz$');
downloadFile("nixpkgs.tarball", "packages.json.br", "json-br");
downloadFile("nixos.options", "options.json.br", "json-br");
# Minimal installer ISOs were dropped from the small channel
if ($channelName !~ /-small/ ||
$channelName =~ /nixos-2([0123]\...|4\.05)-small/) {
downloadFile("nixos.iso_minimal.aarch64-linux");
downloadFile("nixos.iso_minimal.x86_64-linux");
}
# All of these jobs are not present in small channels
if ($channelName !~ /-small/) {
# These jobs were combined into a single job
if ($channelName =~ /nixos-2[01234]/) {
if ($channelName =~ /nixos-2[0123]/) {
downloadFile("nixos.iso_plasma5.aarch64-linux");
downloadFile("nixos.iso_plasma5.x86_64-linux");
} else {
downloadFile("nixos.iso_plasma6.aarch64-linux");
downloadFile("nixos.iso_plasma6.x86_64-linux");
}
downloadFile("nixos.iso_gnome.aarch64-linux");
downloadFile("nixos.iso_gnome.x86_64-linux");
} else {
downloadFile("nixos.iso_graphical.aarch64-linux");
downloadFile("nixos.iso_graphical.x86_64-linux");
}
if ($channelName =~ /nixos-2[0123]/) { # i686 dropped for > 23.11
downloadFile("nixos.iso_minimal.i686-linux");
}
if ($channelName =~ /nixos-2([0123]\...|4\.05)/) {
downloadFile("nixos.ova.x86_64-linux");
}
}
} else {
downloadFile("tarball", "nixexprs.tar.xz", "source-dist", '\.tar\.xz$');
downloadFile("tarball", "packages.json.br", "json-br");
}
| 14:45:57 |
hexa | Redacted or Malformed Event | 14:46:00 |
hexa | Redacted or Malformed Event | 14:46:12 |
emily | it would be very sad to give up on Nix/Hydra as the integrated build system for all of NixOS imo | 14:46:22 |
emily | feel like all this logic could just be … a derivation outputting some symlinks even | 14:46:57 |
emily | barely even need a manifest | 14:47:01 |
hexa | per project/jobset buckets with different retention interval is what we thought of for hydra | 14:47:09 |
hexa | Redacted or Malformed Event | 14:48:00 |
hexa | I mean, that is still a manifest of sorts :p | 14:48:32 |
hexa | you are just dumbing it down | 14:48:45 |
emily | yeah, and cp --dereference is a programmable job execution engine :D | 14:49:04 |
emily | (but also it's nice if you can do nix build nixpkgs#channel and get the exact files that would be in the channel release dir etc. rather than having to fish them out of JSON) | 14:49:41 |