Nix:用 Ruby 编译 Vim

Nix: Compile Vim with Ruby

我在 OS X 上使用 Nix 包管理器。假设为了论证,我有一个 config.nix 文件,它使用这样的模式,允许我安装 vimEnv没问题。

# ~/.nixpkgs/config.nix

{ pkgs }: {

  # Looking around I have seen overrides something along these lines...

  # nixpkgs.config.packageOverrides = pkgs: rec {
  #   vim = pkgs.vim_configurable.override {
  #     ruby = true;
  #    };
  #  };

  packageOverrides = super: let pkgs = super.pkgs; in with pkgs; rec {

    myEnv = pkgs.buildEnv {
      name = "myEnv";
      paths = [
        # ...snip
        vim
        # ...snip
      ];
    };

  };
}

我知道有详细的选项可用于使用 Nix 维护 .vimrc 和 vim 插件,并通过覆盖 vim_configurable 选项等 (for example),如果能在某个时候抽出时间做这件事就好了。然而,我现在想做的就是通过 Nix 安装一个 Vim 版本,它编译时支持 Ruby。

在我的 config.nix 中实现此目标的最简单或最简洁的方法是什么?

您可以尝试自己编译vim。为了以这种方式获得 ruby 支持,您所要做的就是在 运行 ./configure

时添加 --rubyinterp 标志

而且,经过一些黑客攻击,这是我找到的最简单的解决方案:

# ~/.nixpkgs/config.nix

{ pkgs }: {

  packageOverrides = super: let pkgs = super.pkgs; in with pkgs; rec {

    myVim = pkgs.vim_configurable.override {
      config.vim = {
        ruby = true;
      };
      ruby = ruby;
    };

    myEnv = pkgs.buildEnv {
      name = "myEnv";
      paths = [
        myVim
      ];
    };

  };
}

并使用 nix-env -i myEnv 安装它。