summary refs log tree commit diff
path: root/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
diff options
context:
space:
mode:
authorSander van der Burg <s.vanderburg@tudelft.nl>2009-10-13 13:32:00 +0000
committerSander van der Burg <s.vanderburg@tudelft.nl>2009-10-13 13:32:00 +0000
commitfef3041a74f60f023ef448fe76446bcf100169ef (patch)
treebcbce6b735d54964ca1c3966a05d85cc471ecc75 /pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
parent223789d4118e3feccb5e88faa54f3ed3567e633c (diff)
downloadnixlib-fef3041a74f60f023ef448fe76446bcf100169ef.tar
nixlib-fef3041a74f60f023ef448fe76446bcf100169ef.tar.gz
nixlib-fef3041a74f60f023ef448fe76446bcf100169ef.tar.bz2
nixlib-fef3041a74f60f023ef448fe76446bcf100169ef.tar.lz
nixlib-fef3041a74f60f023ef448fe76446bcf100169ef.tar.xz
nixlib-fef3041a74f60f023ef448fe76446bcf100169ef.tar.zst
nixlib-fef3041a74f60f023ef448fe76446bcf100169ef.zip
Added VirtualBox guest additions package. Currently only builds on i686-linux
svn path=/nixpkgs/trunk/; revision=17778
Diffstat (limited to 'pkgs/applications/virtualization/virtualbox/guest-additions/default.nix')
-rw-r--r--pkgs/applications/virtualization/virtualbox/guest-additions/default.nix94
1 files changed, 94 insertions, 0 deletions
diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
new file mode 100644
index 000000000000..655028bc8b88
--- /dev/null
+++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel
+, libX11, libXt, libXext, libXmu, libXcomposite}:
+
+stdenv.mkDerivation {
+  name = "VirtualBox-GuestAdditions-3.0.8";
+  src = fetchurl {
+    url = http://download.virtualbox.org/virtualbox/3.0.8/VBoxGuestAdditions_3.0.8.iso;
+    sha256 = "0ia231klahqpn21qkn9x3bvy0mxaz051j8hgqv1afvnx2f3gjsvf";
+  };
+  KERN_DIR = "${kernel}/lib/modules/*/build";
+  buildInputs = [ patchelf cdrkit ];
+  buildCommand = ''
+    isoinfo -J -i $src -x /VBoxLinuxAdditions-x86.run > ./VBoxLinuxAdditions-x86.run
+  
+    chmod 755 ./VBoxLinuxAdditions-x86.run
+    ./VBoxLinuxAdditions-x86.run --noexec --keep
+    cd linux
+
+    # Build kernel modules
+    cd module
+    for i in `find . -name Makefile`
+    do
+        sed -i -e "s/depmod/echo/g" $i
+    done
+    make
+    cd ..
+
+    # Change the interpreter for various binaries
+    for i in ./{mount.vboxsf,vboxadd-service,VBoxClient,VBoxControl}
+    do
+        patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2 $i
+    done
+
+    # Change rpath for various binaries and libraries
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXt}/lib:${libXext}/lib:${libXmu}/lib ./VBoxClient
+
+    for i in ./VBoxOGL{arrayspu,errorspu,feedbackspu,packspu,passthroughspu}.so
+    do
+        patchelf --set-rpath $out/lib $i
+    done
+
+    patchelf --set-rpath $out/lib:${libXcomposite}/lib ./VBoxOGL.so
+
+    # Remove references to /usr from various scripts and files
+    sed -i -e "s|/usr/bin|$out/bin|" vboxclient.desktop
+    sed -i -e "s|/usr/bin|$out/bin|" 98vboxadd-xclient
+
+    # Install binaries
+    ensureDir $out/sbin
+    install -m 4755 mount.vboxsf $out/sbin/mount.vboxsf
+    install -m 755 vboxadd-service $out/sbin/vboxadd-service
+
+    ensureDir $out/bin
+    install -m 755 VBoxControl $out/bin/VBoxControl
+    install -m 755 VBoxClient $out/bin/VBoxClient
+    install -m 755 VBoxRandR.sh $out/bin/VBoxRandR
+    install -m 755 98vboxadd-xclient $out/bin/VBoxClient-all
+
+    # Install OpenGL libraries
+    ensureDir $out/lib
+    cp -v VBoxOGL*.so $out/lib
+    ensureDir $out/lib/dri
+    ln -s $out/lib/VBoxOGL.so $out/lib/dri/vboxvideo_dri.so
+    
+    # Install desktop file
+    ensureDir $out/share/applications
+    cp -v vboxclient.desktop $out/share/applications
+    
+    # Install Xorg drivers
+    ensureDir $out/lib/xorg/modules/{drivers,input}
+    install -m 644 vboxvideo_drv_15.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so
+    install -m 644 vboxmouse_drv_15.so $out/lib/xorg/modules/input/vboxmouse_drv.so
+    
+    # Install kernel modules
+    cd module
+    kernelVersion=$(cd ${kernel}/lib/modules; ls)
+    export MODULE_DIR=$out/lib/modules/$kernelVersion/misc
+    ensureDir $MODULE_DIR    
+    make install
+    cd vboxvideo_drm
+    make install
+  '';
+  
+  meta = {
+    description = "Guest additions for VirtualBox";
+    longDescriptions = ''
+      Various add-ons which makes NixOS work better as guest OS inside VirtualBox.
+      This add-on provides support for dynamic resizing of the X Display, shared
+      host/guest clipboard support and guest OpenGL support.
+    '';
+    license = "GPL";
+    maintainers = [ lib.maintainers.sander ];
+  };
+}