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