A --client session went without CLANG_PATH, CPATH and LIBRARY_PATH. The
guard is there because sbtn is absent on platforms upstream ships no
native client for.
Assisted-by: Claude Code (Claude Opus 5)
It shares a derivation name with plain sbt, which is one of the two
conventions in the tree, so the description is what tells them apart in
nix search and nix profile list.
Assisted-by: Claude Code (Claude Opus 5)
nixpkgs-update already bumps sbt from its own version detection, but sbt
keeps 1.x and 2.x alive at once and ships them on the same day -- v2.0.6
and v1.12.15 both landed 2026-08-07. Anything keyed on the most recently
published release can therefore propose a downgrade, so this picks the
highest version out of the tags instead and refuses to go backwards.
The X.Y.Z filter drops release candidates. sbt does flag those as
prereleases on GitHub, but tags carry no such marker and v2.1.0-RC1 would
otherwise sort above v2.0.6.
$UPDATE_NIX_ATTR_PATH is ignored because sbt-with-scala-native is
sbt.overrideAttrs and inherits this passthru, while its meta.position
points at its own file rather than the one holding the version.
Assisted-by: Claude Code (Claude Opus 5)
Asserts on the runner version the binary reports, rather than on its exit
status, and takes finalAttrs.finalPackage so an override is what gets
tested.
testers.testVersion is not used here because the runner needs a writable
HOME and --allow-empty to run outside a project.
Assisted-by: Claude Code (Claude Opus 5)
Nothing verified the built sbt runs. --version --allow-empty needs neither
a project nor the network, so the runner can be exercised in the sandbox.
Assisted-by: Claude Code (Claude Opus 5)
$out/bin held bare symlinks and nothing set PATH, so propagating ncurses
never got infocmp to a running sbt; it only pushed ncurses-dev into the
build environment of everything that depends on sbt. The native client is
what wants infocmp, so a wrapper is where it belongs.
Dropping the propagation does mean ncurses no longer reaches the
environment of anything that takes sbt as an input, `nix-shell -p sbt`
included.
Assisted-by: Claude Code (Claude Opus 5)
The if-chain fell through to the x86_64 client for every platform that was
neither darwin nor aarch64, so i686, armv7l, armv6l, powerpc64le and
riscv64 got a binary for the wrong architecture. Nothing failed:
autoPatchelfHook skips files whose architecture differs from the target,
so the build succeeded and shipped an sbtn that cannot run.
sbt itself is unaffected on those platforms, being a shell script and a
jar, so the client is simply left out where upstream has none.
Assisted-by: Claude Code (Claude Opus 5)
The LICENSE in the distribution is the Apache License 2.0, and GitHub
reports the repository as Apache-2.0. sbt was BSD-3 in its 0.x days.
Assisted-by: Claude Code (Claude Opus 5)
postPatch bakes -java-home into conf/sbtopts, so the jre this derivation
is given is the one every sbt invocation runs on, and sbt 2 exits with
"sbt 2.x requires JDK 17 or above" on anything older. Asserting turns that
into an evaluation error, as scala-cli already does.
Assisted-by: Claude Code (Claude Opus 5)
What is packaged here is the runner, not the build tool a project uses:
each project declares its own version in project/build.properties, which
the 2.x runner reads and honours, so existing 1.x builds keep working.
Verified against a project pinned to 1.12.15, where `sbt --version`
reports the runner as 2.0.6 and the project as 1.12.15.
A directory with no project/build.properties now falls back to 2.0.6.
Supersedes https://github.com/NixOS/nixpkgs/pull/537442.
Assisted-by: Claude Code (Claude Opus 5)
Only PRs to packages in pkgs/by-name can be merged with the merge bot, so
this is what lets the package's maintainers act on r-ryantm's bumps.
Both callPackage calls took empty argument sets, so no .override interface
changes. simpleBuildTool stays in all-packages.nix, being an alias rather
than a definition.
Assisted-by: Claude Code (Claude Opus 5)
Undoes the previous workaround for the new JSON derivation format,
which pinned the runtime Nix version to 2.31.
As sbomnix no longer supports the legacy derivation format starting
with 1.8.0 and the new JSON format is only available starting with
Nix 2.33, now the workaround causes sbomnix to fail.
```
> Running phase: configurePhase
> substituteStream() in derivation sbsigntool-aarch64-unknown-linux-gnu-0.9.5: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file 'configure.ac')
> lib/ccan.git/tools/create-ccan-tree: line 21: getopt: command not found
> Usage: create-ccan-tree [options] <outdir> <depends>...
>
> options:
> -a, --copy-all copy all files in module tree (not just sources
> required for build)
> -b, --build-type=TYPE generate build infrastructure of TYPE
> (one of 'make', 'make+config', 'automake', 'waf')
For full logs, run:
```
is the error before the changes to address the cross-compilation issues.
I have effectively renounced on maintaining all these packages and I do
not plan to return them except if I'm forced to.
I am also fine with most of these packages being dropped for next
releases if no maintainer shows up.
Change-Id: I8d167c8029b6991181bd7a094af21c3313af2b51
Signed-off-by: Raito Bezarius <masterancpp@gmail.com>