summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-01-19 09:55:31 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-01-19 09:55:31 +0100
commit716aac2519a7571e7f5fd984a886d579a4a051c5 (patch)
tree53cf89cf764d787f4dc8f08474479892b9733177 /pkgs/misc
parentf8472457a440de3c44f6f604142d678b6ae2a762 (diff)
parent53b389327e34de319dc0dbda2b6bcab1a69db69d (diff)
downloadnixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.gz
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.bz2
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.lz
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.xz
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.zst
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.zip
Merge branch 'staging' into closure-size
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/cups/cups-pk-helper.nix21
-rw-r--r--pkgs/misc/cups/default.nix15
-rw-r--r--pkgs/misc/cups/drivers/cups-bjnp/default.nix6
-rw-r--r--pkgs/misc/drivers/hplip/3.15.9.nix4
-rw-r--r--pkgs/misc/drivers/hplip/default.nix4
-rw-r--r--pkgs/misc/emulators/VisualBoyAdvance/default.nix24
-rw-r--r--pkgs/misc/emulators/VisualBoyAdvance/fix.diff31
-rw-r--r--pkgs/misc/emulators/VisualBoyAdvance/libpng15.patch13
-rw-r--r--pkgs/misc/emulators/vice/default.nix20
-rw-r--r--pkgs/misc/emulators/wine/base.nix5
-rw-r--r--pkgs/misc/emulators/wine/default.nix2
-rw-r--r--pkgs/misc/emulators/wine/packages.nix4
-rw-r--r--pkgs/misc/emulators/wine/staging.nix2
-rw-r--r--pkgs/misc/emulators/wine/versions.nix5
-rw-r--r--pkgs/misc/ghostscript/default.nix4
-rw-r--r--pkgs/misc/screensavers/alock/default.nix5
-rw-r--r--pkgs/misc/themes/albatross/default.nix17
-rw-r--r--pkgs/misc/vim-plugins/default.nix266
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names1
-rw-r--r--pkgs/misc/vim-plugins/vim-utils.nix4
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/README.txt3
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/command-t7
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/matchit.zip7
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/racer4
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/taglist6
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-addon-manager1
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-hier1
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-wakatime1
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xdebug1
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xkbswitch5
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimproc.vim9
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimshell.vim1
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme26
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/addon-info.json1
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/autoload/nix.vim307
35 files changed, 590 insertions, 243 deletions
diff --git a/pkgs/misc/cups/cups-pk-helper.nix b/pkgs/misc/cups/cups-pk-helper.nix
new file mode 100644
index 000000000000..b3d289df551c
--- /dev/null
+++ b/pkgs/misc/cups/cups-pk-helper.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, intltool, pkgconfig, glib, polkit, cups }:
+
+stdenv.mkDerivation rec {
+  version = "0.2.5";
+  name = "cups-pk-helper-${version}";
+
+  src = fetchurl {
+    url = "http://www.freedesktop.org/software/cups-pk-helper/releases/cups-pk-helper-${version}.tar.xz";
+    sha256 = "0651ij5p5s0n3xxbaqsy72s22nx9hfkrjgvg766lkqd1cpniw8hr";
+  };
+
+  buildInputs = [ intltool pkgconfig glib polkit cups ];
+
+  meta = with stdenv.lib; {
+    description = "PolicyKit helper to configure cups with fine-grained privileges";
+    homepage = http://www.freedesktop.org/wiki/Software/cups-pk-helper/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix
index fba194aa1527..a63db5441184 100644
--- a/pkgs/misc/cups/default.nix
+++ b/pkgs/misc/cups/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, zlib, libjpeg, libpng, libtiff, pam
-, dbus, acl, gmp
+, dbus, acl, gmp, darwin
 , libusb ? null, gnutls ? null, avahi ? null, libpaper ? null
 }:
 
@@ -19,8 +19,11 @@ stdenv.mkDerivation {
   # FIXME: the cups libraries contains some $out/share strings so can't be split.
   outputs = [ "dev" "out" "doc" "man" ]; # TODO: above
 
-  buildInputs = [ pkgconfig zlib libjpeg libpng libtiff libusb gnutls avahi libpaper ]
-    ++ optionals stdenv.isLinux [ pam dbus acl ];
+  buildInputs = [ pkgconfig zlib libjpeg libpng libtiff libusb gnutls libpaper ]
+    ++ optionals stdenv.isLinux [ avahi pam dbus acl ]
+    ++ optionals stdenv.isDarwin (with darwin; [
+      configd apple_sdk.frameworks.ApplicationServices
+    ]);
 
   propagatedBuildInputs = [ gmp ];
 
@@ -36,7 +39,11 @@ stdenv.mkDerivation {
   ] ++ optional (libusb != null) "--enable-libusb"
     ++ optional (gnutls != null) "--enable-ssl"
     ++ optional (avahi != null) "--enable-avahi"
-    ++ optional (libpaper != null) "--enable-libpaper";
+    ++ optional (libpaper != null) "--enable-libpaper"
+    ++ optionals stdenv.isDarwin [
+    "--with-bundledir=$out"
+    "--disable-launchd"
+  ];
 
   installFlags =
     [ # Don't try to write in /var at build time.
diff --git a/pkgs/misc/cups/drivers/cups-bjnp/default.nix b/pkgs/misc/cups/drivers/cups-bjnp/default.nix
index aa75012a8bc9..60d15ec1282a 100644
--- a/pkgs/misc/cups/drivers/cups-bjnp/default.nix
+++ b/pkgs/misc/cups/drivers/cups-bjnp/default.nix
@@ -14,6 +14,12 @@ stdenv.mkDerivation rec {
   NIX_CFLAGS_COMPILE = "-include stdio.h";
 
   meta = {
+    description = "CUPS back-end for Canon printers";
+    longDescription = ''
+      CUPS back-end for the canon printers using the proprietary USB over IP
+      BJNP protocol. This back-end allows Cups to print over the network to a
+      Canon printer. The design is based on reverse engineering of the protocol.
+    '';
     homepage = http://cups-bjnp.sourceforge.net;
   };
 }
diff --git a/pkgs/misc/drivers/hplip/3.15.9.nix b/pkgs/misc/drivers/hplip/3.15.9.nix
index 04ebb7a55ee9..722615be46e7 100644
--- a/pkgs/misc/drivers/hplip/3.15.9.nix
+++ b/pkgs/misc/drivers/hplip/3.15.9.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, substituteAll
 , pkgconfig
-, cups, zlib, libjpeg, libusb1, pythonPackages, saneBackends, dbus, usbutils
+, cups, zlib, libjpeg, libusb1, pythonPackages, sane-backends, dbus, usbutils
 , net_snmp, polkit
 , qtSupport ? true, qt4, pyqt4
 , withPlugin ? false
@@ -56,7 +56,7 @@ stdenv.mkDerivation {
     libusb1
     pythonPackages.python
     pythonPackages.wrapPython
-    saneBackends
+    sane-backends
     dbus
     net_snmp
   ] ++ stdenv.lib.optionals qtSupport [
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix
index 8b3676663d34..071ffe8c1001 100644
--- a/pkgs/misc/drivers/hplip/default.nix
+++ b/pkgs/misc/drivers/hplip/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, substituteAll
 , pkgconfig
-, cups, zlib, libjpeg, libusb1, pythonPackages, saneBackends, dbus, usbutils
+, cups, zlib, libjpeg, libusb1, pythonPackages, sane-backends, dbus, usbutils
 , net_snmp, polkit
 , qtSupport ? true, qt4, pyqt4
 , withPlugin ? false
@@ -56,7 +56,7 @@ stdenv.mkDerivation {
     libusb1
     pythonPackages.python
     pythonPackages.wrapPython
-    saneBackends
+    sane-backends
     dbus
     net_snmp
   ] ++ stdenv.lib.optionals qtSupport [
diff --git a/pkgs/misc/emulators/VisualBoyAdvance/default.nix b/pkgs/misc/emulators/VisualBoyAdvance/default.nix
deleted file mode 100644
index 015c61e461e6..000000000000
--- a/pkgs/misc/emulators/VisualBoyAdvance/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{stdenv, fetchurl, zlib, libpng, SDL, nasm}:
-
-stdenv.mkDerivation {
-  name = "VisualBoyAdvance-1.7.2";
-  src = fetchurl {
-    url = mirror://sourceforge/vba/VisualBoyAdvance-src-1.7.2.tar.gz;
-    sha256 = "1dr9w5i296dyq2gbx7sijk6p375aqnwld2n6rwnbzm2g3a94y4gl";
-  };
-  patches = [ ./libpng15.patch ./fix.diff ]; # patch to shut up lost of precision errors
-  preConfigure = ''
-    # Fix errors with invalid conversion from 'const char*' to 'char*'
-    sed -i -e "s|char \* p = strrchr|const char * p = strrchr|g" src/GBA.cpp
-    sed -i -e "s|char \* p = strrchr|const char * p = strrchr|g" src/Util.cpp
-  '';
-  buildInputs = [ zlib libpng SDL ] ++ stdenv.lib.optional (stdenv.system == "i686-linux") nasm;
-
-  meta = {
-    description = "A Game Boy/Game Boy Color/Game Boy Advance Emulator";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = [ stdenv.lib.maintainers.sander ];
-    homepage = http://vba.ngemu.com;
-    broken = true;
-  };
-}
diff --git a/pkgs/misc/emulators/VisualBoyAdvance/fix.diff b/pkgs/misc/emulators/VisualBoyAdvance/fix.diff
deleted file mode 100644
index 646db9c45e66..000000000000
--- a/pkgs/misc/emulators/VisualBoyAdvance/fix.diff
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -urN ../tmp-orig/visualboyadvance-1.7.2/src/sdl/debugger.cpp 
-./src/sdl/debugger.cpp
---- ../tmp-orig/visualboyadvance-1.7.2/src/sdl/debugger.cpp     2004-05-13 
-16:13:14.000000000 +0200
-+++ ./src/sdl/debugger.cpp      2005-03-21 21:57:06.000000000 +0100
-@@ -950,9 +950,9 @@
- {
-   u32 address = 0;
-   if(mem >= (u32*)&workRAM[0] && mem <= (u32*)&workRAM[0x3ffff])
--    address = 0x2000000 + ((u32)mem - (u32)&workRAM[0]);
-+    address = 0x2000000 + ((unsigned long)mem - (unsigned long)&workRAM[0]);
-   else
--    address = 0x3000000 + ((u32)mem - (u32)&internalRAM[0]);
-+    address = 0x3000000 + ((unsigned long)mem - (unsigned long)&internalRAM[0]);
- 
-   if(size == 2)
-     printf("Breakpoint (on write) address %08x old:%08x new:%08x\n", 
-diff -urN ../tmp-orig/visualboyadvance-1.7.2/src/prof/prof.cpp 
-./src/prof/prof.cpp
---- ../tmp-orig/visualboyadvance-1.7.2/src/prof/prof.cpp        2004-05-13 
-16:31:58.000000000 +0200
-+++ ./src/prof/prof.cpp 2005-03-21 21:56:27.000000000 +0100
-@@ -266,7 +266,7 @@
-     for (toindex=froms[fromindex]; toindex!=0; toindex=tos[toindex].link) {
-       if(profWrite8(fd, GMON_TAG_CG_ARC) ||
-          profWrite32(fd, (u32)frompc) ||
--         profWrite32(fd, (u32)tos[toindex].selfpc) ||
-+         profWrite32(fd, (unsigned long)tos[toindex].selfpc) ||
-          profWrite32(fd, tos[toindex].count)) {
-         systemMessage(0, "mcount: arc");
-         fclose(fd);
diff --git a/pkgs/misc/emulators/VisualBoyAdvance/libpng15.patch b/pkgs/misc/emulators/VisualBoyAdvance/libpng15.patch
deleted file mode 100644
index b6f8872ce2bb..000000000000
--- a/pkgs/misc/emulators/VisualBoyAdvance/libpng15.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-From Gentoo. Fixes compilation with libpng-1.5
-
---- a/src/Util.cpp
-+++ b/src/Util.cpp
-@@ -79,7 +79,7 @@
-     return false;
-   }
- 
--  if(setjmp(png_ptr->jmpbuf)) {
-+  if(setjmp(png_jmpbuf(png_ptr))) {
-     png_destroy_write_struct(&png_ptr,NULL);
-     fclose(fp);
-     return false;
diff --git a/pkgs/misc/emulators/vice/default.nix b/pkgs/misc/emulators/vice/default.nix
index b869143ff1cc..143c23ee86c4 100644
--- a/pkgs/misc/emulators/vice/default.nix
+++ b/pkgs/misc/emulators/vice/default.nix
@@ -1,17 +1,19 @@
-{ stdenv, fetchurl, perl, gettext, libpng, giflib, libjpeg, alsaLib, readline, mesa, libX11
-, pkgconfig, gtk, SDL, autoconf, automake, makeDesktopItem
+{ stdenv, fetchurl, perl, libpng, giflib, libjpeg, alsaLib, readline, mesa, libX11
+, pkgconfig, gtk, SDL, autoreconfHook, makeDesktopItem
 }:
 
 stdenv.mkDerivation rec {
   name = "vice-2.2";
+
   src = fetchurl {
     url = http://www.zimmers.net/anonftp/pub/cbm/crossplatform/emulators/VICE/vice-2.2.tar.gz;
     sha256 = "0l8mp9ybx494fdqgr1ps4x3c3qzms4yyg4hzcn3ihzy92zw1nn2x";
   };
-  buildInputs = [ perl gettext libpng giflib libjpeg alsaLib readline mesa
-                  pkgconfig gtk SDL autoconf automake ];
+
+  buildInputs = [ perl libpng giflib libjpeg alsaLib readline mesa
+                  pkgconfig gtk SDL autoreconfHook ];
   configureFlags = "--with-sdl --enable-fullscreen --enable-gnomeui";
-  
+
   desktopItem = makeDesktopItem {
     name = "vice";
     exec = "x64";
@@ -23,18 +25,16 @@ stdenv.mkDerivation rec {
 
   patchPhase = ''
     # Disable font-cache update
-    
     sed -i -e "s|install: install-data-am|install-no: install-data-am|" data/fonts/Makefile.am
-    autoreconf -f -i
   '';
-  
+
   NIX_LDFLAGS = "-lX11 -L${libX11}/lib";
-  
+
   postInstall = ''
     mkdir -p $out/share/applications
     cp ${desktopItem}/share/applications/* $out/share/applications
   '';
-  
+
   meta = {
     description = "Commodore 64, 128 and other emulators";
     homepage = http://www.viceteam.org;
diff --git a/pkgs/misc/emulators/wine/base.nix b/pkgs/misc/emulators/wine/base.nix
index 1e2d656fb0ef..e031627a032d 100644
--- a/pkgs/misc/emulators/wine/base.nix
+++ b/pkgs/misc/emulators/wine/base.nix
@@ -1,5 +1,6 @@
 { stdenv, lib, pkgArches,
   name, version, src, monos, geckos, platforms,
+  pulseaudioSupport,
   buildScript ? null, configureFlags ? ""
 }:
 
@@ -19,7 +20,9 @@ stdenv.mkDerivation ((lib.optionalAttrs (! isNull buildScript) {
 
   nativeBuildInputs = toBuildInputs pkgArches (pkgs: (with pkgs; [
     freetype fontconfig mesa mesa_noglu.osmesa libdrm libpng libjpeg openssl gnutls cups ncurses
-  ]) ++ (with pkgs.xorg; [
+  ])
+  ++ lib.optional pulseaudioSupport pkgs.libpulseaudio
+  ++ (with pkgs.xorg; [
     xlibsWrapper libXi libXcursor libXinerama libXrandr libXrender libXxf86vm libXcomposite
   ]));
 
diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix
index 5261f79de107..a402fba69f67 100644
--- a/pkgs/misc/emulators/wine/default.nix
+++ b/pkgs/misc/emulators/wine/default.nix
@@ -9,11 +9,13 @@
 { lib, pkgs, system, callPackage,
   wineRelease ? "stable",
   wineBuild ? (if system == "x86_64-linux" then "wineWow" else "wine32"),
+  pulseaudioSupport ? false,
   libtxc_dxtn_Name ? "libtxc_dxtn_s2tc" }:
 
 let wine-build = build: release:
       lib.getAttr build (callPackage ./packages.nix {
         wineRelease = release;
+        inherit pulseaudioSupport;
       });
 
 in if wineRelease == "staging" then
diff --git a/pkgs/misc/emulators/wine/packages.nix b/pkgs/misc/emulators/wine/packages.nix
index ce983b993144..1a7e32efcbe1 100644
--- a/pkgs/misc/emulators/wine/packages.nix
+++ b/pkgs/misc/emulators/wine/packages.nix
@@ -1,4 +1,5 @@
 { system, stdenv, stdenv_32bit, lib, pkgs, pkgsi686Linux, fetchurl,
+  pulseaudioSupport,
   wineRelease ? "stable"
 }:
 
@@ -30,6 +31,7 @@ in {
     name = "wine-${version}";
     inherit (sources) version src;
     inherit (pkgsi686Linux) lib stdenv;
+    inherit pulseaudioSupport;
     pkgArches = [ pkgsi686Linux ];
     geckos = with sources; [ wineGecko32 ];
     monos = with sources; [ wineMono ];
@@ -39,6 +41,7 @@ in {
     name = "wine64-${version}";
     inherit (sources) version src;
     inherit lib stdenv;
+    inherit pulseaudioSupport;
     pkgArches = [ pkgs ];
     geckos = with sources; [ wineGecko64 ];
     monos = with sources; [ wineMono ];
@@ -50,6 +53,7 @@ in {
     inherit (sources) version src;
     inherit lib;
     stdenv = stdenv_32bit;
+    inherit pulseaudioSupport;
     pkgArches = [ pkgs pkgsi686Linux ];
     geckos = with sources; [ wineGecko32 wineGecko64 ];
     monos = with sources; [ wineMono ];
diff --git a/pkgs/misc/emulators/wine/staging.nix b/pkgs/misc/emulators/wine/staging.nix
index 93e2e6fd1800..da4456c0ef98 100644
--- a/pkgs/misc/emulators/wine/staging.nix
+++ b/pkgs/misc/emulators/wine/staging.nix
@@ -15,7 +15,7 @@ let v = (import ./versions.nix).staging;
 in assert (builtins.parseDrvName wineUnstable.name).version == version;
 
 stdenv.lib.overrideDerivation wineUnstable (self: {
-  nativeBuildInputs = build-inputs [ "libpulseaudio" libtxc_dxtn_Name ] self.nativeBuildInputs; 
+  nativeBuildInputs = build-inputs [ libtxc_dxtn_Name ] self.nativeBuildInputs; 
   buildInputs = build-inputs [ "perl" "utillinux" "autoconf" ] self.buildInputs;
 
   name = "${self.name}-staging";
diff --git a/pkgs/misc/emulators/wine/versions.nix b/pkgs/misc/emulators/wine/versions.nix
index 057f5214aa2e..7858a655b4e0 100644
--- a/pkgs/misc/emulators/wine/versions.nix
+++ b/pkgs/misc/emulators/wine/versions.nix
@@ -12,15 +12,16 @@ rec {
     monoSha256 = "09dwfccvfdp3walxzp6qvnyxdj2bbyw9wlh6cxw2sx43gxriys5c";
   };
   unstable = {
+    wineVersion = "1.9.0";
+    wineSha256 = "1yfmcckb8biyp1d4czjxlfd10537dpi636g3zsj1cxp7jyn228mp";
     inherit (stable)
-      wineVersion wineSha256
       geckoVersion geckoSha256
       gecko64Version gecko64Sha256
       monoVersion monoSha256;
   };
   staging = {
     version = unstable.wineVersion;
-    sha256 = "1mi2nk5cjgfrkv8g082d4klniz1dprmvvida8c30qf2j4jykn3vb";
+    sha256 = "1frp7zrgvx24m6yqmpvsz99rn18jjgg1bxl5qgcsf3kiych4i8r1";
   };
   winetricks = {
     version = "20151116";
diff --git a/pkgs/misc/ghostscript/default.nix b/pkgs/misc/ghostscript/default.nix
index 9f930900c410..53b5caf93122 100644
--- a/pkgs/misc/ghostscript/default.nix
+++ b/pkgs/misc/ghostscript/default.nix
@@ -93,6 +93,10 @@ stdenv.mkDerivation rec {
     ln -s "${fonts}" "$out/share/ghostscript/fonts"
   '';
 
+  preFixup = stdenv.lib.strings.optionalString stdenv.isDarwin ''
+    install_name_tool -change libgs.dylib.${version} $out/lib/libgs.dylib.${version} $out/bin/gs
+  '';
+
   meta = {
     homepage = "http://www.ghostscript.com/";
     description = "PostScript interpreter (mainline version)";
diff --git a/pkgs/misc/screensavers/alock/default.nix b/pkgs/misc/screensavers/alock/default.nix
index 9083a90f6f51..51674f5dd86c 100644
--- a/pkgs/misc/screensavers/alock/default.nix
+++ b/pkgs/misc/screensavers/alock/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, pkgconfig, autoconf, automake
+{ stdenv, fetchgit, pkgconfig, autoreconfHook
 , libX11, pam, libgcrypt, libXrender, imlib2 }:
 
 stdenv.mkDerivation rec {
@@ -11,7 +11,6 @@ stdenv.mkDerivation rec {
     sha256 = "c1f00bf90c966b2b76e00061cc4b54a3c0bc6547e788731ab694b43f55a216ab";
   };
 
-  preConfigure = "autoreconf -fvi";
   configureFlags = [
     "--enable-pam"
     "--enable-hash"
@@ -19,7 +18,7 @@ stdenv.mkDerivation rec {
     "--enable-imlib2"
   ];
   buildInputs = [
-    pkgconfig autoconf automake libX11
+    pkgconfig autoreconfHook libX11
     pam libgcrypt libXrender imlib2
   ];
 
diff --git a/pkgs/misc/themes/albatross/default.nix b/pkgs/misc/themes/albatross/default.nix
index 01b9d59aa7be..969f21d6ec12 100644
--- a/pkgs/misc/themes/albatross/default.nix
+++ b/pkgs/misc/themes/albatross/default.nix
@@ -1,13 +1,14 @@
-{stdenv, fetchgit}:
+{ stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   name = "Albatross-${version}";
-  version = "1.7.3";
+  version = "1.7.4";
 
-  src = fetchgit {
-    url = git://github.com/shimmerproject/Albatross.git;
-    rev = "refs/tags/v${version}";
-    sha256 = "7a585068dd59f753149c0d390f2ef541f2ace67e7d681613588edb9f962e3196";
+  src = fetchFromGitHub {
+    repo = "Albatross";
+    owner = "shimmerproject";
+    rev = "v${version}";
+    sha256 = "0mq87n2hxy44nzr567av24n5nqjaljhi1afxrn3mpjqdbkq7lx88";
   };
 
   dontBuild = true;
@@ -18,8 +19,8 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Albatross";
-    homepage = "http://shimmerproject.org/our-projects/albatross/";
+    description = "A desktop Suite for Xfce";
+    homepage = http://shimmerproject.org/our-projects/albatross/;
     license = stdenv.lib.licenses.gpl2;
   };
 }
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index 603e4db4ac6e..470c1960c7ca 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -1,7 +1,8 @@
 # TODO check that no license information gets lost
-{ fetchurl, bash, stdenv, python, cmake, vim, vimUtils, perl, ruby, unzip,
-  which, fetchgit, fetchFromGitHub, fetchhg, fetchzip, llvmPackages, zip,
-  vim_configurable, vimPlugins, xkb_switch, git
+{ fetchurl, bash, stdenv, python, go, cmake, vim, vimUtils, perl, ruby, unzip
+, which, fetchgit, fetchFromGitHub, fetchhg, fetchzip, llvmPackages, zip
+, vim_configurable, vimPlugins, xkb_switch, git
+, Cocoa
 }:
 
 let
@@ -13,8 +14,7 @@ in
 # TL;DR
 # Add your plugin to ./vim-plugin-names
 # Generate via `vim-plugin-names-to-nix`
-# If plugin is complicated then create a PR to
-# https://github.com/jagajaga/vim-addon-vim2nix/tree/master/additional-nix-code
+# If plugin is complicated then make changes to ./vim2nix/additional-nix-code
 
 # This attrs contains two sections:
 # The first contains plugins added manually, the second contains plugins
@@ -27,9 +27,18 @@ rec {
   # which recreates this the following derivations based on ./vim-plugin-names
   pluginnames2nix = vimUtils.pluginnames2Nix {
     name = "vim-plugin-names-to-nix";
-    namefiles = [./vim-plugin-names];  };
+    namefiles = [./vim-plugin-names];
+  };
 
   # Section I
+  vim-addon-vim2nix = vim2nix;
+
+  vim2nix = buildVimPluginFrom2Nix { # use it to update plugins
+    name = "vim2nix";
+    src = ./vim2nix;
+    dependencies = ["vim-addon-manager"];
+  };
+
 
   # Section II
   # Update with vimUtils.vimPlugins.pluginnames2Nix command
@@ -121,11 +130,11 @@ rec {
   };
 
   Hoogle = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "Hoogle-2015-11-27";
+    name = "Hoogle-2015-12-24";
     src = fetchgit {
       url = "git://github.com/Twinside/vim-hoogle";
-      rev = "f0deb22baad592329b158217143f8b324548b4bd";
-      sha256 = "e98b9b729b8c7dfcf34ccd36940e4d855975580864cf36f5e4bb88336fd1e263";
+      rev = "a5db36f048ac16ab9774fc86f36cd4ae9a444932";
+      sha256 = "31cb37f9fa38e15a52bc35c050e173afc2af5fe8b3d6e5f2026cd5a89bb1a5a0";
     };
     dependencies = [];
 
@@ -154,11 +163,11 @@ rec {
   };
 
   Syntastic = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "Syntastic-2015-12-10";
+    name = "Syntastic-2016-01-08";
     src = fetchgit {
       url = "git://github.com/scrooloose/syntastic";
-      rev = "48736aa376341518d7bedf3a39daf0ae9e1dcdc0";
-      sha256 = "2a523c7d54b5afee1eda6073c71ffcea7ba60e5240d91ea235f007ad89fb8e55";
+      rev = "c57ba0da9f0e935ecc87363c1ac3339b1e1cb75f";
+      sha256 = "0f4d73b024bd6e43f7b27bee629f1ff46bcb5f773eebdcda09652f101ab70504";
     };
     dependencies = [];
 
@@ -209,11 +218,11 @@ rec {
   };
 
   UltiSnips = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "UltiSnips-2015-12-09";
+    name = "UltiSnips-2015-12-22";
     src = fetchgit {
       url = "git://github.com/SirVer/ultisnips";
-      rev = "5a2dcc5cbfa4c1e4a981d57544eb51fc5baeecea";
-      sha256 = "dd9b087b7a08b75a60f104cf734b604f8823a219b76531694b4957fce6a2a8d5";
+      rev = "dbd43ad27cbfed14c9dc3de6d5acb5f4edb8f649";
+      sha256 = "3a1c59ae4097e72c91724157249d6a578e7ef2b10ed675e4372ce9968d66af66";
     };
     dependencies = [];
 
@@ -269,11 +278,11 @@ rec {
   };
 
   ctrlp-py-matcher = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "ctrlp-py-matcher-2015-07-18";
+    name = "ctrlp-py-matcher-2015-12-22";
     src = fetchgit {
       url = "git://github.com/FelikZ/ctrlp-py-matcher";
-      rev = "9e84cf8072866b92faf5082cb93a554b75e35fd0";
-      sha256 = "7d4d5f7da148ddc9c8956aca87f53d9d0ff458b8fb4bc4ab2a9bff2ee6026cde";
+      rev = "08b98ff7ba5191616fa4f099a63cdcbad70a0c0f";
+      sha256 = "72514b65e12dfa249e51d676d38ff88933309827ef0ece71f3a90a21b4a943e6";
     };
     dependencies = [];
 
@@ -302,11 +311,11 @@ rec {
   };
 
   fugitive = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "fugitive-2015-12-15";
+    name = "fugitive-2015-12-26";
     src = fetchgit {
       url = "git://github.com/tpope/vim-fugitive";
-      rev = "8851b8fe643517af160f59dfc3d88a0c4eed1fa5";
-      sha256 = "bba527606ab63cc6cce24ca1b44226aa37aced7f1aac4c352a6b83ce522c4b5f";
+      rev = "18d6d1ab82d9ac15586d7d3c1a36f9ef6fb50eae";
+      sha256 = "f448970d07eaf35c0a6d29634ee2114650934943602da8f2bf5a4e3920d62aa2";
     };
     dependencies = [];
 
@@ -323,17 +332,6 @@ rec {
 
   };
 
-  vim-addon-vim2nix = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-addon-vim2nix-2015-09-01";
-    src = fetchgit {
-      url = "git://github.com/JagaJaga/vim-addon-vim2nix";
-      rev = "ce9ddf99983c00adbd41e0d53ad8cead9712069c";
-      sha256 = "c4b3b4832684bebbf890741b30b1364ca7240b5348cd0c0ee93d6ba477e8f77d";
-    };
-    dependencies = ["vim-addon-manager"];
-
-  };
-
   vim-nix = buildVimPluginFrom2Nix { # created by nix#NixDerivation
     name = "vim-nix-2015-12-10";
     src = fetchgit {
@@ -357,11 +355,11 @@ rec {
   };
 
   neomake = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neomake-2015-12-11";
+    name = "neomake-2015-12-31";
     src = fetchgit {
       url = "git://github.com/benekastah/neomake";
-      rev = "d4c0a6f062a0d098126e87bb718b92fe7b79fd97";
-      sha256 = "1b2f1e024ffdfe0613c0aeb4c6fc64d64c6a25a00841538b7a371efd34cb8615";
+      rev = "6342a7d7e09083a549800a3cdc0ef95358a73ba7";
+      sha256 = "b7d3637b8575ae94dc0e68c4e5fcc41197b3083d1d7302c2e038431a24a3e9d7";
     };
     dependencies = [];
 
@@ -390,22 +388,22 @@ rec {
   };
 
   ctrlp-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "ctrlp-vim-2015-11-30";
+    name = "ctrlp-vim-2016-01-06";
     src = fetchgit {
       url = "git://github.com/ctrlpvim/ctrlp.vim";
-      rev = "7a80267ed061f3dc30bb319f438bdadfd8c7b1fd";
-      sha256 = "ae29eb79ca32ca0edd32602cf6b1e1276ccd4f5086ac4297a7f0dea2dd2e1f1b";
+      rev = "0fb2c58353ee041500eb67fb5bde2377bf486417";
+      sha256 = "5731f5fb2ac024ca3b53fdb56ff6ad5809db166f91dccf5494343ff490fe80e9";
     };
     dependencies = [];
 
   };
 
   vim-jade = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-jade-2015-11-23";
+    name = "vim-jade-2016-01-03";
     src = fetchgit {
       url = "git://github.com/digitaltoad/vim-jade";
-      rev = "f760e239386df055eb1892243624fdf7f7c58392";
-      sha256 = "812e65090e6a1c31f433878fd1012673a8244d8b6974b1c2ffd1558c30c716cc";
+      rev = "999cd2859a7772de707a70afc97f5a7d41a82df9";
+      sha256 = "039c1e9b91ac6417c2f38e8b30647115b10ad5485e78782a84100f22ae2da1d8";
     };
     dependencies = [];
 
@@ -434,11 +432,11 @@ rec {
   };
 
   vim-go = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-go-2015-12-15";
+    name = "vim-go-2016-01-04";
     src = fetchgit {
       url = "git://github.com/fatih/vim-go";
-      rev = "70c363044df808e34d947815d01a37d4e7564421";
-      sha256 = "9f1764a5e8c7450c4af9fc64b3170e10d89c4d6b4ad69a758878bed16362cf09";
+      rev = "eec4e3e8a8227fe24618e114ff2e644615f51ad6";
+      sha256 = "6868d9e9cd8ddad25526407ef843530e86f62e734649e600c8aef9cc2adea381";
     };
     dependencies = [];
 
@@ -456,11 +454,11 @@ rec {
   };
 
   idris-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "idris-vim-2015-12-08";
+    name = "idris-vim-2016-01-04";
     src = fetchgit {
       url = "git://github.com/idris-hackers/idris-vim";
-      rev = "1f9bad6bc1d05b44e7555fe80472fbb7a542f47a";
-      sha256 = "50cfb5a58a6c203c5f3695de61e9bc743e5dca71427e00c5cae86b4409debd3c";
+      rev = "f8e7fda4b8984c7248fd805b62c4a3a2e61bce94";
+      sha256 = "3b4ca5a65acea2c429fc721d1ab00c7ba286c929c31bd131896d8e508df1caaf";
     };
     dependencies = [];
 
@@ -621,33 +619,33 @@ rec {
   };
 
   vimtex = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vimtex-2015-12-16";
+    name = "vimtex-2016-01-07";
     src = fetchgit {
       url = "git://github.com/lervag/vimtex";
-      rev = "e982722e89462716e2ecdb6ce7aa9baea6dc8c98";
-      sha256 = "4c0e8399b97cbd24b0131c3e22fc8873d04576e21156b80e5c678b4ce3d19fe0";
+      rev = "db137566d540ac01a6013263069463a95f64a61d";
+      sha256 = "352436cd29aba8919f05d0e5e544c9d9addd62d850572d06bcbb58d15e9f8f8a";
     };
     dependencies = [];
 
   };
 
   vim-easymotion = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-easymotion-2015-10-27";
+    name = "vim-easymotion-2016-01-03";
     src = fetchgit {
       url = "git://github.com/lokaltog/vim-easymotion";
-      rev = "a21d4474f0e9df7a721246e0a3b386068901965f";
-      sha256 = "96bb705e9ff626b139a7f92906468eda63d743b8457a1dc1e4de9c3cf9486525";
+      rev = "39abbf30a7bfc16de139b52ce0d7d2a286da52a8";
+      sha256 = "5c0be765c2fdb95c632020e0d03a70a2683a9d8f5b2d934be94b89cdb9bbd089";
     };
     dependencies = [];
 
   };
 
   vim-xkbswitch = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-xkbswitch-2015-09-04";
+    name = "vim-xkbswitch-2016-01-08";
     src = fetchgit {
       url = "git://github.com/lyokha/vim-xkbswitch";
-      rev = "0d94b5dde9ddfeb6b064e30293b6fb7a4c54b907";
-      sha256 = "d303a6099e684084dfd71bdb08ae2c6dc33ec9c6f68b1115e2be257d7c83ef11";
+      rev = "89d7719ca1b69d4d18eda271b8fa75af2eec0aa9";
+      sha256 = "afb8bdba422cc176f18ee3d23cdd9c208bf7f87c488f0b230071806c45c71d0f";
     };
     dependencies = [];
     patchPhase = ''
@@ -658,11 +656,11 @@ rec {
   };
 
   vim-startify = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-startify-2015-12-11";
+    name = "vim-startify-2016-01-05";
     src = fetchgit {
       url = "git://github.com/mhinz/vim-startify";
-      rev = "295fe7a09a881448eea1aa71d26f53dcda3c499b";
-      sha256 = "a561488ae8870364f822a93ef18d35511b4dd7e779fd18e365851e8d216df61e";
+      rev = "e3fb0cd845f9726d30d92ac6293a84bece687c64";
+      sha256 = "42c77cca362aa8b40345d3296689fc1df564362ea3bd781d114315e64fc9a380";
     };
     dependencies = [];
 
@@ -702,22 +700,22 @@ rec {
   };
 
   vim-watchdogs = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-watchdogs-2015-07-29";
+    name = "vim-watchdogs-2015-12-27";
     src = fetchgit {
       url = "git://github.com/osyo-manga/vim-watchdogs";
-      rev = "e1fce3b4bbe07d55bd7340d25ca0dc900747ad6f";
-      sha256 = "72ec214364c674ee1ccd29a6dae925e6cbcaf90e57fef133385a96319108dd2c";
+      rev = "52842b03ab0c2e60563ff121d274f8a66ca7e0fc";
+      sha256 = "bbf304319a40e755d47afbe0f172ad47aea35f5253669e5da60d8bd717b67070";
     };
     dependencies = [];
 
   };
 
   racer = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "racer-2015-12-11";
+    name = "racer-2016-01-02";
     src = fetchgit {
       url = "git://github.com/phildawes/racer";
-      rev = "ce1915a6fd76f76433f30cfaf1fe1b2a8e21cdd4";
-      sha256 = "24d48cbf6d69e397cd7a9925c42e2a10fb8c9dc4a0ef8b9122894847224fd735";
+      rev = "c94a17f844c13d2f115a53013c0f9e063bc31f23";
+      sha256 = "fc42c224fbe12459e17c941ab6d084c838f11b1aabec55eaeebf617df2037124";
     };
     dependencies = [];
     buildPhase = ''
@@ -727,55 +725,55 @@ rec {
   };
 
   neocomplete-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neocomplete-vim-2015-12-13";
+    name = "neocomplete-vim-2016-01-03";
     src = fetchgit {
       url = "git://github.com/shougo/neocomplete.vim";
-      rev = "d1cb4c57e5eb8b453b63432dcbcb45a15c0fd07e";
-      sha256 = "a704696e66101875e98a1b2b6815acad647b87a07a3842fd6f9f91b8a70411e5";
+      rev = "4c108ddadcf44c83c2ee38e5ac0dc8b0b31ed9a8";
+      sha256 = "b112cfac177c142f09e4904f9d1b30ca402ed7642f0a4f8f003808dd804df52a";
     };
     dependencies = [];
 
   };
 
   neosnippet-snippets = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neosnippet-snippets-2015-12-13";
+    name = "neosnippet-snippets-2016-01-04";
     src = fetchgit {
       url = "git://github.com/shougo/neosnippet-snippets";
-      rev = "ec9267240ecb855657de830c9c68e5f6e34cfe65";
-      sha256 = "319a7ac504b462f7e466c9e02ff6e54b8374e5970f148552986c83136c423854";
+      rev = "1c6dacb99fcbeb186646ecafda3f07e07484b326";
+      sha256 = "fd834aa6d612f124d9d443d1ac11a0749d4df18f012de0c3729de2ecc3cbead5";
     };
     dependencies = [];
 
   };
 
   neosnippet-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neosnippet-vim-2015-12-16";
+    name = "neosnippet-vim-2016-01-04";
     src = fetchgit {
       url = "git://github.com/shougo/neosnippet.vim";
-      rev = "cfc99eedb5caf3d6baf867db5220a891b4686699";
-      sha256 = "aa34c6e28eb281bec6e617f03eb5e094cd2cfe18951f9e4823dda0ccdabaffad";
+      rev = "ac6ac62a5bf259f2db5aaf0751b919b377d1a9b2";
+      sha256 = "e9eaf68211965a71619bd3ff477982af7eccc30e6cb430a8fbf553469b22c127";
     };
     dependencies = [];
 
   };
 
   unite-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "unite-vim-2015-12-13";
+    name = "unite-vim-2016-01-06";
     src = fetchgit {
       url = "git://github.com/shougo/unite.vim";
-      rev = "aefd6c32ef8dc5b357efe7d8e5cd3dd4aa785d5c";
-      sha256 = "83562a15afc1c41a5d407fd0eb7d26beec216a9431dd80992bcd615afd595e5e";
+      rev = "98e9f3922b058145a0de08c5eb47990d34175252";
+      sha256 = "eebec7f7c292ecbcc84219f79f1b74fa4183b1147fa577e9f1035f9c553fc95e";
     };
     dependencies = [];
 
   };
 
   vimproc-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vimproc-vim-2015-12-11";
+    name = "vimproc-vim-2016-01-06";
     src = fetchgit {
       url = "git://github.com/shougo/vimproc.vim";
-      rev = "f96e476e41ab4cdb9c37242c8cf76f1e5aa5b91d";
-      sha256 = "da5de329b567d72fec8dc49d13006f19eca09282c57304dfa8d22bfbf8a9ace4";
+      rev = "aa075b9b56839e1adb08421d2e9837f90e59acad";
+      sha256 = "bc587f1cca4dfe8f22af5eecf290a624cbebfdb989906cc02d5471325464b301";
     };
     dependencies = [];
     buildInputs = [ which ];
@@ -790,11 +788,11 @@ rec {
   };
 
   vimshell-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vimshell-vim-2015-11-24";
+    name = "vimshell-vim-2015-12-23";
     src = fetchgit {
       url = "git://github.com/shougo/vimshell.vim";
-      rev = "7931e3bf9fbba738b26bb76143dfc1df17f7a99b";
-      sha256 = "f51ee4e8b16460226ce74d87236834f13008dca16dbc9090d89576a545f573bc";
+      rev = "a5b3d99ba84e76cf94195c37ab762aef5f7b6e25";
+      sha256 = "9a58b00cca9b2cf7ef73cdef2174ab69b7fb427130e5b125b96c6b385dec1947";
     };
     dependencies = [ "vimproc-vim" ];
   };
@@ -822,11 +820,11 @@ rec {
   };
 
   vim-quickrun = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-quickrun-2015-12-17";
+    name = "vim-quickrun-2015-12-28";
     src = fetchgit {
       url = "git://github.com/thinca/vim-quickrun";
-      rev = "97e1c8f6674d3ccce4730510d67c4e15894adcdc";
-      sha256 = "c61167569d5b05767fdaffc1b09aab729c777d01afaff8c0efd641a61ebe758c";
+      rev = "da5328d0aec495e4dc25232fd769a8a2e56d8f7d";
+      sha256 = "a70e2ffa05a2cc2306483e3ecc09972bcdf2d11bfafcfbf3f8195e23475e7102";
     };
     dependencies = [];
 
@@ -877,42 +875,32 @@ rec {
   };
 
   youcompleteme = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "youcompleteme-2015-12-13";
+    name = "youcompleteme-2016-01-05";
     src = fetchgit {
       url = "git://github.com/valloric/youcompleteme";
-      rev = "93c2a8644bcfc84590bea5e19eab350fe245e504";
-      sha256 = "32aaa99c5398d65875c1fdf5ed22f58aeeb267a2840930479523815b94b4111c";
+      rev = "4168a829accbe895ebc82b54de6f929afe4ac9a5";
+      sha256 = "a6df584dd9f244f8888bae0e60bb5742b841169fcf8efef9a052c0353c775405";
     };
     dependencies = [];
     buildInputs = [
-      python cmake
+      python go cmake
       (if stdenv.isDarwin then llvmPackages.clang else llvmPackages.clang-unwrapped)
       llvmPackages.llvm
-    ];
-
-    configurePhase = ":";
+    ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
 
     buildPhase = ''
       patchShebangs .
+      substituteInPlace plugin/youcompleteme.vim \
+        --replace "'ycm_path_to_python_interpreter', '''" "'ycm_path_to_python_interpreter', '${python}/bin/python'"
 
-      target=$out/${rtpPath}/youcompleteme
-      mkdir -p $target
-      cp -a ./ $target
-
-      mkdir $target/build
-      cd $target/build
-      cmake -G "Unix Makefiles" . $target/third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON -DUSE_SYSTEM_LIBCLANG=ON
+      mkdir build
+      pushd build
+      cmake -G "Unix Makefiles" . ../third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON -DUSE_SYSTEM_LIBCLANG=ON
       make ycm_support_libs -j''${NIX_BUILD_CORES} -l''${NIX_BUILD_CORES}}
-      ${python}/bin/python $target/third_party/ycmd/build.py --clang-completer --system-libclang
-
-      ${vimHelpTags}
-      vimHelpTags $target
+      ${python}/bin/python ../third_party/ycmd/build.py --gocode-completer --clang-completer --system-libclang
+      popd
     '';
 
-    # TODO: implement proper install phase rather than keeping everything in store
-    # TODO: support llvm based C completion, See README of git repository
-    installPhase = ":";
-
     meta = {
       description = "Fastest non utf-8 aware word and C completion engine for Vim";
       homepage = http://github.com/Valloric/YouCompleteMe;
@@ -1022,22 +1010,22 @@ rec {
   };
 
   vim-wakatime = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-wakatime-2015-12-01";
+    name = "vim-wakatime-2016-01-06";
     src = fetchgit {
       url = "git://github.com/wakatime/vim-wakatime";
-      rev = "2b758403d8637cacbab1de603258c611408b9fa7";
-      sha256 = "e3a3da2dd40c4098b18815ca12d83ad1789f5342a8d822669a29e9900600e6ff";
+      rev = "044b2138fb536df7e90fc4b3b2257eda43e76378";
+      sha256 = "2a9589bdf89471c090394bfb4001e673d1da9064dfe3d100e1f9ac3672d7250b";
     };
     dependencies = [];
     buildInputs = [ python ];
   };
 
   command-t = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "command-t-2015-04-29";
+    name = "command-t-2016-01-01";
     src = fetchgit {
       url = "git://github.com/wincent/command-t";
-      rev = "f7344ebbe95c532b2ad01f19877d6d611db0193b";
-      sha256 = "21d7ee2bbff3f79ec3c81bcf683acac6528ea89faef8b7dd075cc83662930a50";
+      rev = "978c0a6bbd8a318023a19787f95cc2041c614db6";
+      sha256 = "954bf0285ec37e975b227d3a1e80165fc52be673d9c5e510265dc911e06ff066";
     };
     dependencies = [];
     buildInputs = [ perl ruby ];
@@ -1083,11 +1071,11 @@ rec {
   };
 
   pathogen = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "pathogen-2015-09-20";
+    name = "pathogen-2015-12-25";
     src = fetchgit {
       url = "git://github.com/tpope/vim-pathogen";
-      rev = "b4174e4d1a16e7f0c5c6dfca923269a20a9f50c2";
-      sha256 = "703a1d3022cdb03d3d14fbba48be119f4bd7d546ba4bd33185bddaa161bbc63e";
+      rev = "4d584ea8c85408ca0d68b7b1693f3e2db8aa762a";
+      sha256 = "1a1b5e650aa5ff107ce68fecf4d9a57cafc2c15ab74686c5ea3c5985de07470d";
     };
     dependencies = [];
 
@@ -1127,11 +1115,11 @@ rec {
   };
 
   sensible = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "sensible-2015-12-11";
+    name = "sensible-2015-12-26";
     src = fetchgit {
       url = "git://github.com/tpope/vim-sensible";
-      rev = "8c4429c70c186f9be47121b126c13095793062a1";
-      sha256 = "f3b5de776ae4fa2c8769f2f04639d2a0218c88345beba9364899d359d32cf6e5";
+      rev = "680a5c693213daa158c816f068fffa895d961dc9";
+      sha256 = "959b55a97974d85374eccb58379c3f69c0ec43459d4df2484e42a437c61e34bc";
     };
     dependencies = [];
 
@@ -1214,11 +1202,11 @@ rec {
   };
 
   tlib = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "tlib-2015-12-12";
+    name = "tlib-2016-01-06";
     src = fetchgit {
       url = "git://github.com/tomtom/tlib_vim";
-      rev = "599934acbbcf1637616878fc6e8f5aba1b301a29";
-      sha256 = "2401a623363bf31fa9f152faae90268d06ed5cef8352163c19b0c7b013e5c0b7";
+      rev = "e8b53d80f73d98a9accd8b33344fd8821c8e71f7";
+      sha256 = "5269b8949170443ebfccd8ce21238ef3c5cb2aeb857b1ea4aa5733298a75a382";
     };
     dependencies = [];
 
@@ -1331,7 +1319,7 @@ rec {
       sha256 = "a3b5da9bcc01c6f0fb0a5e13a6f9efb58471339ed32c480fde96856bb9e1e7be";
     };
     dependencies = [];
-
+    buildInputs = stdenv.lib.optional stdenv.isDarwin Cocoa;
   };
 
   vim-addon-mru = buildVimPluginFrom2Nix { # created by nix#NixDerivation
@@ -1445,11 +1433,11 @@ rec {
   };
 
   vim-airline = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-airline-2015-10-18";
+    name = "vim-airline-2016-01-05";
     src = fetchgit {
       url = "git://github.com/bling/vim-airline";
-      rev = "14d14cf951c08fc88ca6c3e6f28fe47b99421e23";
-      sha256 = "cfc686cad3749e3bd933b5ae3ea35c4a9c02765be9223e6b30e7d801a9174aa7";
+      rev = "ca6ab34e3ce2d25e5625fe56ef31d5032c69dbec";
+      sha256 = "0a4352d8d1602c8eba62ab5c97c418c14eee9be142eb949d49c7b2866892e259";
     };
     dependencies = [];
 
@@ -1522,11 +1510,11 @@ rec {
   };
 
   vim-multiple-cursors = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-multiple-cursors-2015-10-30";
+    name = "vim-multiple-cursors-2016-01-01";
     src = fetchgit {
       url = "git://github.com/terryma/vim-multiple-cursors";
-      rev = "73a78c926ad208bd1984e575ceece276d61a1404";
-      sha256 = "74f51c7c6a903621ee3fc5e78fbce4853b5da086463d015c652808d155cbc7e6";
+      rev = "0dfd3f91b0ea1c70be8873d0a9e5c7d00369610f";
+      sha256 = "820662a93102bc1fac679f108d5e3400f7f5431196d84abf24484849e004c325";
     };
     dependencies = [];
 
@@ -1544,33 +1532,33 @@ rec {
   };
 
   vim-signify = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-signify-2015-12-09";
+    name = "vim-signify-2016-01-07";
     src = fetchgit {
       url = "git://github.com/mhinz/vim-signify";
-      rev = "ecb796139eb0fc9b79fdc28e9b610fa1a2c5f589";
-      sha256 = "6086fb614a0da7f676f2f567b5dfc6ddd765167141f629dc8dbb02862e7db34c";
+      rev = "e134c152e05ec750091349629f048fe3d5d49962";
+      sha256 = "68615d43c4d8a2573c19011a77409d8de62eede252759d84f6318409009e15d3";
     };
     dependencies = [];
 
   };
 
   vim-snippets = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-snippets-2015-12-17";
+    name = "vim-snippets-2016-01-08";
     src = fetchgit {
       url = "git://github.com/honza/vim-snippets";
-      rev = "d5153d63b16e956e892f039ac5982963660a1c68";
-      sha256 = "c79fc743ec1e565111876357136cee1a04ed6b3f58d1586df322a38b026f8a49";
+      rev = "ac2c763c05fa5ff27ed66b3a0f22f0f41c22192d";
+      sha256 = "52ccca1e588a15745754651c3cbc57ae706d42d2dff8d4401374502b02787d60";
     };
     dependencies = [];
 
   };
 
   vim-webdevicons = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-webdevicons-2015-12-01";
+    name = "vim-webdevicons-2015-12-21";
     src = fetchgit {
       url = "git://github.com/ryanoasis/vim-devicons";
-      rev = "0e1b7864cfee4b0585daa277bedd992f858e1e75";
-      sha256 = "e265c6c0906d0427409a98458192a4eb94afe671f26fc8de8890dae0e66f7764";
+      rev = "8ac3e02537d32648c3f9738c711639f8b940460c";
+      sha256 = "9d4ee89a551ab9e1ec3938e1eba1fd138bbee975ce3b247b5f56eb2613daefbc";
     };
     dependencies = [];
 
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index 7195064a20d3..207eed69160c 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -20,7 +20,6 @@
 "extradite"
 "fugitive"
 "ghcmod"
-"github:JagaJaga/vim-addon-vim2nix"
 "github:ap/vim-css-color"
 "github:benekastah/neomake"
 "github:bitc/vim-hdevtools"
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix
index adb938900663..f39d7093c73b 100644
--- a/pkgs/misc/vim-plugins/vim-utils.nix
+++ b/pkgs/misc/vim-plugins/vim-utils.nix
@@ -103,7 +103,7 @@ Then create a temp vim file and insert:
 
 Then ":source %" it.
 
-nix#ExportPluginsForNix is provided by github.com/JagaJaga/vim-addon-vim2nix
+nix#ExportPluginsForNix is provided by ./vim2nix
 
 A buffer will open containing the plugin derivation lines as well list 
 fitting the vimrcConfig.vam.pluginDictionaries option.
@@ -297,7 +297,7 @@ rec {
   pluginnames2Nix = {name, namefiles} : vim_configurable.customize {
     inherit name;
     vimrcConfig.vam.knownPlugins = vimPlugins;
-    vimrcConfig.vam.pluginDictionaries = ["vim-addon-vim2nix"]; # Using fork until patch is accepted by upstream
+    vimrcConfig.vam.pluginDictionaries = ["vim2nix"];
     vimrcConfig.customRC = ''
       " Yes - this is impure and will create the cache file and checkout vim-pi
       " into ~/.vim/vim-addons
diff --git a/pkgs/misc/vim-plugins/vim2nix/README.txt b/pkgs/misc/vim-plugins/vim2nix/README.txt
new file mode 100644
index 000000000000..4263481461f1
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/README.txt
@@ -0,0 +1,3 @@
+Usage see vim-utils.nix in nixpkgs
+
+This code depends on vim-addon-manager
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/command-t b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/command-t
new file mode 100644
index 000000000000..a29c602b5d7e
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/command-t
@@ -0,0 +1,7 @@
+    buildInputs = [ perl ruby ];
+    buildPhase = ''
+      pushd ruby/command-t
+      ruby extconf.rb
+      make
+      popd
+    '';
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/matchit.zip b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/matchit.zip
new file mode 100644
index 000000000000..cc9d3fb72640
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/matchit.zip
@@ -0,0 +1,7 @@
+    unpackPhase = ''
+      (
+       sourceRoot=d
+       mkdir $sourceRoot; cd $sourceRoot;
+       unzip $src
+      )
+    '';
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/racer b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/racer
new file mode 100644
index 000000000000..57000b870645
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/racer
@@ -0,0 +1,4 @@
+    buildPhase = ''
+      find . -type f -not -name 'racer.vim' -exec rm -rf {} \;
+      rm -rf editors images src
+    '';
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/taglist b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/taglist
new file mode 100644
index 000000000000..90f6e3367a3b
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/taglist
@@ -0,0 +1,6 @@
+    setSourceRoot = ''
+      export sourceRoot=taglist
+      mkdir taglist
+      mv doc taglist
+      mv plugin taglist
+    '';
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-addon-manager b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-addon-manager
new file mode 100644
index 000000000000..e3d8dfb69210
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-addon-manager
@@ -0,0 +1 @@
+    buildInputs = stdenv.lib.optional stdenv.isDarwin Cocoa;
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-hier b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-hier
new file mode 100644
index 000000000000..d1f756a99d3b
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-hier
@@ -0,0 +1 @@
+    buildInputs = [ vim ];
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-wakatime b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-wakatime
new file mode 100644
index 000000000000..31ffa7f8ff97
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-wakatime
@@ -0,0 +1 @@
+    buildInputs = [ python ];
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xdebug b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xdebug
new file mode 100644
index 000000000000..62a3c22c0369
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xdebug
@@ -0,0 +1 @@
+    postInstall = false;
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xkbswitch b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xkbswitch
new file mode 100644
index 000000000000..4e73ac9a73b3
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vim-xkbswitch
@@ -0,0 +1,5 @@
+    patchPhase = ''
+      substituteInPlace plugin/xkbswitch.vim \
+              --replace /usr/local/lib/libxkbswitch.so ${xkb_switch}/lib/libxkbswitch.so
+    '';
+    buildInputs = [ xkb_switch ];
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimproc.vim b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimproc.vim
new file mode 100644
index 000000000000..e720559fa3d6
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimproc.vim
@@ -0,0 +1,9 @@
+    buildInputs = [ which ];
+
+    buildPhase = ''
+      substituteInPlace autoload/vimproc.vim \
+        --replace vimproc_mac.so vimproc_unix.so \
+        --replace vimproc_linux64.so vimproc_unix.so \
+        --replace vimproc_linux32.so vimproc_unix.so
+      make -f make_unix.mak
+    '';
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimshell.vim b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimshell.vim
new file mode 100644
index 000000000000..5be233050793
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/vimshell.vim
@@ -0,0 +1 @@
+    dependencies = [ "vimproc-vim" ];
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme
new file mode 100644
index 000000000000..e498eef8c0b5
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme
@@ -0,0 +1,26 @@
+    buildInputs = [
+      python go cmake
+      (if stdenv.isDarwin then llvmPackages.clang else llvmPackages.clang-unwrapped)
+      llvmPackages.llvm
+    ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
+
+    buildPhase = ''
+      patchShebangs .
+      substituteInPlace plugin/youcompleteme.vim \
+        --replace "'ycm_path_to_python_interpreter', '''" "'ycm_path_to_python_interpreter', '${python}/bin/python'"
+
+      mkdir build
+      pushd build
+      cmake -G "Unix Makefiles" . ../third_party/ycmd/cpp -DPYTHON_LIBRARIES:PATH=${python}/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR:PATH=${python}/include/python2.7 -DUSE_CLANG_COMPLETER=ON -DUSE_SYSTEM_LIBCLANG=ON
+      make ycm_support_libs -j''${NIX_BUILD_CORES} -l''${NIX_BUILD_CORES}}
+      ${python}/bin/python ../third_party/ycmd/build.py --gocode-completer --clang-completer --system-libclang
+      popd
+    '';
+
+    meta = {
+      description = "Fastest non utf-8 aware word and C completion engine for Vim";
+      homepage = http://github.com/Valloric/YouCompleteMe;
+      license = stdenv.lib.licenses.gpl3;
+      maintainers = with stdenv.lib.maintainers; [marcweber jagajaga];
+      platforms = stdenv.lib.platforms.linux;
+    };
diff --git a/pkgs/misc/vim-plugins/vim2nix/addon-info.json b/pkgs/misc/vim-plugins/vim2nix/addon-info.json
new file mode 100644
index 000000000000..93ca9bc129b5
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/addon-info.json
@@ -0,0 +1 @@
+{'dependencies': {'vim-addon-manager': {}}}
diff --git a/pkgs/misc/vim-plugins/vim2nix/autoload/nix.vim b/pkgs/misc/vim-plugins/vim2nix/autoload/nix.vim
new file mode 100644
index 000000000000..376b7c674d6c
--- /dev/null
+++ b/pkgs/misc/vim-plugins/vim2nix/autoload/nix.vim
@@ -0,0 +1,307 @@
+" usage example:
+"
+" call nix#ExportPluginsForNix({'path_to_nixpkgs': '/etc/nixos/nixpkgs', 'names': ["vim-addon-manager", "vim-addon-nix"], 'cache_file': 'cache'})
+let s:plugin_root = expand('<sfile>:h:h')
+
+fun! nix#ToNixAttrName(s) abort
+    return nix#ToNixName(a:s)
+endf
+
+fun! nix#ToNixName(s) abort
+  return substitute(substitute(a:s, '[:/.]', '-', 'g'), 'github-', '', 'g')
+endf
+
+fun! s:System(...)
+  let args = a:000
+  let r = call('vam#utils#System', args)
+  if r is 0
+    throw "command ".join(args, '').' failed'
+  else
+    return r
+  endif
+endf
+
+fun! nix#DependenciesFromCheckout(opts, name, repository, dir)
+  " check for dependencies
+  " vam#PluginDirFromName(a:name)
+  let info = vam#ReadAddonInfo(vam#AddonInfoFile(a:dir, a:name))
+  return keys(get(info, 'dependencies', {}))
+endf
+
+
+" without deps
+fun! nix#NixDerivation(opts, name, repository) abort
+  let n_a_name = nix#ToNixAttrName(a:name)
+  let n_n_name = nix#ToNixName(a:name)
+  let type = get(a:repository, 'type', '')
+  let created_notice = " # created by nix#NixDerivation"
+
+  let ancf = s:plugin_root.'/additional-nix-code/'.a:name
+  let additional_nix_code = file_readable(ancf) ? join(readfile(ancf), "\n") : ""
+
+  if type == 'git'
+    " should be using shell abstraction ..
+    echo 'fetching '. a:repository.url
+    let s = s:System('$ --fetch-submodules $ 2>&1',a:opts.nix_prefetch_git, a:repository.url)
+    let rev = matchstr(s, 'git revision is \zs[^\n\r]\+\ze')
+    let sha256 = matchstr(s, 'hash is \zs[^\n\r]\+\ze')
+    let dir = matchstr(s, 'path is \zs[^\n\r]\+\ze')
+    let date = matchstr(s, 'Commit date is \zs[0-9-]\+\ze')
+
+    let dependencies = nix#DependenciesFromCheckout(a:opts, a:name, a:repository, dir)
+    return {'n_a_name': n_a_name, 'n_n_name': n_n_name, 'dependencies': dependencies, 'derivation': join([
+          \ '  '.n_a_name.' = buildVimPluginFrom2Nix {'.created_notice,
+          \ '    name = "'.n_n_name.'-'.date.'";',
+          \ '    src = fetchgit {',
+          \ '      url = "'. a:repository.url .'";',
+          \ '      rev = "'.rev.'";',
+          \ '      sha256 = "'.sha256.'";',
+          \ '    };',
+          \ '    dependencies = ['.join(map(copy(dependencies), "'\"'.nix#ToNixAttrName(v:val).'\"'")).'];',
+          \ additional_nix_code,
+          \ '  };',
+          \ '',
+          \ '',
+          \ ], "\n")}
+
+  elseif type == 'hg'
+    " should be using shell abstraction ..
+    echo 'fetching '. a:repository.url
+    let s = s:System('$ $ 2>&1',a:opts.nix_prefetch_hg, a:repository.url)
+    let rev = matchstr(s, 'hg revision is \zs[^\n\r]\+\ze')
+    let sha256 = matchstr(s, 'hash is \zs[^\n\r]\+\ze')
+    let dir = matchstr(s, 'path is \zs[^\n\r]\+\ze')
+
+    let dependencies = nix#DependenciesFromCheckout(a:opts, a:name, a:repository, dir)
+    return {'n_a_name': n_a_name, 'n_n_name': n_n_name, 'dependencies': dependencies, 'derivation':  join([
+          \ '  '.n_a_name.' = buildVimPluginFrom2Nix {'.created_notice,
+          \ '    name = "'.n_n_name.'";',
+          \ '    src = fetchhg {',
+          \ '      url = "'. a:repository.url .'";',
+          \ '      rev = "'.rev.'";',
+          \ '      sha256 = "'.sha256.'";',
+          \ '    };',
+          \ '    dependencies = ['.join(map(copy(dependencies), "'\"'.nix#ToNixAttrName(v:val).'\"'")).'];',
+          \ additional_nix_code,
+          \ '  };',
+          \ '',
+          \ '',
+          \ ], "\n")}
+
+  elseif type == 'archive'
+    let sha256 = split(s:System('nix-prefetch-url $ 2>/dev/null', a:repository.url), "\n")[0]
+    " we should unpack the sources, look for the addon-info.json file ..
+    " however most packages who have the addon-info.json file also are on
+    " github thus will be of type "git" instead. The dependency information
+    " from vim-pi is encoded in the reposiotry. Thus this is likely to do the
+    " right thing most of the time.
+    let addon_info = get(a:repository, 'addon-info', {})
+    let dependencies = keys(get(addon_info, 'dependencies', {}))
+
+    return {'n_a_name': n_a_name, 'n_n_name': n_n_name, 'dependencies': dependencies, 'derivation':  join([
+          \ '  '.n_a_name.' = buildVimPluginFrom2Nix {'.created_notice,
+          \ '    name = "'.n_n_name.'";',
+          \ '    src = fetchurl {',
+          \ '      url = "'. a:repository.url .'";',
+          \ '      name = "'. a:repository.archive_name .'";',
+          \ '      sha256 = "'.sha256.'";',
+          \ '    };',
+          \ '    buildInputs = [ unzip ];',
+          \ '    dependencies = ['.join(map(copy(dependencies), "'\"'.nix#ToNixAttrName(v:val).'\"'")).'];',
+          \ '    meta = {',
+          \ '       url = "http://www.vim.org/scripts/script.php?script_id='.a:repository.vim_script_nr.'";',
+          \ '    };',
+          \ addon_info == {} ? '' : ('    addon_info = '.nix#ToNix(string(addon_info), [], "").';'),
+          \ additional_nix_code,
+          \ '  };',
+          \ '',
+          \ '',
+          \ ], "\n")}
+  else
+    throw a:name.' TODO: implement source '.string(a:repository)
+  endif
+endf
+
+" also tries to handle dependencies
+fun! nix#AddNixDerivation(opts, cache, name, ...) abort
+  if has_key(a:cache, a:name) | return | endif
+  let repository = a:0 > 0 ? a:1 : {}
+  let name = a:name
+
+  if repository == {}
+    call vam#install#LoadPool()
+    let list = matchlist(a:name, 'github:\([^/]*\)\%(\/\(.*\)\)\?$')
+    if len(list) > 0
+      if '' != list[2]
+        let name = list[2]
+        let repository = { 'type': 'git', 'owner': list[1], 'repo': list[2], 'url': 'git://github.com/'.list[1].'/'.list[2] }
+      else
+        let name = list[1]
+        let repository = { 'type': 'git', 'owner': list[1], 'repo': 'vim-addon-'.list[1], 'url': 'git://github.com/'.list[1].'/vim-addon-'.list[1] }
+      endif
+    else
+      let repository = get(g:vim_addon_manager.plugin_sources, a:name, {})
+      if repository == {}
+        throw "repository ".a:name." unkown!"
+      else
+          if repository.url =~ 'github'
+            let owner = matchstr(repository.url, 'github.com/\zs.\+\ze/')
+            let repo = matchstr(repository.url, '\/\zs[^\/]\+\ze$')
+            let url = repository.url
+            let repository = { 'type': 'git', 'owner': owner, 'repo': repo, 'url': url }
+          endif
+      endif
+    endif
+  endif
+
+  let a:cache[a:name] = nix#NixDerivation(a:opts, name, repository)
+
+  " take known dependencies into account:
+  let deps = get(a:cache[a:name], 'dependencies', [])
+  call extend(a:opts.names_to_process, deps)
+  call extend(a:opts.names_to_export,  deps)
+endfun
+
+fun! nix#TopNixOptsByParent(parents)
+  if (a:parents == [])
+    return {'ind': '  ', 'next_ind': '    ', 'sep': "\n"}
+  else
+    return {'ind': '', 'next_ind': '', 'sep': ' '}
+  endif
+endf
+
+fun! nix#ToNix(x, parents, opts_fun) abort
+  let opts = a:opts_fun == "" ? "" : call(a:opts_fun, [a:parents])
+  let next_parents = [a:x] + a:parents
+  let seps = a:0 > 1 ? a:2 : []
+
+  let ind = get(opts, 'ind', '')
+  let next_ind = get(opts, 'next_ind', ind.'  ')
+  let sep = get(opts, 'sep', ind.'  ')
+
+  if type(a:x) == type("")
+    return "''". substitute(a:x, '[$]', '$$', 'g')."''"
+  elseif type(a:x) == type({})
+    let s = ind."{".sep
+    for [k,v] in items(a:x)
+      let s .= '"'.k.'" = '.nix#ToNix(v, next_parents, a:opts_fun).";".sep
+      unlet k v
+    endfor
+    return  s.ind."}"
+
+    " let s = ind."{\n"
+    " for [k,v] in items(a:x)
+    "   let s .= next_ind . nix#ToNix(k).' = '.nix#ToNix(v, next_ind)."\n"
+    "   unlet k v
+    " endfor
+    " return  s.ind."}\n"
+  elseif type(a:x) == type([])
+    let s = ind."[".sep
+    for v in a:x
+      let s .= next_ind . nix#ToNix(v, next_parents, a:opts_fun)."".sep
+      unlet v
+    endfor
+    return s.ind."]"
+  endif
+endf
+
+
+" with dependencies
+" opts.cache_file (caches the checkout and dependency information
+" opts.path_to_nixpkgs or  opts.nix_prefetch_{git,hg}
+" opts.plugin_dictionaries: list of any
+"     - string
+"     - dictionary having key name or names
+" This is so that plugin script files can be loaded/ merged
+fun! nix#ExportPluginsForNix(opts) abort
+  let cache_file = get(a:opts, 'cache_file', '')
+
+  let opts = a:opts
+
+  " set nix_prefetch_* scripts
+  for scm in ['git', 'hg']
+    if !has_key(opts, 'nix_prefetch_'.scm)
+      let opts['nix_prefetch_'.scm] = a:opts.path_to_nixpkgs.'/pkgs/build-support/fetch'.scm.'/nix-prefetch-'.scm
+    endif
+  endfor
+
+  " create list of names from dictionaries
+  let a:opts.names_to_process = []
+  for x in a:opts.plugin_dictionaries
+    if type(x) == type('')
+      call add(opts.names_to_process, x)
+    elseif type(x) == type({}) && has_key(x, 'name')
+      call add(opts.names_to_process, x.name)
+    elseif type(x) == type({}) && has_key(x, 'names')
+      call extend(opts.names_to_process, x.names)
+    else
+      throw "unexpected"
+    endif
+    unlet x
+  endfor
+  let a:opts.names_to_export = a:opts.names_to_process
+
+  let cache = (cache_file == '' || !filereadable(cache_file)) ? {} : eval(readfile(cache_file)[0])
+  let failed = {}
+  while len(opts.names_to_process) > 0
+    let name = opts.names_to_process[0]
+    if get(opts, 'try_catch', 1)
+      try
+        call nix#AddNixDerivation(opts, cache, name)
+      catch /.*/
+        echom 'failed : '.name.' '.v:exception
+        let failed[name] = v:exception
+      endtry
+    else
+      call nix#AddNixDerivation(opts, cache, name)
+    endif
+    let opts.names_to_process = opts.names_to_process[1:]
+  endwhile
+  echom join(keys(failed), ", ")
+  echom string(failed)
+
+  if cache_file != ''
+    call writefile([string(cache)], cache_file)
+  endif
+
+  enew
+
+  let uniq = {}
+  for x in a:opts.names_to_export
+    let uniq[x] = 1
+  endfor
+
+  for k in sort(keys(uniq))
+    call append('$', split(cache[k].derivation,"\n"))
+  endfor
+
+  " for VAM users output vam.pluginDictionaries which can be fed to
+  " vim_customizable.customize.vimrc.vam.pluginDictionaries
+  call append('$', ["", "", "", '# vam.pluginDictionaries'])
+
+  let ns = []
+  for x in a:opts.plugin_dictionaries
+    if type(x) == type("")
+      call add(ns, nix#ToNixAttrName(x))
+    elseif type(x) == type({})
+      if has_key(x, 'name')
+        call add(ns, extend({'name': nix#ToNixAttrName(x.name)}, x, "keep"))
+      elseif has_key(x, 'names')
+        call add(ns, extend({'names': map(copy(x.names), 'nix#ToNixAttrName(v:val)')}, x, "keep"))
+      else
+        throw "unexpected"
+      endif
+    else
+      throw "unexpected"
+    endif
+    unlet x
+  endfor
+
+  call append('$', split(nix#ToNix(ns, [], 'nix#TopNixOptsByParent'), "\n"))
+
+  " failures:
+  for [k,v] in items(failed)
+    call append('$', ['# '.k.', failure: '.v])
+    unlet k v
+  endfor
+endf