10 stdenv.mkDerivation rec {
12 version = "2024-05-09";
15 # Upstream does not provide versioned download links
16 url = "https://web.archive.org/web/20240605193919/https://frinklang.org/frinkjar/frink-tng.jar";
17 sha256 = "sha256-ceV1p9wsXprcNLhol79evswVZ1SpH5IzfSbl8st4cmU=";
22 nativeBuildInputs = [ jdk ];
32 mkdir -p $out/bin $out/lib
34 cp ${src} $out/lib/frink-tng.jar
36 # Generate rlwrap helper files.
37 # See https://frinklang.org/fsp/colorize.fsp?f=listUnits.frink
38 # and https://frinklang.org/fsp/colorize.fsp?f=listFunctions.frink
39 java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter -e 'joinln[lexicalSort[units[]]]' > $out/lib/unitnames.txt
40 java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter -e 'joinln[map[{|f|
43 }, lexicalSort[functions[]]]]' > $out/lib/functionnames.txt
45 cat > "$out/bin/frink" << EOF
47 exec ${rlwrap}/bin/rlwrap -f $out/lib/unitnames.txt -b '$' -f $out/lib/functionnames.txt ${jdk}/bin/java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter "\$@"
50 chmod a+x "$out/bin/frink"
56 description = "Practical calculating tool and programming language";
57 homepage = "https://frinklang.org/";
58 license = licenses.unfree;
59 sourceProvenance = [ sourceTypes.binaryBytecode ];
60 maintainers = [ maintainers.stefanfehrenbach ];
64 callFrinkVersion = testers.testVersion {
66 command = "frink -e 'FrinkVersion[]'";