🐣
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