1{
2 lib,
3 stdenv,
4 fetchurl,
5 curl,
6 gmp,
7 gsl,
8 libpq,
9 mpfr,
10 ncurses,
11 plotutils,
12 pkg-config,
13 withPDFDoc ? true,
14}:
15
16stdenv.mkDerivation (finalAttrs: {
17 pname = "algol68g";
18 version = "3.5.14";
19
20 src = fetchurl {
21 url = "https://jmvdveer.home.xs4all.nl/algol68g-${finalAttrs.version}.tar.gz";
22 hash = "sha256-uIy8rIhUjohiQJ/K5EprsIISXMAx1w27I3cGo/9H9Wk=";
23 };
24
25 outputs = [
26 "out"
27 "man"
28 ]
29 ++ lib.optionals withPDFDoc [ "doc" ];
30
31 nativeBuildInputs = [
32 pkg-config
33 ];
34
35 buildInputs = [
36 curl
37 mpfr
38 ncurses
39 gmp
40 gsl
41 plotutils
42 libpq
43 ];
44
45 strictDeps = true;
46
47 postInstall =
48 let
49 pdfdoc = fetchurl {
50 url = "https://jmvdveer.home.xs4all.nl/learning-algol-68-genie.pdf";
51 hash = "sha256-QCwn1e/lVfTYTeolCFErvfMhvwCgsBnASqq2K+NYmlU=";
52 };
53 in
54 lib.optionalString withPDFDoc ''
55 install -m644 ${pdfdoc} ${placeholder "doc"}/share/doc/algol68g/learning-algol-68-genie.pdf
56 '';
57
58 meta = {
59 homepage = "https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html";
60 description = "Algol 68 Genie compiler-interpreter";
61 longDescription = ''
62 Algol 68 Genie (a68g) is a recent checkout hybrid compiler-interpreter,
63 written from scratch by Marcel van der Veer. It ranks among the most
64 complete Algol 68 implementations. It implements for example arbitrary
65 precision arithmetic, complex numbers, parallel processing, partial
66 parametrisation and formatted transput, as well as support for curses,
67 regular expressions and sounds. It can be linked to GNU plotutils, the GNU
68 scientific library and PostgreSQL.
69 '';
70 license = lib.licenses.gpl3Plus;
71 mainProgram = "a68g";
72 maintainers = with lib.maintainers; [ ];
73 platforms = lib.platforms.unix;
74 };
75})