traefik: add djds as maintainer (#377217)
[NixPkgs.git] / pkgs / development / compilers / gerbil / glow-lang.nix
blob055421503cd0d010f7a480cb4624375277b4ad7c
1 { lib, fetchFromGitHub, gerbil-support, gerbilPackages, gerbil, ... }:
3 rec {
4   pname = "glow-lang";
5   version = "unstable-2023-12-04";
6   git-version = "0.3.2-237-g08d849ad";
7   softwareName = "Glow";
8   gerbil-package = "mukn/glow";
9   version-path = "version";
11   gerbilInputs = with gerbilPackages;
12     [ gerbil-utils gerbil-crypto gerbil-poo gerbil-persist gerbil-ethereum
13       smug-gerbil gerbil-leveldb # gerbil-libp2p ftw
14     ];
16   pre-src = {
17     fun = fetchFromGitHub;
18     owner = "Glow-Lang";
19     repo = "glow";
20     rev = "08d849adef94ae9deead34e6981e77d47806c6e3";
21     sha256 = "0dq0s8y3rgx0wa5wsgcdjs0zijnbgff3y4w2mkh5a04gz4lrhl50";
22     };
24   postPatch = ''
25     substituteInPlace "runtime/glow-path.ss" --replace \
26       '(def glow-install-path (source-path "dapps"))' \
27       '(def glow-install-path "$out")'
28   '';
30   postInstall = ''
31     mkdir -p $out/bin $out/gerbil/lib/mukn/glow $out/share/glow/dapps
32     cp main.ss $out/gerbil/lib/mukn/glow/
33     cp dapps/{buy_sig,coin_flip,rps_simple}.glow $out/share/glow/dapps/
34     cat > $out/bin/glow <<EOF
35     #!/bin/sh
36     ORIG_GERBIL_LOADPATH="\$GERBIL_LOADPATH"
37     ORIG_GERBIL_PATH="\$GERBIL_PATH"
38     ORIG_GERBIL_HOME="\$GERBIL_HOME"
39     unset GERBIL_HOME
40     GERBIL_LOADPATH="${gerbil-support.gerbilLoadPath (["$out"] ++ gerbilInputs)}"
41     GLOW_SOURCE="\''${GLOW_SOURCE:-$out/share/glow}"
42     GERBIL_PATH="\$HOME/.cache/glow/gerbil"
43     export GERBIL_PATH GERBIL_LOADPATH GLOW_SOURCE ORIG_GERBIL_PATH ORIG_GERBIL_LOADPATH ORIG_GERBIL_HOME
44     exec ${gerbil}/bin/gxi $out/gerbil/lib/mukn/glow/main.ss "\$@"
45     EOF
46     chmod a+x $out/bin/glow
47     '';
49   meta = with lib; {
50     description = "Glow: language for safe Decentralized Applications (DApps)";
51     homepage    = "https://glow-lang.org";
52     license     = licenses.asl20;
53     platforms   = platforms.unix;
54     maintainers = with maintainers; [ fare ];
55     broken      = true; # Broken for all platforms since 2023-10-13
56   };