From 35151e89a6d3f735fb644a4d12b7ae133bb614e5 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 12:09:07 +0200 Subject: [PATCH 01/18] Add flake.nix --- renovate.json => .github/renovate.json | 0 flake.lock | 61 ++++++++++++++++++++++++++ flake.nix | 46 +++++++++++++++++++ sbt | 3 -- 4 files changed, 107 insertions(+), 3 deletions(-) rename renovate.json => .github/renovate.json (100%) create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100755 sbt diff --git a/renovate.json b/.github/renovate.json similarity index 100% rename from renovate.json rename to .github/renovate.json diff --git a/flake.lock b/flake.lock new file mode 100644 index 000000000..86c022cd9 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1778737229, + "narHash": "sha256-6xWoytx8jFW4PF1GjRm/i/53trbpKGfz6zjzQGBr4cI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d7a713c0b7e47c908258e71cba7a2d77cc8d71d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 000000000..18cd798eb --- /dev/null +++ b/flake.nix @@ -0,0 +1,46 @@ +{ + inputs = { + flake-utils = { + url = "github:numtide/flake-utils"; + }; + nixpkgs = { + url = "github:NixOS/nixpkgs/nixos-25.11"; + }; + }; + + outputs = + { + self, + flake-utils, + nixpkgs, + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + checks = { + nixfmt = pkgs.runCommand "check-nixfmt" { } '' + ${pkgs.nixfmt}/bin/nixfmt --check ${./flake.nix} + touch $out + ''; + renovate = pkgs.runCommand "check-renovate" { } '' + LOG_LEVEL=warn ${pkgs.renovate}/bin/renovate-config-validator \ + ${./.github/renovate.json} + touch $out + ''; + }; + + devShells = { + default = pkgs.mkShellNoCC { + buildInputs = with pkgs; [ + jdk11 + nixfmt + (sbt.override ({ jre = jre11_minimal; })) + ]; + }; + }; + } + ); +} diff --git a/sbt b/sbt deleted file mode 100755 index 5ec6cf0c5..000000000 --- a/sbt +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env sh -set -eu -./bin/coursier launch --jvm 11 sbt From 45eb370b0122acfc6918fbc842ebd39f1541434c Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 13:00:03 +0200 Subject: [PATCH 02/18] flake: expand devshell with full toolchain and add jdk17/jdk21 shells The default devshell only had jdk11, nixfmt, and sbt, which is not enough to drive buildTools/test, the docs site, the Docker image, or the CI matrix. Add the external tools used by the build (bazelisk, coursier, docker, git, gradle, jq, maven, mill, nodejs, yarn), all pinned to the shell's JDK where applicable. Factor the shell into mkDevShell parameterized by a JDK and expose: - default (JDK 11, the release/build target) - jdk17, jdk21 (CI matrix targets) --- bin/coursier | Bin 162503 -> 0 bytes flake.nix | 29 ++++++++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) delete mode 100755 bin/coursier diff --git a/bin/coursier b/bin/coursier deleted file mode 100755 index ce88feeb064e9271daa8d3086438054c405c792b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162503 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%0DJR^>&~DPC&80B0O|Rxr}N~PEwA|CV))* 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 diff --git a/flake.nix b/flake.nix index 18cd798eb..1fb04d412 100644 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,25 @@ system: let pkgs = import nixpkgs { inherit system; }; + mkDevShell = + jdk: + pkgs.mkShellNoCC { + buildInputs = with pkgs; [ + bazelisk + (coursier.override ({ jre = jdk; })) + docker + git + (gradle.override ({ java = jdk; })) + jdk + jq + (maven.override ({ jdk_headless = jdk; })) + (mill.override ({ jre = jdk; })) + nixfmt + nodejs + (sbt.override ({ jre = jdk; })) + yarn + ]; + }; in { checks = { @@ -33,13 +52,9 @@ }; devShells = { - default = pkgs.mkShellNoCC { - buildInputs = with pkgs; [ - jdk11 - nixfmt - (sbt.override ({ jre = jre11_minimal; })) - ]; - }; + default = mkDevShell pkgs.jdk11; + jdk17 = mkDevShell pkgs.jdk17; + jdk21 = mkDevShell pkgs.jdk21; }; } ); From 5c24ddd682774707e43a8f28c44c22e0bf0d6362 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 13:16:03 +0200 Subject: [PATCH 03/18] Consolidate dependency updates under Renovate Remove dependabot.yml since the github-actions and docker ecosystems it managed are already covered by Renovate's default managers, which would have produced duplicate PRs. Switch the Renovate preset from sourcegraph/renovate-config to the upstream config:recommended preset, since the Sourcegraph preset is tailored for Sourcegraph's own repos (internal packages, team reviewers, etc.) and not relevant here. --- .github/dependabot.yml | 12 ------------ .github/renovate.json | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 4190c8870..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,12 +0,0 @@ -version: 2 -updates: - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "monthly" - - - package-ecosystem: "docker" - directory: "/" - schedule: - interval: "weekly" diff --git a/.github/renovate.json b/.github/renovate.json index ab445a56a..ae9a1a811 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/renovate", "extends": [ - "github>sourcegraph/renovate-config" + "config:recommended" ], "semanticCommits": false } From e1986b958550e421b6d811e47f3135f988360292 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 13:16:24 +0200 Subject: [PATCH 04/18] Drop PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index a47c1642f..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -### Test plan - - From 968424fdeacbd5d278236bf7c61e5b1b530ababe Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 13:21:06 +0200 Subject: [PATCH 05/18] Drop unused .github/labeler.yml --- .github/labeler.yml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .github/labeler.yml diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 99ccbb704..000000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,4 +0,0 @@ -team/graph: - - '/.*/' -graph/scip-java: - - '/.*/' From 33bfed3ecfa8777c9cf29130760298978a9384bd Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 13:30:07 +0200 Subject: [PATCH 06/18] Use cs from PATH in JavaToolchainPlugin --- project/JavaToolchainPlugin.scala | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/project/JavaToolchainPlugin.scala b/project/JavaToolchainPlugin.scala index 142685440..50fa93e40 100644 --- a/project/JavaToolchainPlugin.scala +++ b/project/JavaToolchainPlugin.scala @@ -2,7 +2,6 @@ import sbt.{Compile, Def, File, _} import sbt.Keys._ import sbt.plugins.JvmPlugin -import java.nio.file.Paths import java.util import java.util.Collections import scala.util.Properties @@ -46,13 +45,10 @@ object JavaToolchainPlugin extends AutoPlugin { javaHomeCache.computeIfAbsent( version, (v: String) => { - val coursier = Paths.get("bin", "coursier") val index = jvmIndex .toList .flatMap(index => "--jvm-index" :: index :: Nil) - val arguments = - List("java", "-jar", coursier.toString, "java-home", "--jvm", v) ++ - index + val arguments = List("cs", "java-home", "--jvm", v) ++ index new File(Process(arguments).!!.trim) } From fd9e0fd72cb9e079d850a50a4b03da7c7b7ca6c2 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 18 May 2026 13:34:27 +0200 Subject: [PATCH 07/18] --- .tool-versions | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .tool-versions diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 68e582a99..000000000 --- a/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -golang 1.17.5 From 0aa9690ca1ff81c98e20fda02544c90a8a9c7fee Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 16:19:49 +0200 Subject: [PATCH 08/18] Use nix develop in CI workflows; provide cs in docker image - docker-setup.sh: install coursier as `cs` (with `coursier` symlink) so the docker image exposes the `cs` binary expected by the build. - flake.nix: add an explicit `jdk11` devShell so workflows can use `.#jdk${matrix.java}` uniformly. - Replace actions/setup-java + sbt/setup-sbt + gradle/setup-gradle + coursier/setup-action + yarn-installed bazelisk with DeterminateSystems/nix-installer-action + magic-nix-cache-action, and run all sbt/mvn/bazelisk/cs invocations via `nix develop`. - BazelBuildTool: detect bazelisk/bazel on PATH at runtime and prefer bazelisk (so it respects the project's .bazelversion). --- .github/workflows/ci.yml | 105 ++++++++---------- .github/workflows/mdoc.yml | 12 +- .github/workflows/release-cli.yml | 17 ++- .github/workflows/release-docker.yml | 16 ++- .github/workflows/release-maven.yml | 12 +- bin/docker-setup.sh | 7 +- flake.nix | 1 + .../scip_java/buildtools/BazelBuildTool.scala | 18 ++- 8 files changed, 95 insertions(+), 93 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47785166b..1478341c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,21 +18,14 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: "temurin" - cache: "sbt" - java-version: ${{ matrix.java }} + summarize: false - - uses: sbt/setup-sbt@v1 - - - name: Setup Gradle 8.10 - uses: gradle/actions/setup-gradle@v4 - with: - gradle-version: '8.10' + - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Main project tests - run: sbt test + run: nix develop .#jdk${{ matrix.java }} --command sbt test docker_test: runs-on: ${{ matrix.os }} @@ -42,18 +35,16 @@ jobs: matrix: os: [ubuntu-latest] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: "temurin" - cache: "sbt" - java-version: 17 + summarize: false - - uses: sbt/setup-sbt@v1 + - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Build Dockerised CLI - run: DOCKER_BUILDKIT=0 sbt cli/docker + run: nix develop .#jdk17 --command bash -c "DOCKER_BUILDKIT=0 sbt cli/docker" - name: Test repos shell: bash @@ -76,14 +67,20 @@ jobs: bazel: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - run: yarn global add @bazel/bazelisk - - run: bazel build //... --//semanticdb-javac:enabled=true - - run: bazel run scip-semanticdb:bazel -- --sourceroot "$PWD" + - uses: actions/checkout@v4 + + - uses: DeterminateSystems/nix-installer-action@v22 + with: + summarize: false + + - uses: DeterminateSystems/magic-nix-cache-action@v13 + + - run: nix develop --command bazelisk build //... --//semanticdb-javac:enabled=true + - run: nix develop --command bazelisk run scip-semanticdb:bazel -- --sourceroot "$PWD" - run: du -h index.scip - - run: bazel build //... --@scip_java//semanticdb-javac:enabled=true + - run: nix develop "$GITHUB_WORKSPACE" --command bazelisk build //... --@scip_java//semanticdb-javac:enabled=true working-directory: examples/bazel-example - - run: bazel run @scip_java//scip-semanticdb:bazel -- --sourceroot "$PWD" + - run: nix develop "$GITHUB_WORKSPACE" --command bazelisk run @scip_java//scip-semanticdb:bazel -- --sourceroot "$PWD" working-directory: examples/bazel-example - run: du -h index.scip working-directory: examples/bazel-example @@ -91,26 +88,25 @@ jobs: bazel_aspect: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - run: yarn global add @bazel/bazelisk + - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: "temurin" - cache: "sbt" - java-version: 17 + summarize: false - - uses: sbt/setup-sbt@v1 + - uses: DeterminateSystems/magic-nix-cache-action@v13 - - run: sbt build + - run: nix develop .#jdk17 --command sbt build - run: echo "$PWD/out/bin" >> $GITHUB_PATH - name: Auto-index scip-java codebase run: | - scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java) + nix develop .#jdk17 --command bash -c \ + 'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)' - run: du -h index.scip - name: Auto-index example/bazel-workspace run: | - scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java) + nix develop .#jdk17 --command bash -c \ + 'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)' working-directory: examples/bazel-example - run: du -h index.scip working-directory: examples/bazel-example @@ -121,19 +117,17 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: "temurin" - cache: "sbt" - java-version: 11 + summarize: false - - uses: sbt/setup-sbt@v1 + - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: semanticdb-kotlinc tests - run: sbt semanticdbKotlinc/test + run: nix develop .#jdk11 --command sbt semanticdbKotlinc/test - name: Kotlin snapshots - run: sbt semanticdbKotlincMinimized/kotlincSnapshots + run: nix develop .#jdk11 --command sbt semanticdbKotlincMinimized/kotlincSnapshots - name: Check snapshot drift run: | @@ -143,20 +137,18 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: "temurin" - java-version: 11 - cache: "sbt" + summarize: false - - uses: sbt/setup-sbt@v1 + - uses: DeterminateSystems/magic-nix-cache-action@v13 - - run: sbt --client checkAll + - run: nix develop .#jdk11 --command sbt --client checkAll - name: Run sample benchmarks - run: sbt --client 'bench/Jmh/run -i 1 -f1 -t1 -foe true' + run: nix develop .#jdk11 --command sbt --client 'bench/Jmh/run -i 1 -f1 -t1 -foe true' maven: @@ -169,24 +161,23 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: "temurin" - cache: "sbt" - java-version: ${{ matrix.java }} + summarize: false - - uses: sbt/setup-sbt@v1 + - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: | - sbt build publishM2 publishLocal dumpScipJavaVersion + nix develop .#jdk${{ matrix.java }} --command sbt build publishM2 publishLocal dumpScipJavaVersion echo "SCIP_JAVA_VERSION=$(cat VERSION)" >> $GITHUB_ENV echo "SCIP_JAVA_CLI=$PWD/out/bin/scip-java" >> $GITHUB_ENV - run: | - mvn clean verify -DskipTests -Dscip-java.version=$SCIP_JAVA_VERSION sourcegraph:sourcegraphDependencies + nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command \ + mvn clean verify -DskipTests -Dscip-java.version=$SCIP_JAVA_VERSION sourcegraph:sourcegraphDependencies working-directory: examples/maven-example - - run: $SCIP_JAVA_CLI index-semanticdb target/semanticdb-targetroot + - run: nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command $SCIP_JAVA_CLI index-semanticdb target/semanticdb-targetroot working-directory: examples/maven-example - run: | diff --git a/.github/workflows/mdoc.yml b/.github/workflows/mdoc.yml index 7d77e2571..689308dc7 100644 --- a/.github/workflows/mdoc.yml +++ b/.github/workflows/mdoc.yml @@ -7,15 +7,13 @@ jobs: publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/setup-java@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: 'temurin' - java-version: 11 - cache: 'sbt' - - uses: sbt/setup-sbt@v1 - - run: sbt docs/docusaurusPublishGhpages + summarize: false + - uses: DeterminateSystems/magic-nix-cache-action@v13 + - run: nix develop .#jdk11 --command sbt docs/docusaurusPublishGhpages env: GIT_DEPLOY_KEY: ${{ secrets.GIT_DEPLOY_KEY }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 0fdefe251..775879d5b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -13,18 +13,19 @@ permissions: jobs: publish: runs-on: ubuntu-latest + defaults: + run: + shell: nix develop .#jdk11 --command bash -e {0} steps: - - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: 11 + - uses: actions/checkout@v4 - - uses: coursier/setup-action@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - apps: '' + summarize: false + + - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Build standalone launcher - shell: bash env: OUT_DIR: ${{ runner.temp }}/release-cli TAG: ${{ inputs.tag }} @@ -67,7 +68,6 @@ jobs: - name: Check for GitHub release id: release - shell: bash env: GH_TOKEN: ${{ github.token }} TAG: ${{ inputs.tag }} @@ -83,7 +83,6 @@ jobs: - name: Upload release assets if: steps.release.outputs.exists == 'true' - shell: bash env: OUT_DIR: ${{ runner.temp }}/release-cli GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index 49549ac3c..a1fb6306c 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -8,19 +8,17 @@ jobs: publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/setup-java@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: 'temurin' - java-version: 11 - cache: 'sbt' - - uses: sbt/setup-sbt@v1 - - uses: docker/setup-buildx-action@v1 + summarize: false + - uses: DeterminateSystems/magic-nix-cache-action@v13 + - uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - run: DOCKER_BUILDKIT=0 sbt cli/dockerBuildAndPush + - run: nix develop .#jdk11 --command bash -c "DOCKER_BUILDKIT=0 sbt cli/dockerBuildAndPush" diff --git a/.github/workflows/release-maven.yml b/.github/workflows/release-maven.yml index ee92b48b3..15bd9997e 100644 --- a/.github/workflows/release-maven.yml +++ b/.github/workflows/release-maven.yml @@ -8,17 +8,15 @@ jobs: publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/setup-java@v3 + - uses: DeterminateSystems/nix-installer-action@v22 with: - distribution: 'temurin' - java-version: 11 - cache: 'sbt' - - uses: sbt/setup-sbt@v1 + summarize: false + - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Publish ${{ github.ref }} - run: sbt ci-release + run: nix develop .#jdk11 --command sbt ci-release env: PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} PGP_SECRET: ${{ secrets.PGP_SECRET }} diff --git a/bin/docker-setup.sh b/bin/docker-setup.sh index 3953a3983..b472e11b4 100755 --- a/bin/docker-setup.sh +++ b/bin/docker-setup.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash set -eux -curl -fLo /usr/local/bin/coursier https://github.com/coursier/coursier/releases/download/v2.1.5/coursier -chmod +x /usr/local/bin/coursier -coursier setup --yes --apps coursier,sbt +curl -fLo /usr/local/bin/cs https://github.com/coursier/coursier/releases/download/v2.1.5/coursier +chmod +x /usr/local/bin/cs +ln -sf /usr/local/bin/cs /usr/local/bin/coursier +cs setup --yes --apps cs,coursier,sbt curl -fLo maven.zip https://archive.apache.org/dist/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.zip unzip -d /opt/maven maven.zip diff --git a/flake.nix b/flake.nix index 1fb04d412..140fb5ae0 100644 --- a/flake.nix +++ b/flake.nix @@ -53,6 +53,7 @@ devShells = { default = mkDevShell pkgs.jdk11; + jdk11 = mkDevShell pkgs.jdk11; jdk17 = mkDevShell pkgs.jdk17; jdk21 = mkDevShell pkgs.jdk21; }; diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala index c88ed4cd7..33cb173b4 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala @@ -5,6 +5,7 @@ import java.nio.file.FileSystems import java.nio.file.FileVisitResult import java.nio.file.Files import java.nio.file.Path +import java.nio.file.Paths import java.nio.file.SimpleFileVisitor import java.nio.file.StandardOpenOption import java.nio.file.attribute.BasicFileAttributes @@ -31,6 +32,21 @@ class BazelBuildTool(index: IndexCommand) extends BuildTool("Bazel", index) { else index.buildCommand + // Prefer `bazelisk` over `bazel` when both are available: bazelisk respects + // the project's `.bazelversion`, while `bazel` may be a pinned system version. + private def bazelExecutable: String = { + val pathDirs = sys + .env + .getOrElse("PATH", "") + .split(java.io.File.pathSeparator) + .toList + List("bazelisk", "bazel") + .find { name => + pathDirs.exists(dir => Files.isExecutable(Paths.get(dir, name))) + } + .getOrElse("bazel") + } + override def generateScip(): Int = { val aspectLabel = this.generateAspectFile().getOrElse("") if (aspectLabel.isEmpty) { @@ -60,7 +76,7 @@ class BazelBuildTool(index: IndexCommand) extends BuildTool("Bazel", index) { val buildCommand = List( - "bazel", + bazelExecutable, "build", "--noshow_progress", // The local strategy is required for now because we write SemanticDB and SCIP files From 0d72010272531e3ce937428719ea5a94908889e7 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 16:25:22 +0200 Subject: [PATCH 09/18] Add scalafmt to nix devShell and format BazelBuildTool --- flake.nix | 1 + .../sourcegraph/scip_java/buildtools/BazelBuildTool.scala | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index 140fb5ae0..2bb1e0092 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,7 @@ nixfmt nodejs (sbt.override ({ jre = jdk; })) + scalafmt yarn ]; }; diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala index 33cb173b4..90e1b5039 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala @@ -35,11 +35,8 @@ class BazelBuildTool(index: IndexCommand) extends BuildTool("Bazel", index) { // Prefer `bazelisk` over `bazel` when both are available: bazelisk respects // the project's `.bazelversion`, while `bazel` may be a pinned system version. private def bazelExecutable: String = { - val pathDirs = sys - .env - .getOrElse("PATH", "") - .split(java.io.File.pathSeparator) - .toList + val pathDirs = + sys.env.getOrElse("PATH", "").split(java.io.File.pathSeparator).toList List("bazelisk", "bazel") .find { name => pathDirs.exists(dir => Files.isExecutable(Paths.get(dir, name))) From 2ee17fc4c61f7feaa048efb325849c36e4ded13c Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 16:28:25 +0200 Subject: [PATCH 10/18] Drop arbitrary .#jdk17 pin in bazel_aspect and docker_test jobs --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1478341c6..85d3c05da 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Build Dockerised CLI - run: nix develop .#jdk17 --command bash -c "DOCKER_BUILDKIT=0 sbt cli/docker" + run: nix develop --command bash -c "DOCKER_BUILDKIT=0 sbt cli/docker" - name: Test repos shell: bash @@ -96,16 +96,16 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - - run: nix develop .#jdk17 --command sbt build + - run: nix develop --command sbt build - run: echo "$PWD/out/bin" >> $GITHUB_PATH - name: Auto-index scip-java codebase run: | - nix develop .#jdk17 --command bash -c \ + nix develop --command bash -c \ 'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)' - run: du -h index.scip - name: Auto-index example/bazel-workspace run: | - nix develop .#jdk17 --command bash -c \ + nix develop "$GITHUB_WORKSPACE" --command bash -c \ 'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)' working-directory: examples/bazel-example - run: du -h index.scip From 3505136efc7ba54c11fb2c2ab7a5a7e0766986ee Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 16:29:39 +0200 Subject: [PATCH 11/18] Use default devShell instead of .#jdk11 where it matches the default --- .github/workflows/ci.yml | 8 ++++---- .github/workflows/mdoc.yml | 2 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-docker.yml | 2 +- .github/workflows/release-maven.yml | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 85d3c05da..5c1b7a062 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,10 +124,10 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: semanticdb-kotlinc tests - run: nix develop .#jdk11 --command sbt semanticdbKotlinc/test + run: nix develop --command sbt semanticdbKotlinc/test - name: Kotlin snapshots - run: nix develop .#jdk11 --command sbt semanticdbKotlincMinimized/kotlincSnapshots + run: nix develop --command sbt semanticdbKotlincMinimized/kotlincSnapshots - name: Check snapshot drift run: | @@ -145,10 +145,10 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - - run: nix develop .#jdk11 --command sbt --client checkAll + - run: nix develop --command sbt --client checkAll - name: Run sample benchmarks - run: nix develop .#jdk11 --command sbt --client 'bench/Jmh/run -i 1 -f1 -t1 -foe true' + run: nix develop --command sbt --client 'bench/Jmh/run -i 1 -f1 -t1 -foe true' maven: diff --git a/.github/workflows/mdoc.yml b/.github/workflows/mdoc.yml index 689308dc7..4497d0381 100644 --- a/.github/workflows/mdoc.yml +++ b/.github/workflows/mdoc.yml @@ -14,6 +14,6 @@ jobs: with: summarize: false - uses: DeterminateSystems/magic-nix-cache-action@v13 - - run: nix develop .#jdk11 --command sbt docs/docusaurusPublishGhpages + - run: nix develop --command sbt docs/docusaurusPublishGhpages env: GIT_DEPLOY_KEY: ${{ secrets.GIT_DEPLOY_KEY }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 775879d5b..4e6c6bb4a 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - shell: nix develop .#jdk11 --command bash -e {0} + shell: nix develop --command bash -e {0} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index a1fb6306c..ed93824e3 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -21,4 +21,4 @@ jobs: with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - run: nix develop .#jdk11 --command bash -c "DOCKER_BUILDKIT=0 sbt cli/dockerBuildAndPush" + - run: nix develop --command bash -c "DOCKER_BUILDKIT=0 sbt cli/dockerBuildAndPush" diff --git a/.github/workflows/release-maven.yml b/.github/workflows/release-maven.yml index 15bd9997e..e3f38ff45 100644 --- a/.github/workflows/release-maven.yml +++ b/.github/workflows/release-maven.yml @@ -16,7 +16,7 @@ jobs: summarize: false - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Publish ${{ github.ref }} - run: nix develop .#jdk11 --command sbt ci-release + run: nix develop --command sbt ci-release env: PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} PGP_SECRET: ${{ secrets.PGP_SECRET }} From 2e9c83a8362365d692862360273b16724ca215a6 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 20:33:05 +0200 Subject: [PATCH 12/18] docs: recommend nix develop for the dev environment --- docs/contributing.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index 8a6e77b23..c89f50c8c 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -9,6 +9,21 @@ This page documents tips and tricks for contributing to the ## System dependencies +The recommended way to get a working development environment is via +[Nix](https://nixos.org/download) and the provided [flake](https://github.com/sourcegraph/scip-java/blob/main/flake.nix): + +```sh +nix develop # default shell (JDK 11) +nix develop .#jdk17 # JDK 17 +nix develop .#jdk21 # JDK 21 +``` + +This drops you into a shell with `sbt`, `cs` (coursier), `maven`, `gradle`, +`bazelisk`, `scalafmt`, `nodejs`, `yarn`, `git`, `jq`, etc. all pinned to the +versions used in CI. + +If you'd rather install tools manually, you'll need at least: + - `java`: any version should work - `git`: any version should work - `gradle`: `brew install gradle`, or see @@ -38,7 +53,7 @@ These are the main components of the project. | Command | Where | Description | | ------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------- | -| `./sbt` | terminal | Start interactive sbt shell with Java 11. Takes a while to load on the first run. | +| `sbt` | terminal | Start interactive sbt shell with Java 11 (run from `nix develop`). Takes a while to load on the first run. | | `unit/test` | sbt | Run fast unit tests. | | `~unit/test` | sbt | Start watch mode to run tests on file save, good for local edit-and-test workflows. | | `buildTools/test` | sbt | Run slow build tool tests (Gradle, Maven). | From de2a594a68abb97e36486d5ea9e9e541147e7aff Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 20:33:10 +0200 Subject: [PATCH 13/18] ci: remove dead labeler workflow The .github/labeler.yml config file was removed earlier in this branch, so the issue-labeler workflow can no longer find its configuration. --- .github/workflows/labeler.yml | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 .github/workflows/labeler.yml diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index c2f027b1b..000000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: "Issue Labeler" -on: - issues: - types: [opened, edited] - -permissions: - issues: write - contents: read - -jobs: - triage: - runs-on: ubuntu-latest - steps: - - uses: github/issue-labeler@v3.4 - with: - configuration-path: .github/labeler.yml - enable-versioned-regex: 0 - repo-token: ${{ github.token }} From da3b3370604ee04264e0108bfbbc90478a2de171 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 20:38:16 +0200 Subject: [PATCH 14/18] ci: add shellcheck/actionlint/scalafmt flake checks Adds three new `nix flake check` entries: - shellcheck on bin/*.sh - actionlint on .github/workflows/*.yml (which itself runs shellcheck against `run:` script bodies) - scalafmt --check across the whole project source tree (a writable copy is made and `git init` ed so that `.scalafmt.conf`'s `project.git = true` works) To unblock the new checks, fix the existing shellcheck findings in bin/*.sh and ci.yml: quote variables, drop a dead `ARGS=$@` line, and add a couple of in-line `# shellcheck disable=SC2016` directives where we intentionally use single quotes to defer expansion to the inner shell. --- .github/workflows/ci.yml | 22 ++++++++++++---------- bin/packagehub.sh | 2 +- bin/scip-java-docker-script.sh | 4 +--- flake.nix | 16 ++++++++++++++++ 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c1b7a062..0a50b2317 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,11 +52,11 @@ jobs: set -eu check_repo() { REPO=$1 - mkdir -p .repos/$REPO - git clone https://github.com/$REPO.git .repos/$REPO && cd .repos/$REPO && git submodule update --init + mkdir -p ".repos/$REPO" + git clone "https://github.com/$REPO.git" ".repos/$REPO" && cd ".repos/$REPO" && git submodule update --init - docker run -v $PWD/.repos/$REPO:/sources -w /sources sourcegraph/scip-java:latest scip-java index - file .repos/$REPO/index.scip || (echo "$REPO SCIP index doesn't exist!"; exit 1) + docker run -v "$PWD/.repos/$REPO:/sources" -w /sources sourcegraph/scip-java:latest scip-java index + file ".repos/$REPO/index.scip" || (echo "$REPO SCIP index doesn't exist!"; exit 1) } sudo apt install parallel @@ -97,14 +97,16 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix develop --command sbt build - - run: echo "$PWD/out/bin" >> $GITHUB_PATH + - run: echo "$PWD/out/bin" >> "$GITHUB_PATH" - name: Auto-index scip-java codebase run: | + # shellcheck disable=SC2016 nix develop --command bash -c \ 'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)' - run: du -h index.scip - name: Auto-index example/bazel-workspace run: | + # shellcheck disable=SC2016 nix develop "$GITHUB_WORKSPACE" --command bash -c \ 'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)' working-directory: examples/bazel-example @@ -169,21 +171,21 @@ jobs: - run: | nix develop .#jdk${{ matrix.java }} --command sbt build publishM2 publishLocal dumpScipJavaVersion - echo "SCIP_JAVA_VERSION=$(cat VERSION)" >> $GITHUB_ENV - echo "SCIP_JAVA_CLI=$PWD/out/bin/scip-java" >> $GITHUB_ENV + echo "SCIP_JAVA_VERSION=$(cat VERSION)" >> "$GITHUB_ENV" + echo "SCIP_JAVA_CLI=$PWD/out/bin/scip-java" >> "$GITHUB_ENV" - run: | nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command \ - mvn clean verify -DskipTests -Dscip-java.version=$SCIP_JAVA_VERSION sourcegraph:sourcegraphDependencies + mvn clean verify -DskipTests "-Dscip-java.version=$SCIP_JAVA_VERSION" sourcegraph:sourcegraphDependencies working-directory: examples/maven-example - - run: nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command $SCIP_JAVA_CLI index-semanticdb target/semanticdb-targetroot + - run: nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command "$SCIP_JAVA_CLI" index-semanticdb target/semanticdb-targetroot working-directory: examples/maven-example - run: | set -e grep org.hamcrest target/semanticdb-targetroot/*dependencies.txt - grep $PWD/src/main/java target/semanticdb-targetroot/*dependencies.txt + grep "$PWD/src/main/java" target/semanticdb-targetroot/*dependencies.txt working-directory: examples/maven-example - run: du -h index.scip diff --git a/bin/packagehub.sh b/bin/packagehub.sh index 93896e93f..4da72d50d 100755 --- a/bin/packagehub.sh +++ b/bin/packagehub.sh @@ -1,2 +1,2 @@ #!/usr/bin/env bash -/packagehub --host 0.0.0.0 --port $PORT --src /src --coursier /coursier --postgres.username=$DB_USER --postgres.password=$DB_PASS --postgres.url=$DB_URL +/packagehub --host 0.0.0.0 --port "$PORT" --src /src --coursier /coursier --postgres.username="$DB_USER" --postgres.password="$DB_PASS" --postgres.url="$DB_URL" diff --git a/bin/scip-java-docker-script.sh b/bin/scip-java-docker-script.sh index 1b7806159..68a611c2f 100755 --- a/bin/scip-java-docker-script.sh +++ b/bin/scip-java-docker-script.sh @@ -12,12 +12,10 @@ if test -f "$FILE"; then fi fi -JVM_VERSIONS=$(echo $JVM_VERSION | tr "," "\n") +JVM_VERSIONS=$(echo "$JVM_VERSION" | tr "," "\n") LAST_CODE="-1" -ARGS=$@ - for JVM_VERSION in $JVM_VERSIONS do if [ "$LAST_CODE" != "0" ]; then diff --git a/flake.nix b/flake.nix index 2bb1e0092..e4d480bf4 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,10 @@ in { checks = { + actionlint = pkgs.runCommand "check-actionlint" { } '' + ${pkgs.actionlint}/bin/actionlint ${./.github/workflows}/*.yml + touch $out + ''; nixfmt = pkgs.runCommand "check-nixfmt" { } '' ${pkgs.nixfmt}/bin/nixfmt --check ${./flake.nix} touch $out @@ -50,6 +54,18 @@ ${./.github/renovate.json} touch $out ''; + scalafmt = pkgs.runCommand "check-scalafmt" { buildInputs = [ pkgs.git ]; } '' + cp -r ${./.}/. . + chmod -R u+w . + git init -q + git add -A + HOME=$(mktemp -d) ${pkgs.scalafmt}/bin/scalafmt --check --non-interactive + touch $out + ''; + shellcheck = pkgs.runCommand "check-shellcheck" { } '' + ${pkgs.shellcheck}/bin/shellcheck ${./bin}/*.sh + touch $out + ''; }; devShells = { From 01eafbc8b9e758477a5382eb6797b27c3638a860 Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 20:43:54 +0200 Subject: [PATCH 15/18] Expose packages.scip-java built via coursier bootstrap Adds a fixed-output derivation that runs `coursier bootstrap` against a pinned scip-java version from Maven Central, plus a thin wrapper that adds a Nix-provided JDK to PATH. Exposed as: nix build .#scip-java nix run .#scip-java -- index ... Bump `scipJavaVersion` and re-run `nix build` to get the new outputHash to commit. --- flake.nix | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ result | 1 + 2 files changed, 58 insertions(+) create mode 120000 result diff --git a/flake.nix b/flake.nix index e4d480bf4..0a467e573 100644 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,7 @@ system: let pkgs = import nixpkgs { inherit system; }; + lib = pkgs.lib; mkDevShell = jdk: pkgs.mkShellNoCC { @@ -38,8 +39,64 @@ yarn ]; }; + + # A standalone scip-java launcher built via `coursier bootstrap`. + # The fixed-output derivation lets Nix cache the result; bump + # `scipJavaVersion` and rebuild to get a new outputHash. + scipJavaVersion = "0.12.3"; + runtimeJdk = pkgs.jdk17; + scipJavaStandalone = pkgs.stdenvNoCC.mkDerivation { + pname = "scip-java-standalone"; + version = scipJavaVersion; + dontUnpack = true; + dontFixup = true; + nativeBuildInputs = [ (pkgs.coursier.override ({ jre = runtimeJdk; })) ]; + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "sha256-ifYIQQJftpwvDa7BUSL+OwfQ6W23l1Au9QP6tUmq0mQ="; + buildPhase = '' + export HOME="$TMPDIR/home" + export COURSIER_CACHE="$TMPDIR/coursier-cache" + export COURSIER_PROGRESS=0 + export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" + export NIX_SSL_CERT_FILE="$SSL_CERT_FILE" + mkdir -p "$HOME" "$COURSIER_CACHE" + cs bootstrap \ + "com.sourcegraph:scip-java_2.13:${scipJavaVersion}" \ + -M com.sourcegraph.scip_java.ScipJava \ + --standalone \ + -f \ + -o scip-java + ''; + installPhase = '' + install -Dm755 scip-java "$out/bin/scip-java" + ''; + }; + scipJava = pkgs.stdenvNoCC.mkDerivation { + pname = "scip-java"; + version = scipJavaVersion; + dontUnpack = true; + nativeBuildInputs = [ pkgs.makeWrapper ]; + installPhase = '' + install -Dm755 ${scipJavaStandalone}/bin/scip-java "$out/bin/scip-java" + patchShebangs "$out/bin/scip-java" + wrapProgram "$out/bin/scip-java" \ + --prefix PATH : ${lib.makeBinPath [ runtimeJdk ]} + ''; + meta.mainProgram = "scip-java"; + }; in { + packages = { + default = scipJava; + scip-java = scipJava; + }; + + apps = { + default = flake-utils.lib.mkApp { drv = scipJava; }; + scip-java = flake-utils.lib.mkApp { drv = scipJava; }; + }; + checks = { actionlint = pkgs.runCommand "check-actionlint" { } '' ${pkgs.actionlint}/bin/actionlint ${./.github/workflows}/*.yml diff --git a/result b/result new file mode 120000 index 000000000..39700da8f --- /dev/null +++ b/result @@ -0,0 +1 @@ +/nix/store/6iy0aiy7nrpkj5bb6nic8bj1hdqwa1il-scip-java-0.12.3 \ No newline at end of file From 8a07dc5b8604e58e2ceb140de055a624b525784c Mon Sep 17 00:00:00 2001 From: jupblb Date: Mon, 25 May 2026 20:44:12 +0200 Subject: [PATCH 16/18] Drop accidentally committed nix `result` symlink and gitignore it --- .gitignore | 4 ++++ result | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) delete mode 120000 result diff --git a/.gitignore b/.gitignore index 38e260ab0..19eaa7a6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ *.class *.log +# nix +result +result-* + # sbt specific .cache .history diff --git a/result b/result deleted file mode 120000 index 39700da8f..000000000 --- a/result +++ /dev/null @@ -1 +0,0 @@ -/nix/store/6iy0aiy7nrpkj5bb6nic8bj1hdqwa1il-scip-java-0.12.3 \ No newline at end of file From b42932afc895cd5897a638cb199c0e4f30716b2a Mon Sep 17 00:00:00 2001 From: jupblb Date: Tue, 26 May 2026 17:04:26 +0200 Subject: [PATCH 17/18] Remove unused release-drafter.yml This config was never wired up to any workflow; releases use GitHub's native auto-generated notes instead. --- .github/release-drafter.yml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .github/release-drafter.yml diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml deleted file mode 100644 index a336f9b34..000000000 --- a/.github/release-drafter.yml +++ /dev/null @@ -1,4 +0,0 @@ -template: | - ## Pull Requests - - $CHANGES From aecd261192976b28b5773321c6043208dbe78b1e Mon Sep 17 00:00:00 2001 From: jupblb Date: Tue, 26 May 2026 17:36:03 +0200 Subject: [PATCH 18/18] Simplify flake.nix: drop packages/apps, clean up scalafmt check - Remove scip-java packages and apps outputs (we don't have a way to build from source in Nix without nontrivial sbt-derivation setup, and the published-artifact fetch wasn't pulling its weight) - Drop unused 'lib' binding - Remove redundant HOME=$(mktemp -d) from scalafmt check (nixpkgs scalafmt bundles its JARs and doesn't need a writable HOME) --- flake.nix | 79 +++++++++---------------------------------------------- 1 file changed, 13 insertions(+), 66 deletions(-) diff --git a/flake.nix b/flake.nix index 0a467e573..1f0d2584b 100644 --- a/flake.nix +++ b/flake.nix @@ -18,14 +18,12 @@ system: let pkgs = import nixpkgs { inherit system; }; - lib = pkgs.lib; mkDevShell = jdk: pkgs.mkShellNoCC { buildInputs = with pkgs; [ bazelisk (coursier.override ({ jre = jdk; })) - docker git (gradle.override ({ java = jdk; })) jdk @@ -39,64 +37,8 @@ yarn ]; }; - - # A standalone scip-java launcher built via `coursier bootstrap`. - # The fixed-output derivation lets Nix cache the result; bump - # `scipJavaVersion` and rebuild to get a new outputHash. - scipJavaVersion = "0.12.3"; - runtimeJdk = pkgs.jdk17; - scipJavaStandalone = pkgs.stdenvNoCC.mkDerivation { - pname = "scip-java-standalone"; - version = scipJavaVersion; - dontUnpack = true; - dontFixup = true; - nativeBuildInputs = [ (pkgs.coursier.override ({ jre = runtimeJdk; })) ]; - outputHashMode = "recursive"; - outputHashAlgo = "sha256"; - outputHash = "sha256-ifYIQQJftpwvDa7BUSL+OwfQ6W23l1Au9QP6tUmq0mQ="; - buildPhase = '' - export HOME="$TMPDIR/home" - export COURSIER_CACHE="$TMPDIR/coursier-cache" - export COURSIER_PROGRESS=0 - export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" - export NIX_SSL_CERT_FILE="$SSL_CERT_FILE" - mkdir -p "$HOME" "$COURSIER_CACHE" - cs bootstrap \ - "com.sourcegraph:scip-java_2.13:${scipJavaVersion}" \ - -M com.sourcegraph.scip_java.ScipJava \ - --standalone \ - -f \ - -o scip-java - ''; - installPhase = '' - install -Dm755 scip-java "$out/bin/scip-java" - ''; - }; - scipJava = pkgs.stdenvNoCC.mkDerivation { - pname = "scip-java"; - version = scipJavaVersion; - dontUnpack = true; - nativeBuildInputs = [ pkgs.makeWrapper ]; - installPhase = '' - install -Dm755 ${scipJavaStandalone}/bin/scip-java "$out/bin/scip-java" - patchShebangs "$out/bin/scip-java" - wrapProgram "$out/bin/scip-java" \ - --prefix PATH : ${lib.makeBinPath [ runtimeJdk ]} - ''; - meta.mainProgram = "scip-java"; - }; in { - packages = { - default = scipJava; - scip-java = scipJava; - }; - - apps = { - default = flake-utils.lib.mkApp { drv = scipJava; }; - scip-java = flake-utils.lib.mkApp { drv = scipJava; }; - }; - checks = { actionlint = pkgs.runCommand "check-actionlint" { } '' ${pkgs.actionlint}/bin/actionlint ${./.github/workflows}/*.yml @@ -111,14 +53,19 @@ ${./.github/renovate.json} touch $out ''; - scalafmt = pkgs.runCommand "check-scalafmt" { buildInputs = [ pkgs.git ]; } '' - cp -r ${./.}/. . - chmod -R u+w . - git init -q - git add -A - HOME=$(mktemp -d) ${pkgs.scalafmt}/bin/scalafmt --check --non-interactive - touch $out - ''; + scalafmt = + pkgs.runCommand "check-scalafmt" + { + buildInputs = [ pkgs.git ]; + } + '' + cp -r ${./.}/. . + chmod -R u+w . + git init -q + git add -A + ${pkgs.scalafmt}/bin/scalafmt --check --non-interactive + touch $out + ''; shellcheck = pkgs.runCommand "check-shellcheck" { } '' ${pkgs.shellcheck}/bin/shellcheck ${./bin}/*.sh touch $out