summary refs log tree commit diff
path: root/pkgs/development/compilers/algol68g/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/algol68g/default.nix')
-rw-r--r--pkgs/development/compilers/algol68g/default.nix55
1 files changed, 55 insertions, 0 deletions
diff --git a/pkgs/development/compilers/algol68g/default.nix b/pkgs/development/compilers/algol68g/default.nix
new file mode 100644
index 00000000000..88210ca5b72
--- /dev/null
+++ b/pkgs/development/compilers/algol68g/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, stdenv
+, fetchurl
+, gsl
+, plotutils
+, postgresql
+}:
+
+stdenv.mkDerivation rec {
+  pname = "algol68g";
+  version = "2.8.4";
+
+  src = fetchurl {
+    url = "https://jmvdveer.home.xs4all.nl/${pname}-${version}.tar.gz";
+    hash = "sha256-WCPM0MGP4Qo2ihF8w5JHSMSl0P6N/w2dgY/3PDQlZfA=";
+  };
+
+  patches = [
+    # add PNG support
+    ./0001-plotutils-png-support.diff
+  ];
+
+  buildInputs = [
+    gsl
+    plotutils
+    postgresql
+  ];
+
+  postInstall = let
+    pdfdoc = fetchurl {
+      url = "https://jmvdveer.home.xs4all.nl/learning-algol-68-genie.pdf";
+      hash = "sha256-QCwn1e/lVfTYTeolCFErvfMhvwCgsBnASqq2K+NYmlU=";
+    };
+  in
+    ''
+      install -m644 ${pdfdoc} $out/share/doc/${pname}/learning-algol-68-genie.pdf
+    '';
+
+  meta = with lib; {
+    homepage = "https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html";
+    description = "Algol 68 Genie compiler-interpreter";
+    longDescription = ''
+      Algol 68 Genie (a68g) is a recent checkout hybrid compiler-interpreter,
+      written from scratch by Marcel van der Veer. It ranks among the most
+      complete Algol 68 implementations. It implements for example arbitrary
+      precision arithmetic, complex numbers, parallel processing, partial
+      parametrisation and formatted transput, as well as support for curses,
+      regular expressions and sounds. It can be linked to GNU plotutils, the GNU
+      scientific library and PostgreSQL.
+    '';
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}