terminology - Tokyo-NixOS/Tokyo-NixOS-Meetup-Wiki GitHub Wiki
NixOSが利用するパッケージマネージャー。 「purely functional package manager」(完全な関数的パッケージマネージャー)と名称されて、特徴の多いパッケージマネージャー:
- 安全性: パッケージをインストールや削除する事で、他のパッケージに影響を当てるが不可能
- ロールバック: ワンコマンドでパッケージを過去のバージョンに戻す事ができます
- マルチユーザ: ルート権限を持たない普通のユーザがパッケージをインストールできます
- マルチバージョン: 同じパッケージを同時に複数のバージョンでインストールできます
- 再現性: パッケージビルドの完全再現性を目標としています
- マルチプラットフォーム: NixOS以外のLinuxやMac OSでも使えます
- バイナリ&ソース: Nixのパッケージはソースかバイナリを両方利用できます
Nixパッケージマネージャーを利用しているLinuxディストリビューション。 Nixパッケージマネージャーの考えをシステムレベルに実装したLinuxです。
Nixの機能以外に:
- 宣言型設定: 一つの設定ファイルでシステムを柔軟にカスタマイズできます
- ロールバック: システムアップデートで問題が起きた場合は簡単にアップデート前にロールバックできます
- コンテナー: 宣言型コンテナーで簡単に仮想化
Nixのパッケージレシピ。 derivationを見て、nixはパッケージをビルドとインストールできます。 すべてのderivationはNix言語で書かれています。 Nixが利用するパッケージのすべてはderivation形式で提供されています。そのderivation集をnixpkgsと呼びます。
derivationを書くための言語。 関数型で遅延評価を利用しています。 Tour of nixでブラウザ内で触れます。
チャンネルはderivationとそのバイナリを提供する方法です。
大きくわけて、Nixには
- nixos-stable: 安定しているチャンネルで、アップデートはセキュリティフィックスのみ。バージョン番号がついています。
- nixos-unstable: 最新チャンネル、stableより安定性の低いチャンネルが最新のパッケージと機能を利用できます。一般デスクトップで利用できるほどの安定性を持っています。
- nixos-small: smallチャンネルはstableとunstableのに種類があります。stableとunstableと同じ内容を持っていますがデスクトップ向けなバイナリが少ない。サーバにはsmallがおすすめです。
- nixpkgs-unstable
Nixはパッケージをインストールする場所。
/nix/store
で設定されています。
Nixで利用できるパッケージのすべてのderivationをまとめるgithubレポジトリ。 メインのバグトラッカーともなります。
-> nixpkgs
NixパッケージのビルドファームとCIシステム(継続的インテグレーション)です。
Hydraは定期的にnixpkgsを取得し、各チャンネルのジョブをビルドします。 ジョブが成功すると生成されたバイナリファイルはバイナリキャッシュにコピされ、チャンネルはアップデートされます。
-> Hydra