nixpkgs/pkgs/development/tools/alloy/default.nix
Tobias Geerinckx-Rice e50afd12b7 alloy: use installPhase instead of ./builder.sh
Also pass on any arguments from the shell wrapper to the .jar.
And be less clever with shell strings.
2015-05-09 03:17:33 +02:00

61 lines
1.9 KiB
Nix

{ stdenv, fetchurl, jre, makeDesktopItem }:
let version = "4.2_2015-02-22"; in
stdenv.mkDerivation rec {
name = "alloy-${version}";
src = fetchurl {
sha256 = "0p93v8jwx9prijpikkgmfdzb9qn8ljmvga5d9wvrkxddccjx9k28";
url = "http://alloy.mit.edu/alloy/downloads/alloy${version}.jar";
};
meta = with stdenv.lib; {
inherit version;
description = "Language & tool for relational models";
longDescription = ''
Alloy is a language for describing structures and a tool for exploring
them. An Alloy model is a collection of constraints that describes a set
of structures, e.g. all the possible security configurations of a web
application, or all the possible topologies of a switching network. The
Alloy Analyzer is a solver that takes the constraints of a model and
finds structures that satisfy them. Structures are displayed graphically,
and their appearance can be customized for the domain at hand.
'';
homepage = http://alloy.mit.edu/;
downloadPage = http://alloy.mit.edu/alloy/download.html;
license = with licenses; mit;
platforms = with platforms; linux;
maintainers = with maintainers; [ nckx ];
};
desktopItem = makeDesktopItem rec {
name = "alloy";
exec = name;
icon = name;
desktopName = "Alloy";
genericName = "Relational modelling tool";
comment = meta.description;
categories = "Development;IDE;Education;";
};
buildInputs = [ jre ];
phases = [ "installPhase" ];
installPhase = ''
jar=`basename ${src}`
jar=$out/share/alloy/alloy${version}.jar
install -Dm644 ${src} $jar
cat << EOF > alloy
#!${stdenv.shell}
exec ${jre}/bin/java -jar $jar "\''${@}"
EOF
install -Dm755 alloy $out/bin/alloy
install -Dm644 ${./icon.png} $out/share/pixmaps/alloy.png
cp -r ${desktopItem}/share/applications $out/share
'';
}