diff --git a/pkgs/applications/editors/neovim/default.nix b/pkgs/applications/editors/neovim/default.nix new file mode 100644 index 000000000000..1c1c050b0000 --- /dev/null +++ b/pkgs/applications/editors/neovim/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchgit, fetchurl, unzip, callPackage, ncurses, gettext, pkgconfig, +cmake, pkgs, lpeg, lua, luajit, luaMessagePack, luabitop }: + +stdenv.mkDerivation rec { + name = "neovim-nightly"; + + version = "nightly"; + + src = fetchgit { + url = "https://github.com/neovim/neovim"; + rev = "68fcd8b696dae33897303c9f8265629a31afbf17"; + sha256 = "0hxkcy641jpn4qka44gfvhmb6q3dkjx6lvn9748lcl2gx2d36w4i"; + }; + + libmsgpack = stdenv.mkDerivation rec { + version = "0.5.9"; + name = "libmsgpack-${version}"; + + src = fetchgit { + rev = "ecf4b09acd29746829b6a02939db91dfdec635b4"; + url = "https://github.com/msgpack/msgpack-c"; + sha256 = "076ygqgxrc3vk2l20l8x2cgcv05py3am6mjjkknr418pf8yav2ww"; + }; + + buildInputs = [ cmake ]; + + meta = with stdenv.lib; { + description = "MessagePack implementation for C and C++"; + homepage = http://msgpack.org; + maintainers = [ maintainers.manveru ]; + license = licenses.asl20; + platforms = platforms.all; + }; + }; + + enableParallelBuilding = true; + + buildInputs = [ + ncurses + pkgconfig + cmake + pkgs.libuvVersions.v0_11_29 + luajit + lua + lpeg + luaMessagePack + luabitop + libmsgpack + ]; + nativeBuildInputs = [ gettext ]; + + LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;${luabitop}/lib/lua/5.2/?.so"; + LUA_PATH="${luaMessagePack}/share/lua/5.1/?.lua"; + cmakeFlags = [ + "-DUSE_BUNDLED_MSGPACK=ON" + ]; + + meta = with stdenv.lib; { + description = "Aggressive refactor of Vim"; + homepage = http://www.neovim.org; + maintainers = with maintainers; [ manveru ]; + platforms = platforms.unix; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 128badfa52b2..ec9f94091459 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10956,6 +10956,10 @@ let vimpc = callPackage ../applications/audio/vimpc { }; + neovim = callPackage ../applications/editors/neovim { + inherit (lua52Packages) lpeg luaMessagePack luabitop; + }; + virtviewer = callPackage ../applications/virtualization/virt-viewer { gtkvnc = gtkvnc.override { enableGTK3 = true; }; spice_gtk = spice_gtk.override { enableGTK3 = true; }; diff --git a/pkgs/top-level/lua-packages.nix b/pkgs/top-level/lua-packages.nix index 19cb2b6e24f0..245483e76b38 100644 --- a/pkgs/top-level/lua-packages.nix +++ b/pkgs/top-level/lua-packages.nix @@ -218,4 +218,41 @@ let }; }; + lpeg = buildLuaPackage rec { + name = "lpeg-${version}"; + version = "0.12"; + src = fetchurl { + url = "http://www.inf.puc-rio.br/~roberto/lpeg/${name}.tar.gz"; + sha256 = "0xlbfw1w7l65a5qhnx5sfw327hkq1zcj8xmg4glfw6fj9ha4b9gg"; + }; + buildInputs = [ unzip ]; + + installPhase = '' + mkdir -p $out/lib/lua/${lua.luaversion} + install -p lpeg.so $out/lib/lua/${lua.luaversion} + install -p re.lua $out/lib/lua/${lua.luaversion} + ''; + + meta = { + homepage = "http://www.inf.puc-rio.br/~roberto/lpeg/"; + hydraPlatforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.mit; + }; + }; + + luaMessagePack = buildLuaPackage rec { + name = "lua-MessagePack-${version}"; + version = "0.3.1"; + src = fetchurl { + url = "https://github.com/fperrad/lua-MessagePack/archive/${version}.tar.gz"; + sha256 = "185mrd6bagwwm94jxzanq01l72ama3x4hf160a7yw7hgim2y5h9c"; + }; + buildInputs = [ unzip ]; + + meta = { + homepage = "http://fperrad.github.io/lua-MessagePack/index.html"; + hydraPlatforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.mit; + }; + }; }; in self