microhs: init at 0.14.21.0 (#458599)

This commit is contained in:
Wolfgang Walther
2025-11-05 18:54:24 +00:00
committed by GitHub
2 changed files with 77 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
{
callPackage,
stdenv,
fetchFromGitHub,
lib,
writableTmpDirAsHomeHook,
writeTextDir,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "microhs";
version = "0.14.21.0";
src = fetchFromGitHub {
owner = "augustss";
repo = "MicroHs";
tag = "v${finalAttrs.version}";
hash = "sha256-Tq8fjI3LCP4NWrmbMP0xyhY2fjRmsMCEvgfDQ/SB5Bo=";
};
# mcabal doesn't seem to respect the make flag and fails with /homeless-shelter
# This works around the issue
nativeBuildInputs = [ writableTmpDirAsHomeHook ];
makeFlags = [ "MCABAL=$(out)" ];
buildFlags = [ "bootstrap" ];
# MicroCabal is a separate repository, which should be packaged separately
# The MicroCabal that is installed by `make install` is pregenerated, does not respect MCABAL above, and so is not useable
postInstall = "rm $out/bin/mcabal";
passthru.tests = {
hello-world = callPackage ./test-hello-world.nix { microhs = finalAttrs.finalPackage; };
};
meta = {
description = "Haskell implemented with combinators";
homepage = "https://github.com/augustss/MicroHs";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.steeleduncan ];
platforms = lib.platforms.all;
};
})
@@ -0,0 +1,34 @@
{
stdenv,
microhs,
writeTextDir,
}:
stdenv.mkDerivation {
name = "microhs-hello-world";
buildInputs = [ microhs ];
src = writeTextDir "helloworld.hs" ''
main :: IO ()
main = putStrLn "Hello World"
'';
buildPhase = ''
runHook preBuild
mhs helloworld.hs -oExe
runHook postBuild
'';
checkPhase = ''
runHook preCheck
./Exe | grep "Hello World"
runHook postCheck
'';
doCheck = true;
installPhase = ''
runHook preInstall
touch $out
runHook postInstall
'';
}