about summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
authorAneesh Agrawal <aneeshusa@gmail.com>2017-10-29 23:21:07 -0700
committerAneesh Agrawal <aneeshusa@gmail.com>2018-01-04 08:00:51 -0800
commit8c3553b88dff2196ec3d2979cb7887c2b050ad4d (patch)
treed5d3219bb53171fa772bb07493df6a97bbd9bee6 /pkgs/development/tools
parent0750c5aee42dd288749863cdf4ac574f69976a8b (diff)
downloadnixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.tar
nixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.tar.gz
nixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.tar.bz2
nixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.tar.lz
nixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.tar.xz
nixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.tar.zst
nixlib-8c3553b88dff2196ec3d2979cb7887c2b050ad4d.zip
vagrant: Build from source
This is not quite as elegant as using `bundlerApp`,
which I could not get working.
However, this still uses most of the Ruby infrastructure,
including stock bundix, and should be fairly reasonable to maintain.

This means no more hacks to work around wrong embedded binaries,
and no need for an old version of Ruby.

Note that `vagrant share` is no longer included,
as that functionality is closed-source
and not present in the upstream source code.

The Vagrant maintainers publish official Vagrant installers,
which they prefer people use as most platforms don't
have great support for pinning known-good dependencies.
When run outside one of the offical installers,
Vagrant normally prints a warning to that effect.
However, Vagrant does run outside the installer environment
(nominally to support Vagrant development),
and this has the effect of functioning better by respecting
OS certs and shared libraries,
as opposed to trying to use bundled versions.
To keep these postive side effects without having to see the warning
on every Vagrant invocation, patch out the call to print the warning.

Note that I have reset the maintainers since the implementation is
totally redone; I'm happy to re-add any of the current maintainers.
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/vagrant/Gemfile2
-rw-r--r--pkgs/development/tools/vagrant/Gemfile.lock149
-rw-r--r--pkgs/development/tools/vagrant/default.nix170
-rw-r--r--pkgs/development/tools/vagrant/gemset.nix457
-rw-r--r--pkgs/development/tools/vagrant/unofficial-installation-nowarn.patch16
5 files changed, 666 insertions, 128 deletions
diff --git a/pkgs/development/tools/vagrant/Gemfile b/pkgs/development/tools/vagrant/Gemfile
new file mode 100644
index 000000000000..d32951f1c054
--- /dev/null
+++ b/pkgs/development/tools/vagrant/Gemfile
@@ -0,0 +1,2 @@
+source "https://rubygems.org"
+gem 'vagrant'
diff --git a/pkgs/development/tools/vagrant/Gemfile.lock b/pkgs/development/tools/vagrant/Gemfile.lock
new file mode 100644
index 000000000000..208aab0a2078
--- /dev/null
+++ b/pkgs/development/tools/vagrant/Gemfile.lock
@@ -0,0 +1,149 @@
+GIT
+  remote: https://github.com/mitchellh/vagrant-spec.git
+  revision: 7ac8b4191de578e345b29acaf62ecc72c8e73be1
+  specs:
+    vagrant-spec (0.0.1)
+      childprocess (~> 0.6.0)
+      log4r (~> 1.1.9)
+      rspec (~> 3.5.0)
+      thor (~> 0.18.1)
+
+PATH
+  remote: .
+  specs:
+    vagrant (2.0.1)
+      childprocess (~> 0.6.0)
+      erubis (~> 2.7.0)
+      hashicorp-checkpoint (~> 0.1.1)
+      i18n (>= 0.6.0, <= 0.8.0)
+      listen (~> 3.1.5)
+      log4r (~> 1.1.9, < 1.1.11)
+      net-scp (~> 1.2.0)
+      net-sftp (~> 2.1)
+      net-ssh (~> 4.1.0)
+      rb-kqueue (~> 0.2.0)
+      rest-client (>= 1.6.0, < 3.0)
+      ruby_dep (<= 1.3.1)
+      wdm (~> 0.1.0)
+      winrm (~> 2.1)
+      winrm-elevated (~> 1.1)
+      winrm-fs (~> 1.0)
+
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.0)
+    builder (3.2.3)
+    childprocess (0.6.3)
+      ffi (~> 1.0, >= 1.0.11)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    diff-lcs (1.3)
+    domain_name (0.5.20170404)
+      unf (>= 0.0.5, < 1.0.0)
+    erubis (2.7.0)
+    fake_ftp (0.1.1)
+    ffi (1.9.18)
+    gssapi (1.2.0)
+      ffi (>= 1.0.1)
+    gyoku (1.3.1)
+      builder (>= 2.1.2)
+    hashdiff (0.3.7)
+    hashicorp-checkpoint (0.1.4)
+    http-cookie (1.0.3)
+      domain_name (~> 0.5)
+    httpclient (2.8.3)
+    i18n (0.8.0)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
+    little-plugger (1.1.4)
+    log4r (1.1.10)
+    logging (2.2.2)
+      little-plugger (~> 1.1)
+      multi_json (~> 1.10)
+    mime-types (3.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2016.0521)
+    multi_json (1.12.2)
+    net-scp (1.2.1)
+      net-ssh (>= 2.6.5)
+    net-sftp (2.1.2)
+      net-ssh (>= 2.6.5)
+    net-ssh (4.1.0)
+    netrc (0.11.0)
+    nori (2.6.0)
+    public_suffix (3.0.1)
+    rake (12.0.0)
+    rb-fsevent (0.10.2)
+    rb-inotify (0.9.10)
+      ffi (>= 0.5.0, < 2)
+    rb-kqueue (0.2.5)
+      ffi (>= 0.5.0)
+    rest-client (2.0.2)
+      http-cookie (>= 1.0.2, < 2.0)
+      mime-types (>= 1.16, < 4.0)
+      netrc (~> 0.8)
+    rspec (3.5.0)
+      rspec-core (~> 3.5.0)
+      rspec-expectations (~> 3.5.0)
+      rspec-mocks (~> 3.5.0)
+    rspec-core (3.5.4)
+      rspec-support (~> 3.5.0)
+    rspec-expectations (3.5.0)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.5.0)
+    rspec-its (1.2.0)
+      rspec-core (>= 3.0.0)
+      rspec-expectations (>= 3.0.0)
+    rspec-mocks (3.5.0)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.5.0)
+    rspec-support (3.5.0)
+    ruby_dep (1.3.1)
+    rubyntlm (0.6.2)
+    rubyzip (1.2.1)
+    safe_yaml (1.0.4)
+    thor (0.18.1)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.4)
+    wdm (0.1.1)
+    webmock (2.3.2)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff
+    winrm (2.2.3)
+      builder (>= 2.1.2)
+      erubis (~> 2.7)
+      gssapi (~> 1.2)
+      gyoku (~> 1.0)
+      httpclient (~> 2.2, >= 2.2.0.2)
+      logging (>= 1.6.1, < 3.0)
+      nori (~> 2.0)
+      rubyntlm (~> 0.6.0, >= 0.6.1)
+    winrm-elevated (1.1.0)
+      winrm (~> 2.0)
+      winrm-fs (~> 1.0)
+    winrm-fs (1.1.1)
+      erubis (~> 2.7)
+      logging (>= 1.6.1, < 3.0)
+      rubyzip (~> 1.1)
+      winrm (~> 2.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  fake_ftp (~> 0.1.1)
+  rake (~> 12.0.0)
+  rspec (~> 3.5.0)
+  rspec-its (~> 1.2.0)
+  vagrant!
+  vagrant-spec!
+  webmock (~> 2.3.1)
+
+BUNDLED WITH
+   1.14.6
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
index e72520d61b33..714935513f74 100644
--- a/pkgs/development/tools/vagrant/default.nix
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -1,141 +1,55 @@
-{ stdenv, fetchurl, fetchpatch, dpkg, curl, libarchive, openssl, rake, ruby, buildRubyGem, libiconv
-, libxml2, libxslt, libffi, makeWrapper, p7zip, xar, gzip, cpio }:
+{ lib, fetchurl, buildRubyGem, bundlerEnv, ruby }:
 
 let
   version = "2.0.1";
+  url = "https://github.com/hashicorp/vagrant/archive/v${version}.tar.gz";
+  sha256 = "1fjfl00n4rsq6khypm56g0vq6l153q128r35zky2ba30bz292ar1";
+
+  deps = bundlerEnv rec {
+    name = "${pname}-${version}";
+    pname = "vagrant";
+    inherit version;
+
+    inherit ruby;
+    gemdir = ./.;
+    gemset = lib.recursiveUpdate (import ./gemset.nix) {
+      vagrant = {
+        source = {
+          type = "url";
+          inherit url sha256;
+        };
+        inherit version;
+      };
+    };
+  };
 
-  url = if stdenv.isLinux
-    then "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_${arch}.deb"
-    else if stdenv.isDarwin
-      then "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_${arch}.dmg"
-      else "system ${stdenv.system} not supported";
+in buildRubyGem rec {
+  name = "${gemName}-${version}";
+  gemName = "vagrant";
+  inherit version;
 
-  sha256 = {
-    "x86_64-linux"  = "0kyqchjsy747vbvhqiynz81kik8g0xqpkv70rz7hyr9x7fl9i51g";
-    "i686-linux"    = "0p3xhxy6shkd0393wjyj8qycdn3zqv60vnyz1b6zclz0kfah07zs";
-    "x86_64-darwin" = "01hr5j9k31hsdlcwv3srzk0lphd8w0n9z95jvfkschdyjm9clpwm";
-  }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
+  doCheck = true;
+  dontBuild = false;
+  src = fetchurl { inherit url sha256; };
 
-  arch = builtins.replaceStrings ["-linux" "-darwin"] ["" ""] stdenv.system;
+  patches = [
+    ./unofficial-installation-nowarn.patch
+  ];
 
-in stdenv.mkDerivation rec {
-  name = "vagrant-${version}";
-  inherit version;
+  postInstall = ''
+    wrapProgram "$out/bin/vagrant" \
+      --set GEM_PATH "${deps}/lib/ruby/gems/${ruby.version.libDir}"
+  '';
 
-  src = fetchurl {
-    inherit url sha256;
+  passthru = {
+    inherit ruby deps;
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tool for building complete development environments";
-    homepage    = http://vagrantup.com;
-    license     = licenses.mit;
-    maintainers = with maintainers; [ lovek323 globin jgeerds kamilchm ];
-    platforms   = with platforms; linux ++ darwin;
+    homepage = https://www.vagrantup.com/;
+    license = licenses.mit;
+    maintainers = with maintainers; [ aneeshusa ];
+    platforms = with platforms; linux ++ darwin;
   };
-
-  buildInputs = [ makeWrapper ]
-    ++ stdenv.lib.optional stdenv.isDarwin [ p7zip xar gzip cpio ];
-
-  unpackPhase = if stdenv.isLinux
-    then ''
-      ${dpkg}/bin/dpkg-deb -x "$src" .
-    ''
-    else ''
-      7z x $src
-      cd Vagrant/
-      xar -xf Vagrant.pkg
-      cd core.pkg/
-      cat Payload | gzip -d - | cpio -id
-
-      # move unpacked directories to match unpacked .deb from linux,
-      # so installPhase can be shared
-      mkdir -p opt/vagrant/ usr/
-      mv embedded opt/vagrant/embedded
-      mv bin usr/bin
-    '';
-
-  buildPhase = "";
-
-  installPhase = ''
-    sed -i "s|/opt|$out/opt|" usr/bin/vagrant
-
-    # overwrite embedded binaries
-
-    # curl: curl, curl-config
-    rm opt/vagrant/embedded/bin/{curl,curl-config}
-    ln -s ${curl.bin}/bin/curl opt/vagrant/embedded/bin
-    ln -s ${curl.dev}/bin/curl-config opt/vagrant/embedded/bin
-
-    # libarchive: bsdtar, bsdcpio
-    rm opt/vagrant/embedded/lib/libarchive*
-    ln -s ${libarchive}/lib/libarchive.so opt/vagrant/embedded/lib/libarchive.so
-    rm opt/vagrant/embedded/bin/{bsdtar,bsdcpio}
-    ln -s ${libarchive}/bin/bsdtar opt/vagrant/embedded/bin
-    ln -s ${libarchive}/bin/bsdcpio opt/vagrant/embedded/bin
-
-    # openssl: c_rehash, openssl
-    rm opt/vagrant/embedded/bin/{c_rehash,openssl}
-    ln -s ${openssl.bin}/bin/c_rehash opt/vagrant/embedded/bin
-    ln -s ${openssl.bin}/bin/openssl opt/vagrant/embedded/bin
-
-    # libiconv: iconv
-    rm opt/vagrant/embedded/bin/iconv
-    ln -s ${libiconv}/bin/iconv opt/vagrant/embedded/bin
-
-    # libxml: xml2-config, xmlcatalog, xmllint
-    rm opt/vagrant/embedded/bin/{xml2-config,xmlcatalog,xmllint}
-    ln -s ${libxml2.dev}/bin/xml2-config opt/vagrant/embedded/bin
-    ln -s ${libxml2.bin}/bin/xmlcatalog opt/vagrant/embedded/bin
-    ln -s ${libxml2.bin}/bin/xmllint opt/vagrant/embedded/bin
-
-    # libxslt: xslt-config, xsltproc
-    rm opt/vagrant/embedded/bin/{xslt-config,xsltproc}
-    ln -s ${libxslt.dev}/bin/xslt-config opt/vagrant/embedded/bin
-    ln -s ${libxslt.bin}/bin/xsltproc opt/vagrant/embedded/bin
-
-  '' + (stdenv.lib.optionalString (! stdenv.isDarwin) ''
-    # ruby: erb, gem, irb, rake, rdoc, ri, ruby
-    rm opt/vagrant/embedded/bin/{erb,gem,irb,rake,rdoc,ri,ruby}
-    ln -s ${ruby}/bin/erb opt/vagrant/embedded/bin
-    ln -s ${ruby}/bin/gem opt/vagrant/embedded/bin
-    ln -s ${ruby}/bin/irb opt/vagrant/embedded/bin
-    ln -s ${rake}/bin/rake opt/vagrant/embedded/bin
-    ln -s ${ruby}/bin/rdoc opt/vagrant/embedded/bin
-    ln -s ${ruby}/bin/ri opt/vagrant/embedded/bin
-    ln -s ${ruby}/bin/ruby opt/vagrant/embedded/bin
-
-    # ruby libs
-    rm -rf opt/vagrant/embedded/lib/*
-    for lib in ${ruby}/lib/*; do
-      ln -s $lib opt/vagrant/embedded/lib/''${lib##*/}
-    done
-
-    # libffi
-    ln -s ${libffi}/lib/libffi.so.6 opt/vagrant/embedded/lib/libffi.so.6
-
-  '') + ''
-    mkdir -p "$out"
-    cp -r opt "$out"
-    cp -r usr/bin "$out"
-    wrapProgram "$out/bin/vagrant" --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libxml2 libxslt ]}" \
-                                   --prefix LD_LIBRARY_PATH : "$out/opt/vagrant/embedded/lib"
-
-    install -D "opt/vagrant/embedded/gems/gems/vagrant-$version/contrib/bash/completion.sh" \
-      "$out/share/bash-completion/completions/vagrant"
-  '';
-
-  preFixup = ''
-    # 'hide' the template file from shebang-patching
-    chmod -x "$out/opt/vagrant/embedded/gems/gems/vagrant-$version/plugins/provisioners/salt/bootstrap-salt.sh"
-  '';
-
-  postFixup = ''
-    chmod +x "$out/opt/vagrant/embedded/gems/gems/vagrant-$version/plugins/provisioners/salt/bootstrap-salt.sh"
-  '' +
-  (stdenv.lib.optionalString stdenv.isDarwin ''
-    # undo the directory movement done in unpackPhase
-    mv $out/opt/vagrant/embedded $out/
-    rm -r $out/opt
-  '');
 }
diff --git a/pkgs/development/tools/vagrant/gemset.nix b/pkgs/development/tools/vagrant/gemset.nix
new file mode 100644
index 000000000000..3dd517388d21
--- /dev/null
+++ b/pkgs/development/tools/vagrant/gemset.nix
@@ -0,0 +1,457 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  builder = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
+      type = "gem";
+    };
+    version = "3.2.3";
+  };
+  childprocess = {
+    dependencies = ["ffi"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv";
+      type = "gem";
+    };
+    version = "0.6.3";
+  };
+  crack = {
+    dependencies = ["safe_yaml"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+      type = "gem";
+    };
+    version = "0.4.3";
+  };
+  diff-lcs = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+      type = "gem";
+    };
+    version = "1.3";
+  };
+  domain_name = {
+    dependencies = ["unf"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12hs8yijhak7p2hf1xkh98g0mnp5phq3mrrhywzaxpwz1gw5r3kf";
+      type = "gem";
+    };
+    version = "0.5.20170404";
+  };
+  erubis = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  fake_ftp = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rn7lxdk3sqc2i4v2c5k25b9ca1qnkdf32nv04y760aml9mszwf7";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  ffi = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0";
+      type = "gem";
+    };
+    version = "1.9.18";
+  };
+  gssapi = {
+    dependencies = ["ffi"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j93nsf9j57p7x4aafalvjg8hia2mmqv3aky7fmw2ck5yci343ix";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  gyoku = {
+    dependencies = ["builder"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wn0sl14396g5lyvp8sjmcb1hw9rbyi89gxng91r7w4df4jwiidh";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  hashdiff = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
+      type = "gem";
+    };
+    version = "0.3.7";
+  };
+  hashicorp-checkpoint = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15shgckjnxqpz1n9z6y4ax1dcnn5vdqcva29gdg2l7ny0g1w7c7m";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  http-cookie = {
+    dependencies = ["domain_name"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  httpclient = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  i18n = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00nsll7q89ab6k43dl3apxjhy4zidlgjmgb9mpk42bj3wk5zdyzf";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+      type = "gem";
+    };
+    version = "3.1.5";
+  };
+  little-plugger = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
+      type = "gem";
+    };
+    version = "1.1.4";
+  };
+  log4r = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv";
+      type = "gem";
+    };
+    version = "1.1.10";
+  };
+  logging = {
+    dependencies = ["little-plugger" "multi_json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
+      type = "gem";
+    };
+    version = "2.2.2";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m";
+      type = "gem";
+    };
+    version = "3.1";
+  };
+  mime-types-data = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm";
+      type = "gem";
+    };
+    version = "3.2016.0521";
+  };
+  multi_json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1raim9ddjh672m32psaa9niw67ywzjbxbdb8iijx3wv9k5b0pk2x";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  net-scp = {
+    dependencies = ["net-ssh"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  net-sftp = {
+    dependencies = ["net-ssh"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04674g4n6mryjajlcd82af8g8k95la4b1bj712dh71hw1c9vhw1y";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  net-ssh = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "013p5jb4wy0cq7x7036piw2a3s1i9p752ki1srx2m289mpz4ml3q";
+      type = "gem";
+    };
+    version = "4.1.0";
+  };
+  netrc = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  nori = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mvzd9ycjw8ydb9qy3daq3kdzqs2vpqvac4dqss6ckk4rfcjc637";
+      type = "gem";
+    };
+    version = "3.0.1";
+  };
+  rake = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01j8fc9bqjnrsxbppncai05h43315vmz9fwg28qdsgcjw9ck1d7n";
+      type = "gem";
+    };
+    version = "12.0.0";
+  };
+  rb-fsevent = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fbpmjypwxkb8r7y1kmhmyp6gawa4byw0yb3jc3dn9ly4ld9lizf";
+      type = "gem";
+    };
+    version = "0.10.2";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
+      type = "gem";
+    };
+    version = "0.9.10";
+  };
+  rb-kqueue = {
+    dependencies = ["ffi"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14mhzrhs2j43vj36i1qq4z29nd860shrslfik015f4kf1jiaqcrw";
+      type = "gem";
+    };
+    version = "0.2.5";
+  };
+  rest-client = {
+    dependencies = ["http-cookie" "mime-types" "netrc"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+  rspec-core = {
+    dependencies = ["rspec-support"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i";
+      type = "gem";
+    };
+    version = "3.5.4";
+  };
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+  rspec-its = {
+    dependencies = ["rspec-core" "rspec-expectations"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+  rspec-support = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+  ruby_dep = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v0qznxz999lx4vs76mr590r90i0cm5m76wwvgis7sq4y21l308l";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  rubyntlm = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p6bxsklkbcqni4bcq6jajc2n57g0w5rzn4r49c3lb04wz5xg0dy";
+      type = "gem";
+    };
+    version = "0.6.2";
+  };
+  rubyzip = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  safe_yaml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  thor = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d1g37j6sc7fkidf8rqlm3wh9zgyg3g7y8h2x1y34hmil5ywa8c3";
+      type = "gem";
+    };
+    version = "0.18.1";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14hr2dzqh33kqc0xchs8l05pf3kjcayvad4z1ip5rdjxrkfk8glb";
+      type = "gem";
+    };
+    version = "0.0.7.4";
+  };
+  vagrant = {
+    dependencies = ["childprocess" "erubis" "hashicorp-checkpoint" "i18n" "listen" "log4r" "net-scp" "net-sftp" "net-ssh" "rb-kqueue" "rest-client" "ruby_dep" "wdm" "winrm" "winrm-elevated" "winrm-fs"];
+  };
+  vagrant-spec = {
+    dependencies = ["childprocess" "log4r" "rspec" "thor"];
+    source = {
+      fetchSubmodules = false;
+      rev = "7ac8b4191de578e345b29acaf62ecc72c8e73be1";
+      sha256 = "03bpxlliyiny062p8a8vxyb1hymxpgfwliky4vlqn7lbm6z7n6kr";
+      type = "git";
+      url = "https://github.com/mitchellh/vagrant-spec.git";
+    };
+    version = "0.0.1";
+  };
+  wdm = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x5l2pn4x92734k6i2wcjbn2klmwgkiqaajvxadh35k74dgnyh18";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  webmock = {
+    dependencies = ["addressable" "crack" "hashdiff"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5";
+      type = "gem";
+    };
+    version = "2.3.2";
+  };
+  winrm = {
+    dependencies = ["builder" "erubis" "gssapi" "gyoku" "httpclient" "logging" "nori" "rubyntlm"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02lzbixdbjvhmb0byqx9rl9x4xx9pqc8jwm7y6mmp7w7mri72zh6";
+      type = "gem";
+    };
+    version = "2.2.3";
+  };
+  winrm-elevated = {
+    dependencies = ["winrm" "winrm-fs"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04krbwnj4cw7jy42w3n2y5kp2fbcp3v9mbf59pdhfk1py18bswcr";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  winrm-fs = {
+    dependencies = ["erubis" "logging" "rubyzip" "winrm"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vax34qbr3n6jifxyzr4nngaz8vrmzw6ydw21cnnrhidfkqgh7ja";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/tools/vagrant/unofficial-installation-nowarn.patch b/pkgs/development/tools/vagrant/unofficial-installation-nowarn.patch
new file mode 100644
index 000000000000..885959428956
--- /dev/null
+++ b/pkgs/development/tools/vagrant/unofficial-installation-nowarn.patch
@@ -0,0 +1,16 @@
+diff --git i/bin/vagrant w/bin/vagrant
+index 19df75033..682fae226 100755
+--- i/bin/vagrant
++++ w/bin/vagrant
+@@ -128,11 +128,6 @@ begin
+     end
+   end
+ 
+-  if !Vagrant.in_installer? && !Vagrant.very_quiet?
+-    # If we're not in the installer, warn.
+-    env.ui.warn(I18n.t("vagrant.general.not_in_installer") + "\n", prefix: false)
+-  end
+-
+   begin
+     # Execute the CLI interface, and exit with the proper error code
+     exit_status = env.cli(argv)