NixOS で 常に nixpkgs の master branch を追いかける際のコツ

読了まで:約4分


ここの​所、​普段​使いの​ [[NixOS]] の​ [[nixpkgs]] の​ channel を​ [[GitHub]] 上の​ master branch に​切り替えていたのだけれども、​ とりあえず、​ある​程度​安定させる​コトが​出来たので、​その​辺りの​コツとかを​軽く​まとめてみます。

1. nix-channel を​ unstable に​する​際は、​ nixpkgs を​編集可能に​しておく

多分、​一番​重要な​ヤツ。

NixOS や​ Darwin 等で​ nixpkgs を​ master に​追従させる

と​いう​事を​行いたい​場合には、

nixpkgs を​編集できる​様に​しておく

と​言う​事が​重要で、​これが​出来る​様に​なっていないと、​nixpkgs の​定義が​部分的に​壊れてたりする​場合に、​ 修正できなくなって​詰みます。​具体的には​ 、​NixOS だと​ nixos-rebuild 等が​出来なくなったりする等。

で、​この​ nixpkgs を​編集可能に​しておく、と​いうのは、​割と​簡単で、

  1. nixpkgs の​ master branch を​ 任意の​パスに​ git clone する
  2. nix 系の​ toolchain で​ nix-env -I nixpkgs=/path/to/nixpkgs の​様な​感じの​指定を​する
  3. 後は​一々​ nixpkgs で​ -I オプションを​指定しなくても​良い​様に、​shell で​ alias などを​する

と​いう​感じで​出来ます。​なお、​僕は​ nixpkgs の​ repository を​ /etc/nixpkgs に​置いています。

2. 壊れてたら​直せる​様に​なっておく

まあ、​ master branch とか​ unstable の​ nixpkgs を​追い​かけていると、​パッケージ定義やらが​部分的に​壊れている、​ とか、​割とを​普通ですし、​あと​修正も​日進月歩で​行なわれているので、​多少パッケージ定義が​壊れていても、​ それを​サクっと​修正出来る……と​いう​位の​コトは​出来る​様に​なっておいた​方が​良いです。

と​いうか、​それが​出来ないのであれば、​ unstable とか​ master を​追い​かけるのは​止めて​おいた​方が​良いです。​ Archlinux みたく、​パッケージが​常に​最新でも、​パッケージ定義は​壊れてない、とか​あまり​無いんで。

また、​僕は​そこまでには​至っていませんが、​仮にも​ master を​追い​かける​つもりが​有るなら、​ master に​ contribution する​位の​勢いで​環境構築した方が​良いかもしれません。

と​いうか、​ master を​動く​様に​直すコードって、​貢献すれば、​恐らく​問題なければ​取り込まれる​ハズだし、​ master が​直れば、​みんな​ハッピーに​なれるので。

3. 動かなくてもめげない

で、​最後。​動かなくてもめげない​コト。

  • [[NixOS]] の​場合、​重大な​バグを​踏ん付けない​限り、​仮に​最新の​ master が​動いてなくても、​ 過去の​ generations に​ rollback 出来るし、​また、​unstable を​止める​時も​ nix-channel 辺りで​ stable を​使う​様に​して、​ システムを​ nixos-rebuild すれば​安定バージ​ョンの​ NixOS が​使えるので、​システムに​破壊的な​変更を​加えても、​ それが​ nixpkgs 下に​有れば、​割と​なんと​か​なります。

ただ、​それでも​システムが​壊れる​時は​壊れるし、​また​システムが​壊れた​原因が​ nixpkgs 外に​有る​場合、​ なかなか​復旧しづらい​面も​有るので、、​そういった​時は、​NixOS の​ Live USB 辺りを​作っておくと、​ 割と​安心材料に​なるかと​思います。

そして、​基本的には​ [[NixOS]] は、​システムの​状態定義が​ /etc/nixos/configuration.nix に​集約されているので、​ その​辺りの​バックアップと、​あと、​失なっては​困る​データの​バックアップさえ​怠らなければ、​ システムが​壊れて​再インストール、となっても、​多分、​復旧には​困らない、と​僕は​思います。

以上

ま、​おおよ​そ​こんな​感じかな、と​言う所を​書いてみました。

そして​僕が​思うに、

[[NixOS]] + /etc/nixos の​ [[Git]] での​管理

と​いう​組み合わせは、​システムへの​チャレンジングな​変更を​加える​際に、​ 設定ファイルも​書き戻せるし、​また​システムも​ rollback 出来るし、で、​ 僕の​様な、

[[システムを​色々​変更したい​マン]]

に​取っては、​大変に​有り難い​構造なので、​まあ​今後も​ [[NixOS]] を​使い続けると​思います。​はい。

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。