summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/languages-frameworks/vim.section.md15
-rw-r--r--pkgs/applications/editors/neovim/qt.nix126
2 files changed, 84 insertions, 57 deletions
diff --git a/doc/languages-frameworks/vim.section.md b/doc/languages-frameworks/vim.section.md
index 6ed60028ae2..e4c486a0e52 100644
--- a/doc/languages-frameworks/vim.section.md
+++ b/doc/languages-frameworks/vim.section.md
@@ -46,6 +46,21 @@ neovim.override {
 }
 ```
 
+If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding neovim in an overlay
+or passing it an overridden neovimn:
+
+```
+neovim-qt.override {
+  neovim = neovim.override {
+    configure = {
+      customRC = ''
+        # your custom configuration
+      '';
+    };
+  };
+}
+```
+
 ## Managing plugins with Vim packages
 
 To store you plugins in Vim packages (the native vim plugin manager, see `:help packages`) the following example can be used:
diff --git a/pkgs/applications/editors/neovim/qt.nix b/pkgs/applications/editors/neovim/qt.nix
index 315a51256f2..d562557ae00 100644
--- a/pkgs/applications/editors/neovim/qt.nix
+++ b/pkgs/applications/editors/neovim/qt.nix
@@ -1,62 +1,74 @@
 { stdenv, fetchFromGitHub, cmake, doxygen, makeWrapper
 , msgpack, neovim, pythonPackages, qtbase }:
 
-stdenv.mkDerivation rec {
-  name = "neovim-qt-${version}";
-  version = "0.2.11";
-
-  src = fetchFromGitHub {
-    owner  = "equalsraf";
-    repo   = "neovim-qt";
-    rev    = "v${version}";
-    sha256 = "0pc1adxc89p2rdvb6nxyqr9sjzqz9zw2dg7a4ardxsl3a8jga1wh";
-  };
+let
+  unwrapped = stdenv.mkDerivation rec {
+    pname = "neovim-qt-unwrapped";
+    version = "0.2.11";
+
+    src = fetchFromGitHub {
+      owner  = "equalsraf";
+      repo   = "neovim-qt";
+      rev    = "v${version}";
+      sha256 = "0pc1adxc89p2rdvb6nxyqr9sjzqz9zw2dg7a4ardxsl3a8jga1wh";
+    };
+
+    cmakeFlags = [
+      "-DUSE_SYSTEM_MSGPACK=1"
+    ];
+
+    buildInputs = [
+      neovim.unwrapped # only used to generate help tags at build time
+      qtbase
+    ] ++ (with pythonPackages; [
+      jinja2 python msgpack
+    ]);
+
+    nativeBuildInputs = [ cmake doxygen makeWrapper ];
+
+    enableParallelBuilding = true;
+
+    preCheck = ''
+      # The GUI tests require a running X server, disable them
+      sed -i ../test/CMakeLists.txt \
+        -e '/^add_xtest_gui/d'
+    '';
 
-  cmakeFlags = [
-    "-DUSE_SYSTEM_MSGPACK=1"
-  ];
-
-  buildInputs = with pythonPackages; [
-    neovim qtbase msgpack
-  ] ++ (with pythonPackages; [
-    jinja2 msgpack python
-  ]);
-
-  nativeBuildInputs = [ cmake doxygen makeWrapper ];
-
-  enableParallelBuilding = true;
-
-  preConfigure = ''
-    # we rip out a number of tests that fail in the build env
-    # the GUI tests will never work but the others should - they did before neovim 0.2.0
-    # was released
-    sed -i test/CMakeLists.txt \
-      -e '/^add_xtest_gui/d' \
-      -e '/tst_neovimobject/d' \
-      -e '/tst_neovimconnector/d' \
-      -e '/tst_callallmethods/d' \
-      -e '/tst_encoding/d'
-  '';
-
-  doCheck = true;
-
-  postInstall = if stdenv.isDarwin then ''
-    mkdir -p $out/Applications
-    mv $out/bin/nvim-qt.app $out/Applications
-    rmdir $out/bin || :
-
-    wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \
-      --prefix PATH : "${neovim}/bin"
-  '' else ''
-    wrapProgram "$out/bin/nvim-qt" \
-      --prefix PATH : "${neovim}/bin"
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Neovim client library and GUI, in Qt5";
-    license     = licenses.isc;
-    maintainers = with maintainers; [ peterhoeg ];
-    inherit (neovim.meta) platforms;
-    inherit version;
+    doCheck = true;
+
+    meta = with stdenv.lib; {
+      description = "Neovim client library and GUI, in Qt5";
+      license     = licenses.isc;
+      maintainers = with maintainers; [ peterhoeg ];
+      inherit (neovim.meta) platforms;
+      inherit version;
+    };
   };
-}
+in
+  stdenv.mkDerivation {
+    pname = "neovim-qt";
+    version = unwrapped.version;
+    buildCommand = if stdenv.isDarwin then ''
+      mkdir -p $out/Applications
+      cp -r ${unwrapped}/bin/nvim-qt.app $out/Applications
+
+      chmod -R a+w "$out/Applications/nvim-qt.app/Contents/MacOS"
+      wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \
+        --prefix PATH : "${neovim}/bin"
+    '' else ''
+      makeWrapper '${unwrapped}/bin/nvim-qt' "$out/bin/nvim-qt" \
+        --prefix PATH : "${neovim}/bin"
+    '';
+
+    preferLocalBuild = true;
+
+    nativeBuildInputs = [
+      makeWrapper
+    ];
+
+    passthru = {
+      inherit unwrapped;
+    };
+
+    inherit (unwrapped) meta;
+  }