!RbXGJhHMsnQcNIDFWN:nixos.org

Haskell in Nixpkgs/NixOS

745 Members
For discussions and questions about Haskell with Nix, cabal2nix and haskellPackages in nixpkgs | Current Docs: https://haskell4nix.readthedocs.io/ | More Nix: #community:nixos.org | More Haskell: #haskell-space:matrix.org149 Servers

Load older messages


SenderMessageTime
30 Apr 2026
@alex:tunstall.xyzAlex

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:tunstall.xyzAlexSince it seems to be a separate output, I would recommend using a different derivation instead of overriding the existing ones.23:39:01
@winston:winston.shwinston

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:winston.shwinston 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:tunstall.xyzAlex Is your ultimate desired hostPlatform one of the JS platforms? 23:40:37
@winston:winston.shwinstonnot doing JS at the minute, so I haven't tried that yet, I just anticipate that there'll be some interest for that as well23:41:07
@alex:tunstall.xyzAlex 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:tunstall.xyzAlex 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:tunstall.xyzAlexWell, cross isn't terribly difficult. I've just gotten it working.00:46:32
@vegowotenks:matrix.orgVegOwOtenks joined the room.14:58:29
@vegowotenks:matrix.orgVegOwOtenks

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:matrix.orgalexfmpe 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:matrix.orgalexfmpe where hackage-packages.nix shows z3 on librarySystemDepends of smtlib-backends-z3 15:05:11
@alexfmpe:matrix.orgalexfmpe ah, same for haskellPackages.z3 15:06:27
@alexfmpe:matrix.orgalexfmpe huh, isn't packages for executables only? 15:07:47
@alexfmpe:matrix.orgalexfmpehttps://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell15:07:48
@alexfmpe:matrix.orgalexfmpe* https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell-attributes15:07:56
@alexfmpe:matrix.orgalexfmpe try inputsFrom 15:08:04
@vegowotenks:matrix.orgVegOwOtenksThanks! I will try inputsFrom, I don't have any clue about the differences.15:12:54
@alexfmpe:matrix.orgalexfmpemy link should explain it15:15:50
@alexfmpe:matrix.orgalexfmpe* my link above explains them15:15:59
@alexfmpe:matrix.orgalexfmpeyou probably want the same for libllvm and libclang15:17:55
20 May 2021
@grahamc:nixos.org@grahamc:nixos.org set the history visibility to "world_readable".22:10:58
@grahamc:nixos.org@grahamc:nixos.org changed the room name to "" from "".22:10:58
@grahamc:nixos.org@grahamc:nixos.org invited @maralorn:maralorn.demaralorn.22:11:05
@maralorn:maralorn.demaralorn joined the room.22:11:13
@andi:kack.itandi- joined the room.22:30:49
@grahamc:nixos.org@grahamc:nixos.orgchanged room power levels.22:36:42
Room Avatar Renderer.22:46:20
@maralorn:maralorn.demaralorn changed the join rule to "public" from "public".22:54:26

Show newer messages


Back to Room ListRoom Version: 6