この記事をシェア
プログラミングを始めると、様々なツールやライブラリをインストールする必要があります。グローバル環境に直接ツール類をインストールしていくと、だんだんと環境が汚れてしまいます。今回は、この問題を解決するパッケージマネージャ「Nix」と、そのバージョン管理ツールである「Nix flakes」について動画で解説しました。
動画内でもお話しましたが、ぼくはこのNixというパッケージマネージャのことをとても気に入っています。なんといってもグローバル環境を汚さないところが良いですね。/nixというディレクトリに全てのパッケージが導入されるので、nix自体を削除するのすら簡単です。インストールが、スクリプトをダウンロードしてきて実行する、という形なのが少しきになりますが...セキュリティ的に...
他の人のプロジェクトで、nix flakesがあってよかったなと思ったプロジェクトは、llama.cppですね。最初、雑に触ったときはビルドガイドを参考に必要そうなパッケージを導入していたのですが、どうにもビルドが失敗していました。ですが、よくよく見るとflake.nixが存在してるじゃん、と気付いてnix developして無事ビルドが通りました。らくちんでしたね。
flake.nixのサンプルとして、ぼくの作ったツールのsvg2woff2にあるflake.nixをご紹介します。以下のような記述になっています。配信で紹介したものと同じ内容です。
{
description = "Node develop environment";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
in {
devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [
nodejs_24
bun
];
};
};
}
nix flakesを使って先ほどのsvg2woff2をビルドできるようにする手順を以下に示します。シェル上で以下のコマンドを1行ずつ実行してください。これの上2行は、動画内で説明したものと同一です。
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon
mkdir -p ~/.config/nix && echo "experimental-features = nix-command flakes" > ~/.config/nix/nix.conf
git clone https://github.com/osawa-naotaka/svg2woff2.git
cd svg2woff2
nix develop
bun run build
たぶんコピペで動くと思います。上2行は、nixを使い始める初回だけ必要なので、一度設定した後は3行目以降の手順、というか、nix developをするだけで開発環境を構築します。nix developを実行するとシェルが改めて動き、その環境内では指定した開発ツールが使えるようになります。開発を終えたらexitするだけで元の環境に戻ります。以上のように、これだけで全ての必要な開発環境が構築できて、使い終わったら環境を元に戻せるのでとてもらくちんです。
以上、今回の動画の補足でした。Nix、ほんとうにオススメなのでぜひご利用ください!
