about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/compilers/gerbil/gerbil-support.nix2
-rw-r--r--pkgs/development/compilers/gerbil/glow-lang.nix55
-rw-r--r--pkgs/top-level/all-packages.nix3
3 files changed, 58 insertions, 2 deletions
diff --git a/pkgs/development/compilers/gerbil/gerbil-support.nix b/pkgs/development/compilers/gerbil/gerbil-support.nix
index e4b85fe5b54e..3d57e2a73c52 100644
--- a/pkgs/development/compilers/gerbil/gerbil-support.nix
+++ b/pkgs/development/compilers/gerbil/gerbil-support.nix
@@ -5,7 +5,7 @@
   prePackages-unstable =
     let pks = [ ./gerbil-libp2p.nix ./smug-gerbil.nix ./ftw.nix
                 ./gerbil-utils.nix ./gerbil-crypto.nix ./gerbil-poo.nix
-                ./gerbil-persist.nix ./gerbil-ethereum.nix ];
+                ./gerbil-persist.nix ./gerbil-ethereum.nix ./glow-lang.nix ];
         call = pkg: callPackage pkg prePackage-defaults;
         pkgName = pkg: lib.removeSuffix ".nix" (baseNameOf pkg);
         f = pkg: { name = pkgName pkg; value = call pkg; }; in
diff --git a/pkgs/development/compilers/gerbil/glow-lang.nix b/pkgs/development/compilers/gerbil/glow-lang.nix
new file mode 100644
index 000000000000..c6e5aa10fa3a
--- /dev/null
+++ b/pkgs/development/compilers/gerbil/glow-lang.nix
@@ -0,0 +1,55 @@
+{ lib, fetchFromGitHub, gerbil-support, gerbilPackages, gerbil, ... }:
+
+rec {
+  pname = "glow-lang";
+  version = "unstable-2023-04-26";
+  git-version = "0.3.2-222-gb19cd980";
+  softwareName = "Glow";
+  gerbil-package = "mukn/glow";
+  version-path = "version";
+
+  gerbilInputs = with gerbilPackages;
+    [ gerbil-utils gerbil-crypto gerbil-poo gerbil-persist gerbil-ethereum
+      gerbil-libp2p smug-gerbil ftw ];
+
+  pre-src = {
+    fun = fetchFromGitHub;
+    owner = "Glow-Lang";
+    repo = "glow";
+    rev = "b19cd98082dfc5156d1b4fc83cde161572d6a211";
+    sha256 = "0k3qy5826pxqr9ylnnpq4iikxf4j50987vhpa5qiv99j0p643xr3";
+    };
+
+  postPatch = ''
+    substituteInPlace "runtime/glow-path.ss" --replace \
+      '(def glow-install-path (source-path "dapps"))' \
+      '(def glow-install-path "$out")'
+  '';
+
+  postInstall = ''
+    mkdir -p $out/bin $out/gerbil/lib/mukn/glow $out/share/glow/dapps
+    cp main.ss $out/gerbil/lib/mukn/glow/
+    cp dapps/{buy_sig,coin_flip,rps_simple}.glow $out/share/glow/dapps/
+    cat > $out/bin/glow <<EOF
+    #!/bin/sh
+    ORIG_GERBIL_LOADPATH="\$GERBIL_LOADPATH"
+    ORIG_GERBIL_PATH="\$GERBIL_PATH"
+    ORIG_GERBIL_HOME="\$GERBIL_HOME"
+    unset GERBIL_HOME
+    GERBIL_LOADPATH="${gerbil-support.gerbilLoadPath (["$out"] ++ gerbilInputs)}"
+    GLOW_SOURCE="\''${GLOW_SOURCE:-$out/share/glow}"
+    GERBIL_PATH="\$HOME/.cache/glow/gerbil"
+    export GERBIL_PATH GERBIL_LOADPATH GLOW_SOURCE ORIG_GERBIL_PATH ORIG_GERBIL_LOADPATH ORIG_GERBIL_HOME
+    exec ${gerbil}/bin/gxi $out/gerbil/lib/mukn/glow/main.ss "\$@"
+    EOF
+    chmod a+x $out/bin/glow
+    '';
+
+  meta = with lib; {
+    description = "Glow: language for safe Decentralized Applications (DApps)";
+    homepage    = "https://glow-lang.org";
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ fare ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9ed1020bb6e1..db788a57980b 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -15507,7 +15507,8 @@ with pkgs;
   gerbil = callPackage ../development/compilers/gerbil { };
   gerbil-unstable = callPackage ../development/compilers/gerbil/unstable.nix { };
   gerbil-support = callPackage ../development/compilers/gerbil/gerbil-support.nix { };
-  gerbilPackages-unstable = gerbil-support.gerbilPackages-unstable; # NB: don't recurseIntoAttrs for (unstable!) libraries
+  gerbilPackages-unstable = pkgs.gerbil-support.gerbilPackages-unstable; # NB: don't recurseIntoAttrs for (unstable!) libraries
+  glow-lang = pkgs.gerbilPackages-unstable.glow-lang;
 
   gbforth = callPackage ../development/compilers/gbforth { };