Luke Granger-Brown
57725ef3ec
git-subtree-dir: third_party/nixpkgs git-subtree-split: 76612b17c0ce71689921ca12d9ffdc9c23ce40b2
56 lines
1.8 KiB
Nix
56 lines
1.8 KiB
Nix
{ lib, fetchFromGitHub, gerbil-support, gerbilPackages, gerbil, ... }:
|
|
|
|
rec {
|
|
pname = "glow-lang";
|
|
version = "unstable-2023-12-04";
|
|
git-version = "0.3.2-237-g08d849ad";
|
|
softwareName = "Glow";
|
|
gerbil-package = "mukn/glow";
|
|
version-path = "version";
|
|
|
|
gerbilInputs = with gerbilPackages;
|
|
[ gerbil-utils gerbil-crypto gerbil-poo gerbil-persist gerbil-ethereum
|
|
smug-gerbil gerbil-leveldb # gerbil-libp2p ftw
|
|
];
|
|
|
|
pre-src = {
|
|
fun = fetchFromGitHub;
|
|
owner = "Glow-Lang";
|
|
repo = "glow";
|
|
rev = "08d849adef94ae9deead34e6981e77d47806c6e3";
|
|
sha256 = "0dq0s8y3rgx0wa5wsgcdjs0zijnbgff3y4w2mkh5a04gz4lrhl50";
|
|
};
|
|
|
|
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 ];
|
|
};
|
|
}
|