1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 makeWrapper,
6 bison,
7 gcc,
8 tk,
9 swarm,
10 graphviz,
11}:
12
13let
14 binPath = lib.makeBinPath [
15 gcc
16 graphviz
17 tk
18 swarm
19 ];
20in
21
22stdenv.mkDerivation rec {
23 pname = "spin";
24 version = "6.5.2";
25
26 src = fetchFromGitHub {
27 owner = "nimble-code";
28 repo = "Spin";
29 rev = "version-${version}";
30 sha256 = "sha256-drvQXfDZCZRycBZt/VNngy8zs4XVJg+d1b4dQXVcyFU=";
31 };
32
33 nativeBuildInputs = [ makeWrapper ];
34 buildInputs = [ bison ];
35
36 sourceRoot = "${src.name}/Src";
37
38 preBuild = ''
39 mkdir -p $out/bin
40 mkdir -p $out/share/man/man1
41 '';
42
43 enableParallelBuilding = true;
44 makeFlags = [ "DESTDIR=$(out)" ];
45
46 postInstall = ''
47 wrapProgram $out/bin/spin --prefix PATH : ${binPath}
48
49 mkdir -p $out/share/spin
50 cp $src/optional_gui/ispin.tcl $out/share/spin
51 makeWrapper $out/share/spin/ispin.tcl $out/bin/ispin \
52 --prefix PATH : $out/bin:${binPath}
53 '';
54
55 meta = with lib; {
56 description = "Formal verification tool for distributed software systems";
57 homepage = "https://spinroot.com/";
58 license = licenses.bsd3;
59 platforms = platforms.unix;
60 maintainers = with maintainers; [
61 pSub
62 siraben
63 ];
64 };
65}