about summary refs log tree commit diff
path: root/pkgs/development/tools/vagrant/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/vagrant/default.nix')
-rw-r--r--pkgs/development/tools/vagrant/default.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
new file mode 100644
index 000000000000..072b8eeff5ca
--- /dev/null
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, fetchurl, dpkg, curl, libarchive, openssl, ruby, rubyLibs, libiconv
+, libxml2, libxslt }:
+
+assert stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux";
+
+stdenv.mkDerivation rec {
+  name = "vagrant-1.6.3";
+
+  src =
+    if stdenv.system == "x86_64-linux" then
+      fetchurl {
+        url    = https://dl.bintray.com/mitchellh/vagrant/vagrant_1.6.3_x86_64.deb;
+        sha256 = "1gmdg92dw7afnvpji0wg4nzr7vhk8mrmcqk3hcrkwscby2f2bhqg";
+      }
+    else
+      fetchurl {
+        url    = https://dl.bintray.com/mitchellh/vagrant/vagrant_1.6.3_i686.deb;
+        sha256 = "1z26b6yghqgx8jbi2igf4kk4h6rzy869gli2vj7ayl7vbqdfvb60";
+      };
+
+  meta = with stdenv.lib; {
+    description = "A tool for building complete development environments";
+    homepage    = http://vagrantup.com;
+    license     = licenses.mit;
+    maintainers = with maintainers; [ lovek323 ];
+    platforms   = platforms.linux;
+  };
+
+  unpackPhase = ''
+    ${dpkg}/bin/dpkg-deb -x ${src} .
+  '';
+
+  buildPhase = false;
+
+  installPhase = ''
+    sed -i "s|/opt|$out/opt|" usr/bin/vagrant
+
+    # overwrite embedded binaries
+
+    # curl: curl
+    rm opt/vagrant/embedded/bin/curl
+    ln -s ${curl}/bin/curl opt/vagrant/embedded/bin
+
+    # libarchive: bsdtar, bsdcpio
+    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/c_rehash opt/vagrant/embedded/bin
+    ln -s ${openssl}/bin/openssl opt/vagrant/embedded/bin
+
+    # ruby: erb, gem, irb, rake, rdoc, ri, ruby, testrb
+    rm opt/vagrant/embedded/bin/{erb,gem,irb,rake,rdoc,ri,ruby,testrb}
+    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 ${rubyLibs.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
+    ln -s ${ruby}/bin/testrb 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}/bin/xml2-config opt/vagrant/embedded/bin
+    ln -s ${libxml2}/bin/xmlcatalog opt/vagrant/embedded/bin
+    ln -s ${libxml2}/bin/xmllint opt/vagrant/embedded/bin
+
+    # libxslt: xslt-config, xsltproc
+    rm opt/vagrant/embedded/bin/{xslt-config,xsltproc}
+    ln -s ${libxslt}/bin/xslt-config opt/vagrant/embedded/bin
+    ln -s ${libxslt}/bin/xsltproc opt/vagrant/embedded/bin
+
+    mkdir -p "$out"
+    cp -r opt "$out"
+    cp -r usr/bin "$out"
+  '';
+
+  preFixup = ''
+    # 'hide' the template file from shebang-patching
+    chmod -x $out/opt/vagrant/embedded/gems/gems/bundler-1.6.2/lib/bundler/templates/Executable
+  '';
+
+  postFixup = ''
+    chmod +x $out/opt/vagrant/embedded/gems/gems/bundler-1.6.2/lib/bundler/templates/Executable
+  '';
+}