2018-09-26 17:46:58 +01:00
|
|
|
{ stdenv, fetchurl, jre, makeWrapper, makeDesktopItem }:
|
2015-05-09 00:23:30 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
let generic = { major, version, src }:
|
2015-05-09 00:23:30 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "${nameMajor}-${version}";
|
|
|
|
nameMajor = "alloy${major}";
|
2015-05-09 00:23:30 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
desktopItem = makeDesktopItem rec {
|
|
|
|
name = "${nameMajor}";
|
|
|
|
exec = name;
|
|
|
|
icon = name;
|
|
|
|
desktopName = "Alloy ${major}";
|
|
|
|
genericName = "Relational modelling tool";
|
|
|
|
comment = meta.description;
|
|
|
|
categories = "Development;IDE;Education;";
|
|
|
|
};
|
2015-05-09 00:23:30 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
nativeBuildInputs = [ makeWrapper ];
|
2015-05-09 02:17:33 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
buildCommand = ''
|
|
|
|
jar=$out/share/alloy/${nameMajor}.jar
|
|
|
|
install -Dm644 ${src} $jar
|
2015-05-09 02:17:33 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
mkdir -p $out/bin
|
|
|
|
makeWrapper ${jre}/bin/java $out/bin/${nameMajor} --add-flags \
|
|
|
|
"-jar $jar"
|
2015-05-09 02:17:33 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
install -Dm644 ${./icon.png} $out/share/pixmaps/${nameMajor}.png
|
|
|
|
cp -r ${desktopItem}/share/applications $out/share
|
|
|
|
'';
|
2015-05-09 02:17:33 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
meta = with stdenv.lib; {
|
|
|
|
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://alloytools.org/;
|
|
|
|
downloadPage = http://alloytools.org/download.html;
|
|
|
|
license = licenses.mit;
|
|
|
|
platforms = platforms.linux;
|
|
|
|
maintainers = with maintainers; [ aminb ];
|
|
|
|
};
|
|
|
|
};
|
2015-05-09 00:23:30 +01:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
in rec {
|
|
|
|
alloy4 = let version = "4.2_2015-02-22"; in generic {
|
|
|
|
major = "4";
|
|
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
|
|
sha256 = "0p93v8jwx9prijpikkgmfdzb9qn8ljmvga5d9wvrkxddccjx9k28";
|
|
|
|
url = "http://alloytools.org/download/alloy${version}.jar";
|
|
|
|
};
|
|
|
|
};
|
2016-01-24 19:31:44 +00:00
|
|
|
|
2018-09-26 17:46:58 +01:00
|
|
|
alloy5 = let version = "5.0.0.1"; in generic {
|
|
|
|
major = "5";
|
|
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
|
|
sha256 = "0kz6i9av9ksjk62lx0dxx8xr542iqvbqd14m1f9h8xpf72c25xw4";
|
|
|
|
url = "https://github.com/AlloyTools/org.alloytools.alloy/releases/download/v${version}/Alloy-${version}.jar";
|
|
|
|
};
|
2016-01-24 19:31:44 +00:00
|
|
|
};
|
2018-09-26 17:46:58 +01:00
|
|
|
|
|
|
|
alloy = alloy4;
|
2015-05-09 00:23:30 +01:00
|
|
|
}
|