push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,142 @@
{
gccStdenv,
lib,
coreutils,
openssl,
zlib,
sqlite,
version,
git-version,
src,
gambit-support,
gambit-git-version,
gambit-stampYmd,
gambit-stampHms,
gambit-params,
}:
# We use Gambit, that works 10x better with GCC than Clang. See ../gambit/build.nix
let
stdenv = gccStdenv;
in
stdenv.mkDerivation rec {
pname = "gerbil";
inherit version;
inherit src;
buildInputs_libraries = [
openssl
zlib
sqlite
];
# TODO: either fix all of Gerbil's dependencies to provide static libraries,
# or give up and delete all tentative support for static libraries.
#buildInputs_staticLibraries = map makeStaticLibraries buildInputs_libraries;
buildInputs = buildInputs_libraries;
postPatch = ''
patchShebangs . ;
grep -Fl '#!/usr/bin/env' `find . -type f -executable` | while read f ; do
substituteInPlace "$f" --replace '#!/usr/bin/env' '#!${coreutils}/bin/env' ;
done ;
cat > MANIFEST <<EOF
gerbil_stamp_version=v${git-version}
gambit_stamp_version=v${gambit-git-version}
gambit_stamp_ymd=${gambit-stampYmd}
gambit_stamp_hms=${gambit-stampHms}
EOF
for f in src/bootstrap/gerbil/compiler/driver__0.scm \
src/build/build-libgerbil.ss \
src/gerbil/compiler/driver.ss ; do
substituteInPlace "$f" --replace '"gcc"' '"${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}gcc"' ;
done
'';
## TODO: make static compilation work.
## For that, get all the packages below to somehow expose static libraries,
## so we can offer users the option to statically link them into Gambit and/or Gerbil.
## Then add the following to the postPatch script above:
# cat > etc/gerbil_static_libraries.sh <<EOF
# OPENSSL_LIBCRYPTO=${makeStaticLibraries openssl}/lib/libcrypto.a # MISSING!
# OPENSSL_LIBSSL=${makeStaticLibraries openssl}/lib/libssl.a # MISSING!
# ZLIB=${makeStaticLibraries zlib}/lib/libz.a
# SQLITE=${makeStaticLibraries sqlite}/lib/sqlite.a # MISSING!
# EOF
configureFlags = [
"--prefix=$out/gerbil"
"--enable-zlib"
"--enable-sqlite"
"--enable-shared"
"--enable-march=" # Avoid non-portable invalid instructions. Use =native if local build only.
];
configurePhase = ''
export CC=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}gcc \
CXX=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}g++ \
CPP=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}cpp \
CXXCPP=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}cpp \
LD=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}ld \
XMKMF=${coreutils}/bin/false
unset CFLAGS LDFLAGS LIBS CPPFLAGS CXXFLAGS
./configure ${builtins.concatStringsSep " " configureFlags}
'';
extraLdOptions = [
"-L${zlib}/lib"
"-L${openssl.out}/lib"
"-L${sqlite.out}/lib"
];
buildPhase = ''
runHook preBuild
# gxprof testing uses $HOME/.cache/gerbil/gxc
export HOME=$PWD
export GERBIL_BUILD_CORES=$NIX_BUILD_CORES
export GERBIL_GXC=$PWD/bin/gxc
export GERBIL_BASE=$PWD
export GERBIL_PREFIX=$PWD
export GERBIL_PATH=$PWD/lib
export PATH=$PWD/bin:$PATH
${gambit-support.export-gambopt gambit-params}
# Build, replacing make by build.sh
( cd src && sh build.sh )
f=build/lib/libgerbil.so.ldd ; [ -f $f ] && :
substituteInPlace "$f" --replace '(' \
'(${lib.strings.concatStrings (map (x: "\"${x}\" ") extraLdOptions)}'
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/gerbil $out/bin
./install.sh
(cd $out/bin ; ln -s ../gerbil/bin/* .)
runHook postInstall
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
libgerbil="$(realpath "$out/gerbil/lib/libgerbil.so")"
install_name_tool -id "$libgerbil" "$libgerbil"
'';
dontStrip = true;
meta = {
description = "Gerbil Scheme";
homepage = "https://github.com/vyzo/gerbil";
license = lib.licenses.lgpl21Only; # dual, also asl20, like Gambit
# NB regarding platforms: regularly tested on Linux and on macOS.
# Please report success and/or failure to fare.
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ fare ];
};
outputsToInstall = [ "out" ];
}

View File

@@ -0,0 +1,22 @@
{
callPackage,
fetchFromGitHub,
gambit-support,
}:
callPackage ./build.nix rec {
version = "0.18.1";
git-version = "0.18.1";
src = fetchFromGitHub {
owner = "mighty-gerbils";
repo = "gerbil";
rev = "23c30a6062cd7e63f9d85300ce01585bb9035d2d";
sha256 = "15fh0zqkmnjhan1mgymq5fgbjsh5z9d2v6zjddplqib5zd2s3z6k";
fetchSubmodules = true;
};
inherit gambit-support;
gambit-params = gambit-support.unstable-params;
gambit-git-version = "4.9.5-78-g8b18ab69";
gambit-stampYmd = "20231029";
gambit-stampHms = "163035";
}

View File

@@ -0,0 +1,32 @@
{
lib,
fetchFromGitHub,
gerbilPackages,
...
}:
{
pname = "ftw";
version = "unstable-2023-11-15";
git-version = "e5e2f56";
softwareName = "FTW: For The Web!";
gerbil-package = "drewc/ftw";
gerbilInputs = with gerbilPackages; [ gerbil-utils ];
pre-src = {
fun = fetchFromGitHub;
owner = "drewc";
repo = "ftw";
rev = "e5e2f56e90bf072ddf9c2987ddfac45f048e8a04";
sha256 = "04164190vv1fzfk014mgqqmy5cml5amh63df31q2yc2kzvfajfc3";
};
meta = with lib; {
description = "Simple web handlers for Gerbil Scheme";
homepage = "https://github.com/drewc/ftw";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,38 @@
{
pkgs,
lib,
fetchFromGitHub,
gerbilPackages,
...
}:
{
pname = "gerbil-crypto";
version = "unstable-2023-11-29";
git-version = "0.1-1-g4197bfa";
gerbil-package = "clan/crypto";
gerbilInputs = with gerbilPackages; [
gerbil-utils
gerbil-poo
];
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ pkgs.secp256k1 ];
version-path = "version";
softwareName = "Gerbil-crypto";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-crypto";
rev = "4197bfa71dc55657f79efd5cc21fe59839e840f2";
sha256 = "1jdfz5x24dfvpwyfxalkhv83gf9ylyaqii1kg8rjl8dzickawrix";
};
meta = with lib; {
description = "Gerbil Crypto: Extra Cryptographic Primitives for Gerbil";
homepage = "https://github.com/fare/gerbil-crypto";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
fetchFromGitHub,
gerbilPackages,
gerbil-support,
gerbil,
...
}:
rec {
pname = "gerbil-ethereum";
version = "unstable-2023-12-04";
git-version = "0.2-11-g124ec58";
softwareName = "Gerbil-ethereum";
gerbil-package = "clan/ethereum";
version-path = "version";
gerbilInputs = with gerbilPackages; [
gerbil-utils
gerbil-crypto
gerbil-poo
gerbil-persist
gerbil-leveldb
];
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-ethereum";
rev = "124ec585157e2c505cd3c449a389c124ca6da9e9";
sha256 = "0xg07k421r5p0qx98id66k0k2l3vi1is875857sd8q3h6bks0z54";
};
postInstall = ''
cp scripts/{croesus.prv,genesis.json,logback.xml,yolo-evm.conf,yolo-kevm.conf,run-ethereum-test-net.ss} $out/gerbil/lib/clan/ethereum/scripts/
mkdir -p $out/bin
cat > $out/bin/run-ethereum-test-net <<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)}"
GERBIL_PATH="\$HOME/.cache/gerbil-ethereum/gerbil"
export GERBIL_PATH GERBIL_LOADPATH GLOW_SOURCE ORIG_GERBIL_PATH ORIG_GERBIL_LOADPATH
exec ${gerbil}/bin/gxi "\$0" "\$@"
|#
(import :clan/ethereum/scripts/run-ethereum-test-net :std/lib/multicall)
(apply call-entry-point (cdr (command-line)))
EOF
chmod a+x $out/bin/run-ethereum-test-net
'';
meta = with lib; {
description = "Gerbil Ethereum: a Scheme alternative to web3.js";
homepage = "https://github.com/fare/gerbil-ethereum";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,37 @@
{
pkgs,
lib,
fetchFromGitHub,
leveldb,
...
}:
{
pname = "gerbil-leveldb";
version = "unstable-2023-09-23";
git-version = "c62e47f";
gerbil-package = "clan";
gerbilInputs = [ ];
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ leveldb ];
version-path = "";
softwareName = "Gerbil-LevelDB";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-leveldb";
rev = "c62e47f352377b6843fb3e4b27030762a510a0d8";
sha256 = "177zn1smv2zq97mlryf8fi7v5gbjk07v5i0dix3r2wsanphaawvl";
};
meta = with lib; {
description = "LevelDB bindings for Gerbil";
homepage = "https://github.com/mighty-gerbils/gerbil-leveldb";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
# "-L${leveldb}/lib"
}

View File

@@ -0,0 +1,27 @@
{ lib, fetchFromGitHub, ... }:
{
pname = "gerbil-libp2p";
version = "unstable-2022-02-03";
git-version = "15b3246";
softwareName = "Gerbil-libp2p";
gerbil-package = "vyzo";
buildInputs = [ ]; # Note: at *runtime*, this depends on go-libp2p-daemon running
pre-src = {
fun = fetchFromGitHub;
owner = "vyzo";
repo = "gerbil-libp2p";
rev = "15b32462e683d89ffce0ff15ad373d293ea0ee5d";
sha256 = "059lydp7d6pjgrd4pdnqq2zffzlba62ch102f01rgzf9aps3c8lz";
};
meta = with lib; {
description = "Gerbil libp2p: use libp2p from Gerbil";
homepage = "https://github.com/vyzo/gerbil-libp2p";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,35 @@
{
pkgs,
lib,
fetchFromGitHub,
libxml2,
...
}:
{
pname = "gerbil-libxml";
version = "unstable-2023-09-23";
git-version = "b08e5d8";
gerbil-package = "clan";
gerbilInputs = [ ];
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ libxml2 ];
version-path = "";
softwareName = "Gerbil-LibXML";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-libxml";
rev = "b08e5d8fe4688a162824062579ce152a10adb4cf";
sha256 = "1zfccqaibwy2b3srwmwwgv91dwy1xl18cfimxhcsxl6mxvgm61pd";
};
meta = with lib; {
description = "libxml bindings for Gerbil";
homepage = "https://github.com/mighty-gerbils/gerbil-libxml";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,37 @@
{
pkgs,
lib,
fetchFromGitHub,
libyaml,
...
}:
{
pname = "gerbil-libyaml";
version = "unstable-2023-09-23";
git-version = "398a197";
gerbil-package = "clan";
gerbilInputs = [ ];
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ libyaml ];
version-path = "";
softwareName = "Gerbil-LibYAML";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-libyaml";
rev = "398a19782b1526de94b70de165c027d4b6029dac";
sha256 = "0plmwx1i23c9nzzg6zxz2xi0y92la97mak9hg6h3c6d8kxvajb5c";
};
meta = with lib; {
description = "libyaml bindings for Gerbil";
homepage = "https://github.com/mighty-gerbils/gerbil-libyaml";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
# "-L${libyaml}/lib"
}

View File

@@ -0,0 +1,37 @@
{
pkgs,
lib,
fetchFromGitHub,
lmdb,
...
}:
{
pname = "gerbil-lmdb";
version = "unstable-2023-09-23";
git-version = "6d64813";
gerbil-package = "clan";
gerbilInputs = [ ];
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ lmdb ];
version-path = "";
softwareName = "Gerbil-LMDB";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-lmdb";
rev = "6d64813afe5766776a0d7ef45f80c784b820742c";
sha256 = "12kywxx4qjxchmhcd66700r2yfqjnh12ijgqnpqaccvigi07iq9b";
};
meta = with lib; {
description = "LMDB bindings for Gerbil";
homepage = "https://github.com/mighty-gerbils/gerbil-lmdb";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
# "-L${lmdb.out}/lib"
}

View File

@@ -0,0 +1,37 @@
{
pkgs,
lib,
fetchFromGitHub,
mariadb-connector-c,
...
}:
{
pname = "gerbil-mysql";
version = "unstable-2023-09-23";
git-version = "ecec94c";
gerbil-package = "clan";
gerbilInputs = [ ];
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ mariadb-connector-c ];
version-path = "";
softwareName = "Gerbil-MySQL";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-mysql";
rev = "ecec94c76d7aa23331b7e02ac7732a7923f100a5";
sha256 = "01506r0ivgp6cxvwracmg7pwr735ngb7899ga3lxy181lzkp6b2c";
};
meta = with lib; {
description = "MySQL bindings for Gerbil";
homepage = "https://github.com/mighty-gerbils/gerbil-mysql";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
# "-L${mariadb-connector-c}/lib/mariadb"
}

View File

@@ -0,0 +1,37 @@
{
lib,
fetchFromGitHub,
gerbilPackages,
...
}:
{
pname = "gerbil-persist";
version = "unstable-2023-11-29";
git-version = "0.2-6-g8a5e40d";
softwareName = "Gerbil-persist";
gerbil-package = "clan/persist";
version-path = "version";
gerbilInputs = with gerbilPackages; [
gerbil-utils
gerbil-crypto
gerbil-poo
gerbil-leveldb
];
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-persist";
rev = "8a5e40deb01140b9c8d03c6cc985e47a9d7123d8";
sha256 = "1c1h1yp7gf23r3asxppgga4j4jmy4l9rlbb7vw9jcwvl8d30yrab";
};
meta = with lib; {
description = "Gerbil Persist: Persistent data and activities";
homepage = "https://github.com/fare/gerbil-persist";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
fetchFromGitHub,
gerbilPackages,
...
}:
{
pname = "gerbil-poo";
version = "unstable-2023-11-29";
git-version = "0.2-5-gacf654e";
softwareName = "Gerbil-POO";
gerbil-package = "clan/poo";
version-path = "version";
gerbilInputs = with gerbilPackages; [ gerbil-utils ];
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-poo";
rev = "acf654eb040c548da260a7a5d52bafb057d23541";
sha256 = "1pxv1j6hwcgjj67bb7vvlnyl3123r43ifldm6alm76v2mfp2vs81";
};
meta = with lib; {
description = "Gerbil POO: Prototype Object Orientation for Gerbil Scheme";
homepage = "https://github.com/fare/gerbil-poo";
license = licenses.asl20;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,279 @@
{
pkgs,
lib,
callPackage,
...
}:
let
inherit (builtins) filterSource;
inherit (lib)
commitIdFromGitRepo
concatStringsSep
elem
elemAt
hasSuffix
listToAttrs
mapAttrs
optionalString
pathExists
readFile
removeSuffix
substring
traceSeqN
;
inherit (lib.strings) match;
# Implicitly calls through to this file, similar to `let .. in` or `rec`.
inherit (pkgs.gerbil-support)
callPpp
gerbilLoadPath
gerbilPackage
gerbilPackages-unstable
gerbilSkippableFiles
gerbilSourceFilter
overrideSrcIfShaDiff
ppaToPl
pppToKV
pppToName
ppplToPpa
prePackage-defaults
prePackages-unstable
resolve-pre-src
sha256-of-pre-src
view
;
in
{
pppToName = ppp: removeSuffix ".nix" (baseNameOf ppp); # from pre-package path to name
callPpp = ppp: callPackage ppp prePackage-defaults; # from pre-package path to pre-package
pppToKV = ppp: {
name = pppToName ppp;
value = callPpp ppp;
}; # from pre-package path to name
ppplToPpa = ppps: listToAttrs (map pppToKV ppps); # from pre-package path list to name/pre-package attr
prePackages-unstable = ppplToPpa [
./gerbil-leveldb.nix
./gerbil-lmdb.nix
./gerbil-mysql.nix
./gerbil-libxml.nix
./gerbil-libyaml.nix
./smug-gerbil.nix # ./ftw.nix
./gerbil-utils.nix
./gerbil-crypto.nix
./gerbil-poo.nix
./gerbil-persist.nix
./gerbil-ethereum.nix
# ./gerbil-libp2p.nix
./glow-lang.nix
];
prePackage-defaults = {
gerbil = pkgs.gerbil-unstable;
gambit-params = pkgs.gambit-support.unstable-params;
gerbilPackages = gerbilPackages-unstable;
git-version = "";
version-path = "";
gerbilInputs = [ ];
nativeBuildInputs = [ ];
buildInputs = [ ];
buildScript = "./build.ss";
postInstall = "";
softwareName = "";
};
ppaToPl = mapAttrs (_: gerbilPackage);
gerbilPackages-unstable = ppaToPl prePackages-unstable;
resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src [ "fun" ]);
gerbilVersionFromGit =
srcDir: version-path:
let
version-file = "${srcDir}/${version-path}.ss";
in
if pathExists version-file then
let
m = match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n" (
readFile version-file
);
in
{
version = "${elemAt m 2}-git";
git-version = elemAt m 1;
}
else
{
version = "0.0-git";
git-version =
let
gitpath = "${srcDir}/.git";
in
if pathExists gitpath then commitIdFromGitRepo gitpath else "0";
};
gerbilSkippableFiles = [
".git"
".build"
".build_outputs"
"run"
"result"
"dep"
"BLAH"
"tmp.nix"
];
gerbilSourceFilter =
path: type:
let
baseName = baseNameOf path;
in
!(elem baseName gerbilSkippableFiles || hasSuffix "~" baseName);
gerbilFilterSource = filterSource gerbilSourceFilter;
# Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH.
gerbilLoadPath = gerbilInputs: concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs);
path-src = path: { fun = _: path; };
view = traceSeqN 4;
sha256-of-pre-src = pre-src: if pre-src ? sha256 then pre-src.sha256 else "none";
overrideSrcIfShaDiff =
name: new-pre-src: super:
let
old-sha256 = sha256-of-pre-src super.${name}.pre-src;
new-sha256 = sha256-of-pre-src new-pre-src;
in
if old-sha256 == new-sha256 then
{ }
else
view "Overriding ${name} old-sha256: ${old-sha256} new-sha256: ${new-sha256}" {
${name} = super.${name} // {
pre-src = new-pre-src;
version = "override";
git-version = if new-pre-src ? rev then substring 0 7 new-pre-src.rev else "unknown";
};
};
pkgsOverrideGerbilPackageSrc = name: pre-src: pkgs: super: {
gerbil-support =
(super-support: {
prePackages-unstable =
(super-ppu: super-ppu // (overrideSrcIfShaDiff name pre-src super-ppu))
super-support.prePackages-unstable;
})
super.gerbil-support;
};
# Use this function to create a Gerbil library. See gerbil-utils as an example.
gerbilPackage =
prePackage:
let
pre-pkg = prePackage-defaults // prePackage;
inherit (pre-pkg)
pname
version
pre-src
git-version
meta
softwareName
gerbil-package
version-path
gerbil
gambit-params
gerbilInputs
nativeBuildInputs
buildInputs
buildScript
postInstall
;
buildInputs_ = buildInputs;
in
pkgs.gccStdenv.mkDerivation rec {
# See ../gambit/build.nix regarding why we use gccStdenv
inherit
meta
pname
version
nativeBuildInputs
postInstall
;
passthru = {
inherit pre-pkg;
};
src = resolve-pre-src pre-src;
buildInputs = [ gerbil ] ++ gerbilInputs ++ buildInputs_;
postPatch = ''
set -e ;
${optionalString (version-path != "")
''echo -e '(import :clan/versioning${
concatStringsSep "" (
map (
x:
let
px = x.passthru.pre-pkg;
in
optionalString (px.version-path != "") " :${px.gerbil-package}/${px.version-path}"
) gerbilInputs
)
})\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''
}
patchShebangs . ;
'';
postConfigure = ''
export GERBIL_BUILD_CORES=$NIX_BUILD_CORES
export GERBIL_PATH=$PWD/.build
export GERBIL_LOADPATH=${gerbilLoadPath ([ "$out" ] ++ gerbilInputs)}
${pkgs.gambit-support.export-gambopt gambit-params}
'';
buildPhase = ''
runHook preBuild
${buildScript}
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/gerbil
cp -fa .build/* $out/gerbil/
if [[ -d $out/gerbil/bin ]] ; then
( cd $out/gerbil
bins=$(find ../gerbil/bin -type f)
if [[ -n $bins ]] ; then
( mkdir -p ../bin
cd ..
ln -s $bins bin
)
fi
)
fi
runHook postInstall
'';
dontFixup = true;
checkPhase = ''
runHook preCheck
if [[ -f unit-tests.ss ]] ; then
export GERBIL_APPLICATION_HOME=$PWD
./unit-tests.ss version
./unit-tests.ss
else
echo "No gerbil-utils style unit-tests.ss detected for ${pname} ${version}.";
fi
runHook postCheck
'';
doCheck = true;
};
}

View File

@@ -0,0 +1,26 @@
{ lib, fetchFromGitHub, ... }:
{
pname = "gerbil-utils";
version = "unstable-2023-12-06";
git-version = "0.4-13-g9398865";
softwareName = "Gerbil-utils";
gerbil-package = "clan";
version-path = "version";
pre-src = {
fun = fetchFromGitHub;
owner = "mighty-gerbils";
repo = "gerbil-utils";
rev = "939886579508ff34b58a0d65bbb7d666125d0551";
sha256 = "0dga03qq7iy12bnpxr6d40qhvihsvn3y87psf2w2clnpypjb3blx";
};
meta = with lib; {
description = "Gerbil Clan: Community curated Collection of Common Utilities";
homepage = "https://github.com/fare/gerbil-utils";
license = licenses.lgpl21;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,69 @@
{
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 ];
broken = true; # Broken for all platforms since 2023-10-13
};
}

View File

@@ -0,0 +1,25 @@
{ lib, fetchFromGitHub, ... }:
{
pname = "smug-gerbil";
version = "unstable-2020-12-12";
git-version = "0.4.20";
softwareName = "Smug-Gerbil";
gerbil-package = "drewc/smug";
pre-src = {
fun = fetchFromGitHub;
owner = "drewc";
repo = "smug-gerbil";
rev = "cf23a47d0891aa9e697719309d04dd25dd1d840b";
sha256 = "13fdijd71m3fzp9fw9xp6ddgr38q1ly6wnr53salp725w6i4wqid";
};
meta = with lib; {
description = "Super Monadic Über Go-into : Parsers and Gerbil Scheme";
homepage = "https://github.com/drewc/smug-gerbil";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [ fare ];
};
}

View File

@@ -0,0 +1,23 @@
{
callPackage,
fetchFromGitHub,
gambit-support,
}:
callPackage ./build.nix rec {
version = "unstable-2023-12-06";
git-version = "0.18.1";
src = fetchFromGitHub {
owner = "mighty-gerbils";
repo = "gerbil";
rev = "23c30a6062cd7e63f9d85300ce01585bb9035d2d";
sha256 = "15fh0zqkmnjhan1mgymq5fgbjsh5z9d2v6zjddplqib5zd2s3z6k";
fetchSubmodules = true;
};
inherit gambit-support;
gambit-params = gambit-support.unstable-params;
# These are available in pkgs.gambit-unstable.passthru.git-version, etc.
gambit-git-version = "4.9.5-78-g8b18ab69";
gambit-stampYmd = "20231029";
gambit-stampHms = "163035";
}