Nixデリバティブのサイズを取得する方法は?

Nixデリバティブのサイズを取得する方法は?

デリバティブを作成した後、デリバティブのサイズを計算できますか?たとえば、ポストでnixos-rebuild新しい派生が占める空間はどれくらいになるのか、以前のビルドによるストレージの節約を除外しますか?

答え1

欲しいかもしれませんnix path-info(例えばemacsの場合):

$ nix-build -A emacs '<nixpkgs>'
$ nix path-info -Sh ./result
/nix/store/3l9lddwxz1mayaxvw8iy50ygzzfh1s1b-emacs-27.2   470.4M

~からニックス修正情報履歴:

nix path-info保存パスに関する情報を表示しますnix-store -q。便利な機能はオプション--closure-size-S)です。たとえば、次のコマンドは、現在のNixOSシステムクロージャの各パスのクロージャサイズをサイズでソートして表示します。

nix path-info -rS /run/current-system | sort -nk2

また見てくださいニックス設置マニュアル

答え2

この試み:

nix-store -q --requisites `nix-build --no-out-link '<nixpkgs>' -A vim` | sort -uf | xargs du -ch | tail -1

私も次のことを見たいです。

for p in /nix/var/nix/profiles/system* /nix/var/nix/profiles/per-user/$USER/profile*
do
   echo -n $p" ⇒ "
   nix-store -q --requisites $p | sort -uf | xargs du -ch | tail -1
done

明らかに派生した転移的クロージャーのサイズは大きく重なるため(共有ライブラリなど)、これらの数は常に全体のスペース使用量を超えるように増加します。それでもまだ便利です。

関連情報