<section xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         version="5.0"
         xml:id="sec-instaling-virtualbox-guest">

<title>Installing in a Virtualbox guest</title>
<para>
  Installing NixOS into a Virtualbox guest is convenient for users who want to
  try NixOS without installing it on bare metal. If you want to use a pre-made
  Virtualbox appliance, it is available at <link
  xlink:href="https://nixos.org/nixos/download.html">the downloads page</link>.
  If you want to set up a Virtualbox guest manually, follow these instructions:
</para>

<orderedlist>

  <listitem><para>Add a New Machine in Virtualbox with OS Type "Linux / Other
  Linux"</para></listitem>

  <listitem><para>Base Memory Size: 768 MB or higher.</para></listitem>

  <listitem><para>New Hard Disk of 8 GB or higher.</para></listitem>

  <listitem><para>Mount the CD-ROM with the NixOS ISO (by clicking on
  CD/DVD-ROM)</para></listitem>

  <listitem><para>Click on Settings / System / Processor and enable
  PAE/NX</para></listitem>

  <listitem><para>Click on Settings / System / Acceleration and enable
  "VT-x/AMD-V" acceleration</para></listitem>

  <listitem><para>Save the settings, start the virtual machine, and continue
  installation like normal</para></listitem>

</orderedlist>

<para>
  There are a few modifications you should make in configuration.nix.
  Enable booting:
</para>

<programlisting>
boot.loader.grub.device = "/dev/sda";
</programlisting>

<para>
  Also remove the fsck that runs at startup. It will always fail to run,
  stopping your boot until you press <literal>*</literal>.
</para>

<programlisting>
boot.initrd.checkJournalingFS = false;
</programlisting>

<para>
  Shared folders can be given a name and a path in the host system in the
  VirtualBox settings (Machine / Settings / Shared Folders, then click on the
  "Add" icon). Add the following to the
  <literal>/etc/nixos/configuration.nix</literal> to auto-mount them:
</para>

<programlisting>
{ config, pkgs, ...} :
{
  ...

  fileSystems."/virtualboxshare" = {
    fsType = "vboxsf";
    device = "nameofthesharedfolder";
    options = [ "rw" ];
  };
}
</programlisting>

<para>
  The folder will be available directly under the root directory.
</para>

</section>
