WIP: Nix flakesのすすめ
Table of Contents
本を書いてみようかと思って、色々書き連ねていたやつ。Nix flakesによるプロジェクトセットアップについての本。書き途中。
1. はじめに
この本を手に取ってくださりありがとうございます。この本は、Nix flakesをいかに活用するかを例示する本となっています。不明点があった場合は私のメールアドレス、 [email protected]
に気軽に連絡してください。
この本の読者の対象を以下に書きます。
逆に以下のような人々は対象ではありません。
- Nixライブラリの実装を深く読んで理解したい人。この本は、Nix flakesをとりあえず使えるようになるためのものなので、flake-utilsの実装などは読みません。
- Nix式がうまく読めない人。この本ではNix flakesのためのNix式がたんまり登場します3。
初めて書く本なので拙い部分もあるかと思いますが、よろしくお願いします。
2. とりあえずNix flakesに触れてみる
Nix flakesは、 Nix-v2.4
にて初めて実装されており、それ以降現在のリリースである Nix-v2.24.11
にも実装されている機能です。この機能は未だに試験的機能4としてマークされていますが、デファクトスタンダードとして広くNixユーザーに使用されています。
フレークは、Nixベースのプロジェクトを、より発見しやすく、構成可能で、一貫性があり、再現可能な方法でパッケージ化するための新しいフォーマットです。フレークは、他のフレークとの依存関係を指定し、パッケージ、Nixpkgsオーバーレイ、NixOSモジュール、CIテストなどのNixアセットを返すflake.nixという名前のファイルを含むリポジトリまたはtarボールです。例えば、
nix run nixpkgs\#hello
のようなコマンドは、nixpkgsフレークからhelloアプリケーションを実行します。 フレークは現在実験的とされている。導入については、このブログ記事を参照してください。フレークのシンタックスとセマンティクスの詳細については、nix flakeマニュアル・ページを参照してください。– https://nix.dev/manual/nix/2.25/release-notes/rl-2.4.html よりDeepL翻訳
前提情報はこのくらいですので、一旦Nixが使える状態にしましょう。個人的に、非Nixユーザーから最も簡単なNixの試用方法は、Docker経由での試用が一番だと思っていますので、今回はDockerから試してみましょう。以下のBashコマンドを実行してください。
# この本はNixの本だから、Dockerのインストールの解説はしないよ〜 # Googleとかで検索すれば多分でてくると思うよ docker run -it nixos/nix
このDockerイメージはかなりのレイヤー数を保持しているので、Dockerイメージダウンロードには時間がかかると思います。
Bashプロンプトが表示されたら、以下のコマンド群を入力して試してみましょう。しっかりバージョンが表示され、PATHが通っていることが確認できると思います。
nix-shell --version # Nix flakesじゃない方 nix-build --version # Nix flakesじゃない方 nix --version # Nix flakesな方
Nix flakesでは、 nix
というコマンドを主に使います。このコマンドにはサブコマンドがたくさん用意されています。 man nix
で検索してみましょう。
# よく使うサブコマンドのリスト # 筆者はこんな辺りをよく使う # 試しに"nix build"と打ってみよう。 # ちゃんとサブコマンドが認識されていることがわかるはず。 nix build nix develop nix shell nix repl nix flake