NixOS で Neovim の unstable 版や nightly 版を使う方法
概要
前置き
Vim駅伝2025-05-02の記事です。前回の記事は atusy さんの Vimでステータスラインプラグインを遅延読み込みする | Atusy's blog でした。
私は NixOS で使うアプリを「システム全体で使うもの」と「特定のユーザーだけが使うもの」に分けて管理しており、「システム全体で使うもの」は configuration.nix
で管理して nixos-rebuild
コマンドでインストールできるようにしています。
システム全体で使えるようにしているアプリは「Git、ZSH、Neovim」で、私が使っている NixOS-WSL の nixpkgs のバージョンは 24.111 なので、nixos-rebuild
でインストールできる Neovim は v0.10 になります2。
このたび、Neovim が v0.11 にバージョンアップして Neovim 単体で LSP を設定できるようになったので試そうと思ったのですが、v0.11 を使うには nixpkgs のバージョンを unstable にする必要があります。しかし、ZSH や Git は安定版を使いたかったので、configuration.nix
の設定を見直して Neovim だけ unstable 版を使えるようにしました。
色々相談したり調べたりして何とか上手くいきましたので、設定方法を備忘録としてメモします。また、ついでに nightly 版をインストールする方法も調べましたので、合わせてメモします。なお、本記事は 2025年4月27日時点の情報です。
環境
OS: NixOS on WSL2 (Windows on ARM)
1> nix-shell -p nix-info --run "nix-info -m"
2 - system: `"aarch64-linux"`
3 - host os: `Linux 5.15.167.4-microsoft-standard-WSL2, NixOS, 24.11 (Vicuna), 24.11.717196.9684b53175fc`
4 - multi-user?: `yes`
5 - sandbox: `yes`
6 - version: `nix-env (Nix) 2.24.14`
7 - channels(root): `"nixos-24.11, nixos-wsl"`
8 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
1> home-manager --version
225.05-pre
unstable 版を使うための設定
設定していくのは configuration.nix
です。
まず、Nix の組込み関数の fetchTarball で unstable 版のパッケージ情報が格納された https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz
ファイルをダウンロードして展開し、パスを unstable-tarball
変数に代入します。
そして、組込み関数の import 関数で unstable-tarball
変数のパス情報から Nix 式(パッケージ情報)をインポートします。このとき、import
の2番目の引数に config = config.nixpkgs.config
を指定することで、安定版と同じ設定を組み込んでいます。
1# configuration.nix
2
3{ config, lib, pkgs, ... }:
4let
5 # その他の設定
6 unstable-tarball = builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz";
7 unstable = import unstable-tarball {
8 config = config.nixpkgs.config;
9 };
10in
それから、システム全体の環境情報が格納されている /run/current-system/sw
に表示するアプリを指定する environment.systemPackages に unstable 版の Neovim を追加します。/run/current-system/sw/
に追加することで、全てのユーザーが使えるようになります。
1# configuration.nix
2
3{ config, lib, pkgs, ... }:
4let
5 # ...
6 # その他の設定
7 # ...
8 unstable-tarball = builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz";
9 unstable = import unstable-tarball {
10 config = config.nixpkgs.config;
11 };
12in
13 # ...
14 # その他の設定
15 # ...
16
17 programs = {
18 neovim = {
19 enable = true;
20 };
21 };
22 environment.systemPackages = with pkgs; [
23 vim
24 git
25 unstable.neovim
26 ];
ここまで設定できたら、sudo nixos-rebuild switch
を実行して設定を反映させます。実行後は nvim --version
を実行し、v0.11 がインストールされたか確認します。
1> nvim --version
2NVIM v0.11.0
3Build type: Release
4LuaJIT 2.1.1741730670
5Run "nvim -V1 -v" for more info
無事に v0.11 の Neovim をインストールできました。
nightly 版を使うための設定
unstable 版の Neovim は v0.11 ですが、Nix のコミュニティが管理している neovim-nightly-overlay を使うと v0.12 がインストールできます。
インストールするための設定については、上記のリンク先の with Flakes の方法と、Homebrew管理下のCLIをNixに移してみる Home Manager篇 の設定を踏まえて以下のとおり設定しました。
本来なら各設定について詳しく説明すべきなのですが、こちらについては各設定が「なぜそうするのか」という点がまだ理解できなかったので、上手くいった設定を紹介するにとどめています。
1# configuration.nix
2
3let
4 # nightly 版のインストールでは不要なのでコメントアウトする
5 #unstable-tarball = builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz";
6 #unstable = import unstable-tarball {
7 # config = config.nixpkgs.config;
8 #};
9in
10{
11 # ...
12 # その他の設定
13 # ...
14
15 programs = {
16 # home-manager で管理するのでコメントアウトする
17 # neovim = {
18 # enable = true;
19 # };
20 };
21
22 environment.systemPackages = with pkgs; [
23 vim
24 git
25 # unstable 版を使わないのでコメントアウトする
26 # unstable.neovim
27 ];
1# flake.nix
2{
3 inputs = {
4 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
5 home-manager.url = "github:nix-community/home-manager/";
6 home-manager.inputs.nixpkgs.follows = "nixpkgs";
7 # nightly 版を使うために URL を追加する
8 neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
9 };
10
11 # ...
12 # その他の設定
13 # ...
1# home.nix
2
3{ config, pkgs, inputs, ... }:
4{
5 home = rec {
6 username = "s-show";
7 homeDirectory = "/home/${username}";
8 stateVersion = "25.05";
9 };
10
11 # ...
12 # その他の設定
13 # ...
14
15 # nightly 版を使うために追加
16 nixpkgs = {
17 overlays = [
18 inputs.neovim-nightly-overlay.overlays.default
19 ];
20 };
21
22 # インストールするアプリに Neovim を追加
23 home.packages = with pkgs; [
24 neovim
25 ];
これで Neovim の nightly 版がインストールできると思います。
1> nvim --version
2NVIM v0.12.0-nightly+7692a62
3Build type: Release
4LuaJIT 2.1.1741730670
5Run "nvim -V1 -v" for more info
nix-community / NixOS-WSL の flake.nix で
inputs.nixpkgs.url
が"github:NixOS/nixpkgs/nixos-24.11"
となっています。 ↩︎nixpkgs の各バージョンでどのバージョンのアプリがインストールされるかは NixOS Search - Packages で確認できます。 ↩︎