1 { lib, stdenv, fetchurl, pkg-config, smlnj, rsync }:
3 stdenv.mkDerivation rec {
8 url = "http://twelf.plparty.org/releases/twelf-src-${version}.tar.gz";
9 sha256 = "0fi1kbs9hrdrm1x4k13angpjasxlyd1gc3ys8ah54i75qbcd9c4i";
12 nativeBuildInputs = [ pkg-config ];
13 buildInputs = [ smlnj rsync ];
16 export SMLNJ_HOME=${smlnj}
22 rsync -av bin/{*,.heap} $out/bin/
23 bin/.mkexec ${smlnj}/bin/sml $out/ twelf-server twelf-server
25 substituteInPlace emacs/twelf-init.el \
26 --replace '(concat twelf-root "emacs")' '(concat twelf-root "share/emacs/site-lisp/twelf")'
28 mkdir -p $out/share/emacs/site-lisp/twelf/
29 rsync -av emacs/ $out/share/emacs/site-lisp/twelf/
31 mkdir -p $out/share/twelf/examples
32 rsync -av examples/ $out/share/twelf/examples/
33 mkdir -p $out/share/twelf/vim
34 rsync -av vim/ $out/share/twelf/vim/
38 description = "Logic proof assistant";
40 Twelf is a language used to specify, implement, and prove properties of
41 deductive systems such as programming languages and logics. Large
42 research projects using Twelf include the TALT typed assembly language,
43 a foundational proof-carrying-code system, and a type safety proof for
46 homepage = "http://twelf.org/wiki/Main_Page";
47 license = lib.licenses.mit;
48 maintainers = with lib.maintainers; [ jwiegley ];
49 platforms = lib.platforms.unix;