From f43446c9ca382e8d50901b409080171a2087f630 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 22 May 2018 14:07:41 +0200 Subject: [PATCH] vim_configurable: restore ability to override python for modules It seems as Python will be fetched from $PATH in Vim 8.1: ``` stat("/home/ma27/bin/python", 0x7ffe57a317b0) = -1 ENOENT (No such file or directory) stat("/run/wrappers/bin/python", 0x7ffe57a317b0) = -1 ENOENT (No such file or directory) stat("/home/ma27/.nix-profile/bin/python", 0x7ffe57a317b0) = -1 ENOENT (No such file or directory) stat("/nix/var/nix/profiles/default/bin/python", 0x7ffe57a317b0) = -1 ENOENT (No such file or directory) stat("/run/current-system/sw/bin/python", {st_mode=S_IFREG|0555, st_size=291, ...}) = 0 readlink("/run/current-system/sw/bin/python", "/nix/store/ggjkqbvwnv7dflkmdgmmp"..., 4096) = 72 ``` This breaks in cases where you want to use a modified Python derivation for the VIM plugins you use in `vim_configurable`: ``` let vim_configurable' = vim_configurable.override { # python with modules for ensime python = python.withPackages (ps: with ps; [ sexpdata websocket_client ]); }; in vim_configurable'.customize { # ... } ``` With VIM 8.0 this worked perfectly fine, now it's necessary to install the modified `python` in $PATH to actually use it, otherwise an error like this arises: ``` [ensime] A dependency is missing, please `pip2 install sexpdata websocket-client` and restart Vim. Press ENTER or type command to continue ``` However it should be possible to pass the modified Python to the modules, the easiest workaround is to write a wrapper which prefixes $PATH to have the Python derivation available. --- pkgs/applications/editors/vim/configurable.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/applications/editors/vim/configurable.nix b/pkgs/applications/editors/vim/configurable.nix index 9ffa31f2f2e..ad04cab62f5 100644 --- a/pkgs/applications/editors/vim/configurable.nix +++ b/pkgs/applications/editors/vim/configurable.nix @@ -5,10 +5,13 @@ args@{ source ? "default", callPackage, fetchurl, stdenv, ncurses, pkgconfig, ge , libX11, libXext, libSM, libXpm, libXt, libXaw, libXau, libXmu , libICE , vimPlugins +, makeWrapper # apple frameworks , CoreServices, CoreData, Cocoa, Foundation, libobjc, cf-private +, wrapPythonDrv ? false + , ... }: with args; @@ -106,6 +109,11 @@ composableDerivation { feat = "python${if python ? isPy3 then "3" else ""}interp"; enable = { buildInputs = [ python ]; + } // lib.optionalAttrs wrapPythonDrv { + nativeBuildInputs = [ makeWrapper ]; + postInstall = '' + wrapProgram "$out/bin/vim" --prefix PATH : "${python}/bin" + ''; } // lib.optionalAttrs stdenv.isDarwin { configureFlags = [ "--enable-python${if python ? isPy3 then "3" else ""}interp=yes"