2020-06-19 19:24:05 +01:00
|
|
|
{ stdenv, fetchurl, installShellFiles, jdk11, rlwrap, makeWrapper }:
|
2014-01-03 13:48:21 +00:00
|
|
|
|
2018-02-18 19:38:50 +00:00
|
|
|
stdenv.mkDerivation rec {
|
2019-06-30 09:56:34 +01:00
|
|
|
pname = "clojure";
|
2020-08-20 12:46:09 +01:00
|
|
|
version = "1.10.1.645";
|
2011-09-01 14:38:59 +01:00
|
|
|
|
|
|
|
src = fetchurl {
|
2017-12-15 05:23:46 +00:00
|
|
|
url = "https://download.clojure.org/install/clojure-tools-${version}.tar.gz";
|
2020-08-20 12:46:09 +01:00
|
|
|
sha256 = "1z6a9an8ls992y4japmzdxay7c5d2z9s2q1xl4g615r23jwpcsf9";
|
2011-09-01 14:38:59 +01:00
|
|
|
};
|
|
|
|
|
2020-06-19 19:24:05 +01:00
|
|
|
nativeBuildInputs = [
|
|
|
|
installShellFiles
|
|
|
|
makeWrapper
|
|
|
|
];
|
2011-09-01 14:38:59 +01:00
|
|
|
|
2020-02-12 11:50:50 +00:00
|
|
|
installPhase =
|
|
|
|
let
|
|
|
|
binPath = stdenv.lib.makeBinPath [ rlwrap jdk11 ];
|
|
|
|
in
|
2020-07-27 16:17:23 +01:00
|
|
|
''
|
|
|
|
mkdir -p $out/libexec
|
|
|
|
cp clojure-tools-${version}.jar $out/libexec
|
|
|
|
cp example-deps.edn $out
|
|
|
|
cp deps.edn $out
|
2020-08-20 12:46:09 +01:00
|
|
|
cp clj_exec.clj $out
|
2019-12-09 09:44:34 +00:00
|
|
|
|
2020-07-27 16:17:23 +01:00
|
|
|
substituteInPlace clojure --replace PREFIX $out
|
2019-12-09 09:44:34 +00:00
|
|
|
|
2020-07-27 16:17:23 +01:00
|
|
|
install -Dt $out/bin clj clojure
|
|
|
|
wrapProgram $out/bin/clj --prefix PATH : $out/bin:${binPath}
|
|
|
|
wrapProgram $out/bin/clojure --prefix PATH : $out/bin:${binPath}
|
2020-06-19 19:24:05 +01:00
|
|
|
|
2020-07-27 16:17:23 +01:00
|
|
|
installManPage clj.1 clojure.1
|
|
|
|
'';
|
2011-09-01 14:38:59 +01:00
|
|
|
|
2020-02-12 11:50:50 +00:00
|
|
|
doInstallCheck = true;
|
|
|
|
installCheckPhase = ''
|
|
|
|
CLJ_CONFIG=$out CLJ_CACHE=$out/libexec $out/bin/clojure \
|
|
|
|
-Spath \
|
|
|
|
-Sverbose \
|
|
|
|
-Scp $out/libexec/clojure-tools-${version}.jar
|
|
|
|
'';
|
2017-09-26 13:38:26 +01:00
|
|
|
meta = with stdenv.lib; {
|
2014-01-03 13:48:21 +00:00
|
|
|
description = "A Lisp dialect for the JVM";
|
2020-04-01 02:11:51 +01:00
|
|
|
homepage = "https://clojure.org/";
|
2017-09-26 13:38:26 +01:00
|
|
|
license = licenses.epl10;
|
2011-09-01 14:38:59 +01:00
|
|
|
longDescription = ''
|
|
|
|
Clojure is a dynamic programming language that targets the Java
|
|
|
|
Virtual Machine. It is designed to be a general-purpose language,
|
|
|
|
combining the approachability and interactive development of a
|
|
|
|
scripting language with an efficient and robust infrastructure for
|
|
|
|
multithreaded programming. Clojure is a compiled language - it
|
|
|
|
compiles directly to JVM bytecode, yet remains completely
|
|
|
|
dynamic. Every feature supported by Clojure is supported at
|
|
|
|
runtime. Clojure provides easy access to the Java frameworks, with
|
|
|
|
optional type hints and type inference, to ensure that calls to Java
|
|
|
|
can avoid reflection.
|
|
|
|
|
|
|
|
Clojure is a dialect of Lisp, and shares with Lisp the code-as-data
|
|
|
|
philosophy and a powerful macro system. Clojure is predominantly a
|
|
|
|
functional programming language, and features a rich set of immutable,
|
|
|
|
persistent data structures. When mutable state is needed, Clojure
|
|
|
|
offers a software transactional memory system and reactive Agent
|
|
|
|
system that ensure clean, correct, multithreaded designs.
|
|
|
|
'';
|
2019-06-30 09:56:34 +01:00
|
|
|
maintainers = with maintainers; [ jlesquembre ];
|
2017-09-26 13:38:26 +01:00
|
|
|
platforms = platforms.unix;
|
2011-09-01 14:38:59 +01:00
|
|
|
};
|
|
|
|
}
|