haskell-jp / nix #3 at 2023-12-04 13:36:11 +0900

https://gitlab.haskell.org/ghc/ghc-wasm-meta にあるNix Flakeを使って、PandocをWasmにビルドしようとしています。
READMEに従ってnix-shellを起動し、
wasm32-wasi-cabal update && wasm32-wasi-cabal install --allow-newer pandoc

と実行してみたところ、zlibがない、などのエラーが出ました。
これを解決するには、きっとnix-shellで起動した環境にzlibを入れたりすればよいと思うのですが、そうするには ghc-wasm-metaをフォークして、flake.nixなどを編集するのがよい方法なのでしょうか?
Nixは不慣れなため、プロジェクトを構築するよいプラクティスなどあれば教えていただきたいです。
nix shellコマンドは引数のderivationのプログラムをPATHに追加してshell環境を起動しています。
自分用の開発環境を作るには、
新たにflake.nixを作って、devShellsの中にmkShell使って、buildInputsに使いたいツールを並べます。
https://nixos.wiki/wiki/Flakes
https://fasterthanli.me/series/building-a-rust-service-with-nix/part-10
今回はその中に元々nix shellで渡していたものとzlibを入れるといいはずです。
そのあとnix developコマンドで開発環境に入る流れになると思います。
wasm用のzlibなのでちょっと違うかもです。
ありがとうございます。とりあえずnixを使わない方法で進めてしまってましたが、後で試してみます。
確かにこちらをフォークしてdevShellsを追加でもいいかもしれません。
https://gitlab.haskell.org/ghc/ghc-wasm-meta
とりあえず、こちらのDockerfileを参考にしつつ、
https://github.com/python/cpython/issues/91246#issuecomment-1603957637
wasi-sdk.nixにzlibを追加するのが良さそうですね。
https://gitlab.haskell.org/ghc/ghc-wasm-meta/-/blob/master/pkgs/wasi-sdk.nix#L12-37
通常のクロスコンパイルでないCのライブラリならNIX_*な環境変数をうまく使ってライブラリの設定をしてくれるようですが、wasiの場合はうまくいかないでしょうね。
わざわざすみません。zlibとは関係なく発生している別の問題に対応してました。参考になります!