haskell-jp / nix #3

@yuyawk has joined the channel
@SF has joined the channel
@Ryo Haruyama has joined the channel

nix flakesをつかうとキャッシュを置いているところ(substituters)もプロジェクトのファイル(flake.nix)に
おけるのですね。便利ですね。
キャッシュに限らずnixConfigに、いままでユーザー独自の設定(*nix*.confにおいていたもの)にいれていたものも
flake.nixにいれられそうですね。
一番使う用途として多いのは
haskell.nixをつかうときのキャッシュ()を追加することですね。
https://github.com/teto/quantum/blob/master/flake.nix#L5-L12
haskell.nix をちょっと試すときにそれに気づいておお! となりました。flake 最高ですね!
@HA has joined the channel
@chansuke has joined the channel
こんなcontribution guideを敷いているリポジトリーにPull requestを送ろうとしたんですが、Nixをインストールして nix-shell したところ、多くのパッケージを何時間もかけてコンパイルしようとして結局失敗してしまいました(申し訳なくも失敗の正確な原因はつかめてません)。こういうとき、そもそもこれだけのためにわざわざコンパイルするのが苦痛なんでなんとか省略する方法はないのでしょうか?Cachixというのを使えばいいんですかね?
https://github.com/NorfairKing/sydtest/blob/master/CONTRIBUTING.md
... Replies ...
本件続報です。cachixをインストールしようとして気づいたのですが、どうも当初からこちらの問題にハマっていたのではないかと思います。
https://discourse.nixos.org/t/nix-build-trying-to-build-basic-tools-for-all-packages-from-scratch/11097/2
で、解決策曰くconfiguration.nixの nix.trustedUsers という項目をいじれ、とのことなのですが、 find / -name configuration.nix してみても該当のファイルが見当たりませんでした。どこに置いてあるのでしょうか?
ようやくnix-shellを起動して必要なものをインストールできたのでCONTRIBUTING.md の指示どおりnix-shellで stack test --pedantic したところ、こんなエラーが
 <command line>: /nix/store/ikl21vjfq900ccbqg1xasp83kadw6q8y-glibc-2.32-46/lib/libc.so.6: symbol _dl_fatal_printf version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference

検索して見つかった https://stackoverflow.com/questions/49245547/version-glibc-private-not-defined-in-file-ld-linux-x86-64-so-2 を読んだところ、元々DebianにインストールされていたglibcとNixが入れたglibcとで競合しているために発生しているようです。
どなたか直し方に心当たりありませんか?
@ほげやま has joined the channel
@addokoda has joined the channel
アドベントカレンダーを作ってみました
よければご参加ください
https://qiita.com/advent-calendar/2021/nix
@nobv has joined the channel
書きました
誤りがあれば指摘していただけると嬉しいです
https://scrapbox.io/mrsekut-p/Nixを使うと何が嬉しいのか
haskellとまったく関係ないですが書きました。
よろしくお願いします。
https://qiita.com/junjihashimoto@github/items/67c951fbf90ef3592eaa
@ose20 has joined the channel
@naokij has joined the channel
rules_nixpkgsは単にnix-buildを実行しているだけですかね。
これ自体は分散ビルドには対応してなさそう?
https://github.com/tweag/rules_nixpkgs/blob/b39b20edc4637032bc65f6a93af888463027767c/nixpkgs/nixpkgs.bzl#L140-L227
bazel力がまったくないですが、`bazel query` で依存関係をしらべればどこが分散して実行されるかわかりますね。(たぶん)
rules_nixpkgsはrules_haskellでつかうライブラリを事前にセットアップするためだけにつかう用途のようですね。
nixpkgsのderivationはBUILDの中に記述できないみたいです。
https://discourse.nixos.org/t/nix-2-7-0-released/18072
• Nix will now make some helpful suggestions when you mistype something on the command line. For instance, if you type nix build nixpkgs#thunderbrd, it will suggest thunderbird.
地味に嬉しいですね。
@James Haydon has joined the channel
hydra.iohk.ioがおそすぎるが、(indexのダウンロードとか、100kb/secくらいしかでてないような。)
[7/31 built, 1/11/62 copied (815.7/886.1 MiB), 77.2/154.7 MiB DL] fetching 01-index.tar.gz-at-2022-04-11T000000Z from https://hydra.iohk.io
自前でproxyをたててcloudflareをいれれば速くなりますかね。
https://github.com/input-output-hk/haskell.nix/issues/1406
nixでghc9.2をまともに使うにはhaskell.nixしかないのが辛い。
ghc-9.2でhnixをつかうにはgithubにあるものをつかう必要があるが、
cabal.projectがgit submodulesをうまく認識しない。
自分のレポジトリにforkして、submoduleの部分を消せばいいのでしょうが。
https://www.haskellforall.com/2017/01/typed-nix-programming-using-dhall.html
こちらにあるdhallToNixと同様に
haskellToNixでnix上でhaskellを書いてnix expression生成できるようになりました。(ただ単に書けるだけでeDSLとしてはいまいちかなと思っています。)
https://github.com/junjihashimoto/typed-hnix
そもそもnix expressionのようにlambdaと名前付き引数を持つ言語をDSLでどう表現したものかと思っています。
スマートコントラクト系のeDSLのようにしたらいいのではないかと思っていますが、まだ自分の理解が追いついてないところです。
https://serokell.io/blog/lorentz-implementing-smart-contract-edsl-in-haskell
https://github.com/Plutonomicon/plutarch/blob/master/docs/README.md
えび (ebi_chan)
@えび (ebi_chan) has joined the channel
ついにhaskell.nixがCDNに対応しました。
hydra.iohk.ioをcache.iog.ioに置き換えれば速くなります。
@toyboot4e has joined the channel

特定のbuildだけsandboxを外す方法。
*2nixがない場合、*2nixがうまくセットアップできない場合、ネットワークへのアクセスが必要な一般的なパッケージマネージャを使うときに有用です。
https://github.com/nickel-lang/nickel-nix
nickelでnixを書くためのプロジェクトが
今年2月から開発されていたのですね。
PoCの段階のようですが、
型はつかわれていてhaskellでいう :: がnickelでは | ですかね。
https://github.com/nickel-lang/nickel-nix/blob/future/future/playground/acpilight.ncl
こちらがderivationの定義?
https://github.com/nickel-lang/nickel-nix/blob/future/future/prototype/nix_builtins.ncl
@hiratara has joined the channel
@kk has joined the channel
https://github.com/input-output-hk/haskell.nix/issues/1565
haskell.nixでnixpkgsのghcがoverlayでつかえるらしい。
@kohei wada has joined the channel
@sat0ma has joined the channel
@zackey has joined the channel
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は不慣れなため、プロジェクトを構築するよいプラクティスなどあれば教えていただきたいです。
... Replies ...
@CLERK has joined the channel