28 haskellPackages = pkgs.pkgsCross.ghcjs.haskell.packages.${ghc}.extend (
29 with pkgs.haskell.lib;
30 finalHaskellPkgs: previousHaskellPkgs: {
31 # Includes BigInt patch to support the jsbi polyfill, for Quick/PrimJS
32 ghc = previousHaskellPkgs.ghc.overrideAttrs (drv: drv // {
33 patches = (drv.patches or []) ++ [ "${inputs.miso}/nix/patches/jsbi.patch" ];
37 miso = finalHaskellPkgs.callCabal2nix "miso" inputs.miso {};
38 miso-lynx = finalHaskellPkgs.callCabal2nix "miso-lynx" inputs.miso-lynx {};
41 jsaddle = finalHaskellPkgs.callCabal2nix "jsaddle" "${inputs.miso.inputs.jsaddle}/jsaddle" {};
42 ghcjs-base = finalHaskellPkgs.callCabal2nix "ghcjs-base" inputs.ghcjs-base {};
45 crypton = dontCheck previousHaskellPkgs.crypton;
46 cryptonite = dontCheck previousHaskellPkgs.cryptonite;
47 monad-logger = doJailbreak previousHaskellPkgs.monad-logger;
48 string-interpolate = doJailbreak previousHaskellPkgs.string-interpolate;
49 servant-server = doJailbreak previousHaskellPkgs.servant-server;
51 package = haskellPackages.callCabal2nix pname src { };
52 miso-lynx-node_modules = stdenv.mkDerivation {
53 pname = "miso-lynx-node_modules";
56 nativeBuildInputs = [ bun ];
58 # ExplanationNote: fixed-output derivation
59 # cannot reference Nix store paths,
60 # and the fixup phase would change /usr/bin/… into /nix/store/…
63 export BUN_INSTALL_CACHE_DIR=$(mktemp -d)
64 cp -v ${../nix/pkgs/miso-lynx/bun.lock} bun.lock
65 bun install --force --frozen-lockfile --no-progress --production
68 mkdir -p $out/node_modules
69 cp -R ./node_modules $out
71 # CorrectionNote: this has to be updated each time bun.lock is
72 # eg. with `bun install --lockfile-only`
73 outputHash = "sha256-9UsvyZt1PMlPrnEDxQGWN0SOutD826ORZ7ODxbSC8jo=";
74 outputHashAlgo = "sha256";
75 outputHashMode = "recursive";
77 mainLynxBundle = stdenv.mkDerivation {
79 version = package.version;
87 cp -r ${miso-lynx-node_modules}/node_modules .
88 substituteInPlace node_modules/.bin/rspack \
89 --replace-fail "#!/usr/bin/env" "#!${coreutils}/bin/env"
97 cp -v ${package}/bin/counter.jsexe/all.js .
98 bun build --minify all.js --target=bun --outfile=dist/all.js
107 cp -v dist/main.lynx.bundle $out/