[Haskell]
nixpkgs
Haskellのパッケージはソース配布なのでCIで使用すると非常に遅い
→ nixpkgsは独自の構造でバイナリ配布しているので早い
→ 先駆者 https://scrapbox.io/mrsekut-p/Cachix
Haskell+Stack+Nixpkgsの連携
stack.yamlに下記のような設定を追記することでstackは依存性の解決にNixも使うようになります。
nix: enable: true packages: [ sqlite ]
- 依存関係にあるライブラリの取得についてstackビルド時にどのくらい早くなるのかは不明(調査中)
- ただ、agda/happy/alexのようなバイナリ配布されてそうなツールはstackで取得するよりNixpkgsで取得したほうが早い
GitHub Actionで使う
channelの一覧: NixOS - Nix channels
+ | yamlのサンプル |
- GitHub Action参考
+ | yamlのサンプル |
メモ
GitHub Actionでcachix/install-nix-actionを使おうとしたがあまりうまく行かなかった
- attribute 'nixpkgs' in selection path 'nixpkgs.hello' not found #1865
- 実行するとパスが通っていないためかパッケージをインストールできない
こちらのDockerイメージはいい感じに使えているので、調査中https://github.com/xtruder/nix-devcontainer