🐣
NixでVimの最新版を使うOverlayを書いた
最近は純粋関数型パッケージマネージャのNixが流行りで激アツです。
筆者も開発用設定の諸々をNixへ移行しようと考えています。
ところで、nixpkgsで公開されているパッケージはバージョンが最新でないことがあります。
具体的には、Vimは最新版より少し古いものが提供されています。
過去の記事では、GitHubから最新のVimを取り込み、自前でビルドする方法を紹介しました。
とはいえビルド設定をいちいち記述するのは煩雑でした。
今回、これをoverlayとして公開したので紹介します。
使い方
nixpkgsのoverlayに上記のvim-overlayを適用してください。
簡単に試したい場合、gitリポジトリを作成し、flake.nixを用意します。
.
├─ .git/
└─ flake.nix
flake.nixの中身はこんな感じです。
flake.nix
{
description = "Minimal package definition to use vim-overlay";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
vim-overlay.url = "github:kawarimidoll/vim-overlay";
};
outputs = {
self,
nixpkgs,
vim-overlay,
}: let
system = "aarch64-darwin";
pkgs = import nixpkgs {
inherit system;
overlays = [vim-overlay.overlays.default];
};
in {
packages.${system}.default = nixpkgs.legacyPackages.${system}.buildEnv {
name = "my-packages";
paths = with pkgs; [
vim
];
};
};
}
nix buildを実行するとresultというディレクトリができます。そこに最新版のVimが入っています。
$ nix build
$ ./result/bin/vim --version
設定
vim-overlay.overlays.defaultの代わりにvim-overlay.overlays.featuresを使うとビルド時の設定ができます。
以下のようにoverlaysに反映させるときに引数を渡します。
pkgs = import nixpkgs {
inherit system;
overlays = [
(vim-overlay.overlays.features {
compiledby = "nix-vim";
lua = true;
ruby = true;
})
];
};
以下の引数を設定できます。必要な機能に応じてフラグを追加してください。
| キー名 | デフォルト値 | 説明 |
|---|---|---|
| compiledby | "vim-overlay" |
vim --versionで表示されるCompiled byの値 |
| cscope | false |
+cscope サポート |
| lua | false |
+lua サポート |
| python3 | false |
+python3 サポート |
| ruby | false |
+ruby サポート |
| sodium | false |
+sodium サポート |
Discussion