The daemon mill starts is Java 17 bytecode. Upstream saying it "supports
every JVM version from 11 onward" is about the JVMs a build may target,
not the one mill itself runs on.
Assisted-by: Claude Code (Claude Opus 5)
--set-default left an ambient JAVA_HOME in charge, so overriding jre had
no effect on the daemon mill starts. Also switches to jre.home, which is
the attribute meant for this, and to lib.makeBinPath for the PATH entry.
Assisted-by: Claude Code (Claude Opus 5)
It called nix-prefetch-url and `nix hash convert` without nix on its
pinned PATH, so it only worked through the ambient PATH it appended.
It also rewrote package.nix once per platform with no way back, so a
failure on the second or third left the file half updated. It now restores
the file unless the whole run succeeds, refuses to downgrade, passes
--fail to curl, honours $UPDATE_NIX_ATTR_PATH and supports the `commit`
updateScript feature. writeShellApplication runs shellcheck over it at
build time.
Assisted-by: Claude Code (Claude Opus 5)
The artifact suffix, the hash and meta.platforms were three lists of the
same three systems that had to agree by hand; the update script iterated
meta.platforms and threw if a system was missing from the suffix table.
They are now one table, with meta.platforms derived from it.
The legacy sha256 attribute held SRI values, so it becomes hash.
Assisted-by: Claude Code (Claude Opus 5)
It was spelled preferLocal, which Nix does not recognise, so it reached
the derivation as an inert environment variable and the comment above it
never took effect.
Assisted-by: Claude Code (Claude Opus 5)
Maven's <release>/<latest> fields in maven-metadata.xml just reflect
whatever was published most recently, which for mill includes
milestone builds (-M1, -M2, ...) and per-commit dev builds
(-N-<sha>). This caused the updateScript to pick those up instead of
the latest stable release.
Filter the full <version> list down to plain X.Y.Z semver strings and
pick the highest via `sort -V` instead.
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.
Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.
A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.
This commit was automatically created and can be verified using
nix-build a08b3a4d19.tar.gz \
--argstr baseRev b32a094368
result/bin/apply-formatting $NIXPKGS_PATH
We are migrating packages that meet below requirements:
1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration
The tool is here: https://github.com/Aleksanaa/by-name-migrate.