0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NixOSで最小構成からこつこつ環境構築する 2. 補足 `inputs*.inputs.nixpkgs.follows = "nixpkgs"`とは

0
Last updated at Posted at 2026-01-05

flakeのinputsにおけるfollowsについて

前回のflake.nixにみられるinputs.nixpkgs-lib.follows = "nixpkgs";について、スルーしてしまいましたがこれの目的と問題点について調べたことを書いておきます。

Nixではハッシュによって区別された複数のバーションのパッケージが共存できますので依存関係地獄は起きません。ですが一方で、とくに問題のない場合でもハッシュが異なればすべて並列に保存されますのでストレージが圧迫されていきます。さらに新しいリビジョンでのバグ修正や性能向上といった恩恵が受けられません。しかしそれはまた不安定性を招くことにもなり得るので、堂々巡りといったところです。痛し痒しで理解して選択していくしかないのですが、followsオプションでそれは可能です。

わたしの浅い経験からは判断できませんが、現在のところ「既知の問題がない限りfollowsする」という方針で臨みたいと思っています。この議論を参照ください。

followsの作用を確認してみます。
まずflake-partsが入力先としているnixpkgsを指定しない場合です。

follows定義なし
inputs = {
  nixpkgs.url = "github:/nixos/nixpkgs/nixpkgs-unstable";
  
  import-tree.url = "github:vic/import-tree";
  
  flake-parts = {
    url = "github:hercules-ci/flake-parts";
  };
};

ビルドしたあと、nix flake metadataで各々が使用しているパッケージを確認してみます。

naogami@x1 ~/infra> nix flake metadata .
Resolved URL:  path:/home/naogami/infra
Locked URL:    path:/home/naogami/infra?lastModified=1767601626&narHash=sha256-TGI0D0rVr2lzFbKrgblImGWAwRF7cOvw9cuP15df9UY%3D
Description:   My NixOS configuration`
Path:          /nix/store/sm4kbl4jm80kqi7138z2d3jncph6w67w-source
Last modified: 2026-01-05 17:27:06
Inputs:
├───flake-parts: github:hercules-ci/flake-parts/a34fae9c08a15ad73f295041fec82323541400a9?narHash=sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw%3D (2025-12-15 21:49:12)
│   └───nixpkgs-lib: github:nix-community/nixpkgs.lib/2075416fcb47225d9b68ac469a5c4801a9c4dd85?narHash=sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo%3D (2025-12-14 01:15:36)
├───import-tree: github:vic/import-tree/3c23749d8013ec6daa1d7255057590e9ca726646?narHash=sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0%3D (2025-11-21 22:07:00)
└───nixpkgs: github:nixos/nixpkgs/16c7794d0a28b5a37904d55bcca36003b9109aaa?narHash=sha256-fFUnEYMla8b7UKjijLnMe%2BoVFOz6HjijGGNS1l7dYaQ%3D (2026-01-02 14:39:32)

ふたつのnixpkgsが確認できます。

次はflake-partsが入力先としているnixpkgsに同じnikpkgsを指定した場合です。

follows定義あり
inputs = {
  nixpkgs.url = "github:/nixos/nixpkgs/nixpkgs-unstable";
  
  import-tree.url = "github:vic/import-tree";
  
  flake-parts = {
    url = "github:hercules-ci/flake-parts";
    inputs.nixpkgs-lib.follows = "nixpkgs";
  };
};
Resolved URL:  path:/home/naogami/infra
Locked URL:    path:/home/naogami/infra?lastModified=1767606335&narHash=sha256-SNwkZQjkJsW15Qtm84dU9MflPSdSXfEbBS2g7KT5lYU%3D
Description:   My NixOS configuration`
Path:          /nix/store/zyfwgq0bj818k63fpf0nd9scc29ds6d0-source
Last modified: 2026-01-05 18:45:35
Inputs:
├───flake-parts: github:hercules-ci/flake-parts/a34fae9c08a15ad73f295041fec82323541400a9?narHash=sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw%3D (2025-12-15 21:49:12)
│   └───nixpkgs-lib follows input 'nixpkgs'
├───import-tree: github:vic/import-tree/3c23749d8013ec6daa1d7255057590e9ca726646?narHash=sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0%3D (2025-11-21 22:07:00)
└───nixpkgs: github:nixos/nixpkgs/16c7794d0a28b5a37904d55bcca36003b9109aaa?narHash=sha256-fFUnEYMla8b7UKjijLnMe%2BoVFOz6HjijGGNS1l7dYaQ%3D (2026-01-02 14:39:32)

ひとつになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?