| 30 Apr 2026 |
Alex | Yes, building with Hugs is currently the preferred way because it does not depend on any pre-generated code.
The stage 1 build uses a pre-existing mhs (usually runhugs wrapped mhs) with make.
The stage 2 build uses the stage 1 mhs with mcabal.
It's not immediately obvious to me how exactly mhseval.js is generated, but is there any reason you can't generate it using the stage 1 or stage 2 compiler? | 23:37:10 |
Alex | Since it seems to be a separate output, I would recommend using a different derivation instead of overriding the existing ones. | 23:39:01 |
winston | I was trying to get it to work via
mhseval = pkgs.haskell.compiler.microhs.overrideAttrs (prevAttrs: {
microhs-stage1 = prevAttrs.passthru.microhs-stage1.overrideAttrs {
nativeBuildInputs = [ pkgs.breakpointHook ];
postBuild = ''
make bin/mhseval
'';
postInstall = ''
cp bin/mhseval $out/bin/mhseval
'';
};
});
and didn't manage to get a useful output that way, I did try to copy it from stage1 to stage2 later, but I've changed a bunch of code around this
| 23:39:42 |
winston | currently I'm just doing a mkDerivation inheriting from src etc from pkgs.haskell.compiler.microhs, then postInstall'ing mhseval, so that works | 23:40:24 |
Alex | Is your ultimate desired hostPlatform one of the JS platforms? | 23:40:37 |
winston | not doing JS at the minute, so I haven't tried that yet, I just anticipate that there'll be some interest for that as well | 23:41:07 |
Alex | The other problem here is that mhseval is not in the Cabal file, so naturally the stage 2 build won't include it either. | 23:48:31 |
Alex | Unless JS is supported as a buildPlatform, I think it might be best to first make microhs compatible with cross.
I'm not sure what's missing for cross, but I suspect it has to do with the targetPlatform not being passed to the build. | 23:51:42 |
| 1 May 2026 |
Alex | Well, cross isn't terribly difficult. I've just gotten it working. | 00:46:32 |
| VegOwOtenks joined the room. | 14:58:29 |
VegOwOtenks | I'm starting out with nix and having trouble with system library fiddling. GHC cannot load the shared object for z3, though the C headers are found just fine.
This is my flake definition:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
in {
devShells.default = with pkgs; mkShell
{
packages =
[ haskell.compiler.ghc914
z3
stack
libllvm
libclang
];
};
}
);
}
| 15:02:18 |
alexfmpe | I dunno about flakes, but nix-build -A haskellPackages.smtlib-backends-z3 on nixpkgs master works just fine on my macos | 15:04:23 |
alexfmpe | where hackage-packages.nix shows z3 on librarySystemDepends of smtlib-backends-z3 | 15:05:11 |
alexfmpe | ah, same for haskellPackages.z3 | 15:06:27 |
alexfmpe | huh, isn't packages for executables only? | 15:07:47 |
alexfmpe | https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell | 15:07:48 |
alexfmpe | * https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell-attributes | 15:07:56 |
alexfmpe | try inputsFrom | 15:08:04 |
VegOwOtenks | Thanks! I will try inputsFrom, I don't have any clue about the differences. | 15:12:54 |
alexfmpe | my link should explain it | 15:15:50 |
alexfmpe | * my link above explains them | 15:15:59 |
alexfmpe | you probably want the same for libllvm and libclang | 15:17:55 |
| 20 May 2021 |
| @grahamc:nixos.org set the history visibility to "world_readable". | 22:10:58 |
| @grahamc:nixos.org changed the room name to "" from "". | 22:10:58 |
| @grahamc:nixos.org invited maralorn. | 22:11:05 |
| maralorn joined the room. | 22:11:13 |
| andi- joined the room. | 22:30:49 |
| @grahamc:nixos.orgchanged room power levels. | 22:36:42 |
| Room Avatar Renderer. | 22:46:20 |
| maralorn changed the join rule to "public" from "public". | 22:54:26 |