Nix nixpkgs用のHydraにキャッシュされているパッケージのバージョンを確認するには?

Nix nixpkgs用のHydraにキャッシュされているパッケージのバージョンを確認するには?

私は古いnixpkgsチャンネル/ブランチ()を使って古い18.03Haskellプロジェクトをビルドしようとしています。

最初にビルドしようとしたときにコンパイラのバージョンをghc843...と指定しますが、ビルド時にキャッシュから出ることを期待すると、すべての外部ライブラリをビルドするようです。

幸いなことに、以前にこのような問題が発生したことがあることを覚えていました。デバッグ nixpkgs バイナリキャッシュに必要な不要なパッケージを nix がビルドするのはなぜですか?

問題は、デフォルトでghcの「デフォルトではない」バージョンを使用していることです(Hydraはビルド/キャッシュしません)。

今私の質問は、「デフォルト」コンパイラバージョンまたはHydraビルド/キャッシュバージョンをどのように見つけることができますか?

{
  nixpkgs ? import <nixpkgs> {}
, sources ? import ./nix/sources.nix
, compiler ? "ghc843" } :
let
  niv = import sources.nixpkgs {
    overlays = [
      (_ : _ : { niv = import sources.niv {}; })
    ] ;
    config = {};
  };
  pkgs = niv.pkgs;
  myHaskellPackages = pkgs.haskell.packages.${compiler}.override {
  };
in
(myHaskellPackages.callCabal2nix "abc" (./.) {})

偶然私はghc823これをデフォルトに設定したようです(または少なくともアセットがHydraにキャッシュされています)。


私はnix replを使って、次のように利用可能なghcコンパイラのバージョンを一覧表示する方法を見つけました。

nix-repl> yolo = (import nix/sources.nix {}) 
nix-repl> yolo.blablaTestTabCompletion
nix-repl> yolo2 = (import yolo.nixpkgs {})
nix-repl> yolo2.haskell.packages.
yolo2.haskell.packages.ghc7103         yolo2.haskell.packages.ghc843
yolo2.haskell.packages.ghc7103Binary   yolo2.haskell.packages.ghcHEAD
yolo2.haskell.packages.ghc802          yolo2.haskell.packages.ghcjs
yolo2.haskell.packages.ghc821Binary    yolo2.haskell.packages.ghcjsHEAD
yolo2.haskell.packages.ghc822          yolo2.haskell.packages.integer-simple
yolo2.haskell.packages.ghc841

ベストアンサー1

haskellPackages代わりに使用すると、haskell.packages.ghc<version>常に基本バージョンが得られます。

また、この行haskellPackages = dontRecurseIntoAttrs haskell.packages.ghc883~/.nix-defexpr/channels/nixpkgs/pkgs/top-level/all-packages.nixまたは使用しているnixpkgsチャネルへのパス)を確認して、チャネルのデフォルトのGHCバージョンを確認することもできます。

その行へのリンクは次のとおりです18.03https://github.com/NixOS/nixpkgs/blob/18.03/pkgs/top-level/all-packages.nix#L6216:

haskellPackages = haskell.packages.ghc822.override {

ちなみに、Haskellプロジェクトにnixpkgsバージョンを固定すると、システムの残りの部分をアップグレードしても安定して再構築できることがわかります。バラよりhttps://github.com/Gabriel439/haskell-nix/tree/master/project0#pinning-nixpkgsまたはhttps://nixos.wiki/wiki/FAQ/Pinning_Nixpkgsこれを行う方法に関する追加情報。

おすすめ記事