Skip to content

Commit 01eafbc

Browse files
committed
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.
1 parent da3b337 commit 01eafbc

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

flake.nix

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
system:
1919
let
2020
pkgs = import nixpkgs { inherit system; };
21+
lib = pkgs.lib;
2122
mkDevShell =
2223
jdk:
2324
pkgs.mkShellNoCC {
@@ -38,8 +39,64 @@
3839
yarn
3940
];
4041
};
42+
43+
# A standalone scip-java launcher built via `coursier bootstrap`.
44+
# The fixed-output derivation lets Nix cache the result; bump
45+
# `scipJavaVersion` and rebuild to get a new outputHash.
46+
scipJavaVersion = "0.12.3";
47+
runtimeJdk = pkgs.jdk17;
48+
scipJavaStandalone = pkgs.stdenvNoCC.mkDerivation {
49+
pname = "scip-java-standalone";
50+
version = scipJavaVersion;
51+
dontUnpack = true;
52+
dontFixup = true;
53+
nativeBuildInputs = [ (pkgs.coursier.override ({ jre = runtimeJdk; })) ];
54+
outputHashMode = "recursive";
55+
outputHashAlgo = "sha256";
56+
outputHash = "sha256-ifYIQQJftpwvDa7BUSL+OwfQ6W23l1Au9QP6tUmq0mQ=";
57+
buildPhase = ''
58+
export HOME="$TMPDIR/home"
59+
export COURSIER_CACHE="$TMPDIR/coursier-cache"
60+
export COURSIER_PROGRESS=0
61+
export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
62+
export NIX_SSL_CERT_FILE="$SSL_CERT_FILE"
63+
mkdir -p "$HOME" "$COURSIER_CACHE"
64+
cs bootstrap \
65+
"com.sourcegraph:scip-java_2.13:${scipJavaVersion}" \
66+
-M com.sourcegraph.scip_java.ScipJava \
67+
--standalone \
68+
-f \
69+
-o scip-java
70+
'';
71+
installPhase = ''
72+
install -Dm755 scip-java "$out/bin/scip-java"
73+
'';
74+
};
75+
scipJava = pkgs.stdenvNoCC.mkDerivation {
76+
pname = "scip-java";
77+
version = scipJavaVersion;
78+
dontUnpack = true;
79+
nativeBuildInputs = [ pkgs.makeWrapper ];
80+
installPhase = ''
81+
install -Dm755 ${scipJavaStandalone}/bin/scip-java "$out/bin/scip-java"
82+
patchShebangs "$out/bin/scip-java"
83+
wrapProgram "$out/bin/scip-java" \
84+
--prefix PATH : ${lib.makeBinPath [ runtimeJdk ]}
85+
'';
86+
meta.mainProgram = "scip-java";
87+
};
4188
in
4289
{
90+
packages = {
91+
default = scipJava;
92+
scip-java = scipJava;
93+
};
94+
95+
apps = {
96+
default = flake-utils.lib.mkApp { drv = scipJava; };
97+
scip-java = flake-utils.lib.mkApp { drv = scipJava; };
98+
};
99+
43100
checks = {
44101
actionlint = pkgs.runCommand "check-actionlint" { } ''
45102
${pkgs.actionlint}/bin/actionlint ${./.github/workflows}/*.yml

result

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/nix/store/6iy0aiy7nrpkj5bb6nic8bj1hdqwa1il-scip-java-0.12.3

0 commit comments

Comments
 (0)