mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-02 07:31:26 +00:00
vim_configurable: enable overrides
Sometimes it's needed to override parts of `vim_configurable`, for instance when using ENSIME (http://ensime.github.io/), in this case you need a Python interpreter and the modules `sexpdata` and `websocket_client`. However overriding `vim_configurable` is quite hard as we run `vimUtils.makeCustomizable` over the default comming from `configurable.nix`. Therefore it's necessary to copy the code from `all-packages.nix` and alter the parts you need: https://nixos.org/nix-dev/2017-April/023364.html In order to simplify overriding `vim_configurable` I added an `override` and an `overrideAttrs` function to `vimutils.makeCustomizable` to ensure that the customization capabilities won't be lost after altering the derivation. Now it's possible to write expressions like this without evaluation failures: ``` with pkgs; let vimPy3 = vim_configurable.override { python = python3; }; in vimPy3.customize { ... } ```
This commit is contained in:
parent
5e8ae8d597
commit
8e70725077
@ -325,11 +325,14 @@ rec {
|
||||
|
||||
# add a customize option to a vim derivation
|
||||
makeCustomizable = vim: vim // {
|
||||
customize = {name, vimrcConfig}: vimWithRC {
|
||||
customize = { name, vimrcConfig }: vimWithRC {
|
||||
vimExecutable = "${vim}/bin/vim";
|
||||
inherit name;
|
||||
vimrcFile = vimrcFile vimrcConfig;
|
||||
};
|
||||
|
||||
override = f: makeCustomizable (vim.override f);
|
||||
overrideAttrs = f: makeCustomizable (vim.overrideAttrs f);
|
||||
};
|
||||
|
||||
pluginnames2Nix = {name, namefiles} : vim_configurable.customize {
|
||||
|
Loading…
Reference in New Issue
Block a user