haskell.nix
Alternative Haskell Infrastructure for Nixpkgs
なるほどこういう感じで使うのか
code:haskell-pkgs.nix
let
# Fetch the latest haskell.nix and import its default.nix
haskellNix = import
(builtins.fetchTarball {
})
{ };
# haskell.nix provides access to the nixpkgs pins which are used by our CI,
# hence you will be more likely to get cache hits when using these.
# But you can also just use your own, e.g. '<nixpkgs>'.
nixpkgsSrc = haskellNix.sources.nixpkgs-2111;
# haskell.nix provides some arguments to be passed to nixpkgs, including some
# patches and also the haskell.nix functionality itself as an overlay.
nixpkgsArgs = haskellNix.nixpkgsArgs;
# import nixpkgs with overlays
in
import nixpkgsSrc nixpkgsArgs
再現性は高いが、ビルド対象が多くて時間がかかりがちらしい
haskell.nixはstackageを使ってstackとcabalをサポートしていて、独自のGHC(GHCJSなど)を使うことができます。
作ったものをNixのパッケージにもできます。開発の再現性は高いです。
開発時のビルドと本番用のビルドが別で、開発者は本番リリース前に本番用のコンパイルが必要で開発の手間が増えます。
また、独自のGHCを使えますが、環境によってはGHCのビルドから開始されるので、初期環境構築に時間がかかることがあります。
そのため、開発の効率性はよくないです。