Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 jre, 6 writeScript, 7 common-updater-scripts, 8 git, 9 nix, 10 coreutils, 11 gnused, 12 disableRemoteLogging ? true, 13}: 14 15let 16 repo = "git@github.com:lihaoyi/Ammonite.git"; 17 18 common = 19 { scalaVersion, sha256 }: 20 stdenv.mkDerivation rec { 21 pname = "ammonite"; 22 version = "3.0.2"; 23 24 src = fetchurl { 25 url = "https://github.com/lihaoyi/Ammonite/releases/download/${version}/${scalaVersion}-${version}"; 26 inherit sha256; 27 }; 28 29 dontUnpack = true; 30 31 installPhase = '' 32 install -Dm755 $src $out/bin/amm 33 sed -i '0,/java/{s|java|${jre}/bin/java|}' $out/bin/amm 34 '' 35 + lib.optionalString (disableRemoteLogging) '' 36 sed -i "0,/ammonite.Main/{s|ammonite.Main'|ammonite.Main' --no-remote-logging|}" $out/bin/amm 37 sed -i '1i #!/bin/sh' $out/bin/amm 38 ''; 39 40 passthru = { 41 42 updateScript = writeScript "update.sh" '' 43 #!${stdenv.shell} 44 set -o errexit 45 PATH=${ 46 lib.makeBinPath [ 47 common-updater-scripts 48 coreutils 49 git 50 gnused 51 nix 52 ] 53 } 54 oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')" 55 latestTag="$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags ${repo} '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3)" 56 if [ "$oldVersion" != "$latestTag" ]; then 57 update-source-version ${pname}_2_12 "$latestTag" --version-key=version --print-changes 58 sed -i "s|$latestTag|$oldVersion|g" "$(git rev-parse --show-toplevel)/pkgs/development/tools/ammonite/default.nix" 59 update-source-version ${pname}_2_13 "$latestTag" --version-key=version --print-changes 60 else 61 echo "${pname} is already up-to-date" 62 fi 63 ''; 64 }; 65 66 doInstallCheck = true; 67 installCheckPhase = '' 68 runHook preInstallCheck 69 70 $out/bin/amm -h "$PWD" -c 'val foo = 21; println(foo * 2)' | grep 42 71 72 runHook postInstallCheck 73 ''; 74 75 meta = with lib; { 76 description = "Improved Scala REPL"; 77 longDescription = '' 78 The Ammonite-REPL is an improved Scala REPL, re-implemented from first principles. 79 It is much more featureful than the default REPL and comes 80 with a lot of ergonomic improvements and configurability 81 that may be familiar to people coming from IDEs or other REPLs such as IPython or Zsh. 82 ''; 83 homepage = "https://github.com/com-lihaoyi/Ammonite"; 84 license = licenses.mit; 85 maintainers = [ maintainers.nequissimus ]; 86 mainProgram = "amm"; 87 platforms = platforms.all; 88 }; 89 }; 90in 91{ 92 ammonite_2_12 = common { 93 scalaVersion = "2.12"; 94 sha256 = "sha256-wPVvLMuc8EjTqaHY4VcP1gd4DVJQhQm0uS2f+HFuTls="; 95 }; 96 ammonite_2_13 = common { 97 scalaVersion = "2.13"; 98 sha256 = "sha256-OU3lAls2n4dMONIogg/qAFj5OhzqR6rBF3Hay4Onwxg="; 99 }; 100 ammonite_3_3 = common { 101 scalaVersion = "3.3"; 102 sha256 = "sha256-M1Pg+HsWSkk60NUzNQXxOijnfFxX5ijao76Phaz7ykQ="; 103 }; 104}