Category:Virtualization: Difference between revisions

imported>Neongreensniper
Refactor page: split tables, improve introduction
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This category page exists to list resources related to <strong>virtualisation</strong> in the Nix ecosystem.
== Overview ==
== Overview ==


This guide page exists to point out resources related to virtualization in the Nix ecosystem.
You can use the following technologies for classic virtualisation on NixOS. You can also use [[:Category:Container|containers]], though they come with their own advantages and drawbacks.
 
=== Virtualizing NixOS ===
 
This section is for information about running NixOS as a guest virtual machine.
 
==== VirtualBox ====
 
NixOS.org hosts an [https://nixos.org/download.html#nixos-virtualbox official VirtualBox virtual appliance image] in OVA format.
 
==== VMware ====
 
See [[VMware]] for help using VMware to virtualize NixOS.
 
==== microvm.nix ====
 
NixOS on NixOS with configurable virtual machine manager: https://github.com/astro/microvm.nix
 
=== NixOS as a VM host ===
 
This section covers if you want to run virtual machines from within Nix(OS).
 
====VMware====
1. In your configuration.nix  add the following lines
 
<code> 
environment.systemPackages = [
    pkgs.linuxKernel.packages.linux_6_1.vmware # Kernel modules for vmware if you are running Linux 6.1.**
    pkgs.vmware-workstation
  ];
</code>
2. Enable the kernel module in configuration.nix
<code> virtualisation.vmware.host.enable = true; </code>
3. reboot
 
==== VirtualBox ====
 
See [[VirtualBox]] for more.


* QEMU/KVM (see [[Virt-manager]])
* [[VirtualBox]]
* [[VMware]]
* The [[Xen Project Hypervisor]]


==== QEMU/KVM ====
{| class="wikitable"
|+Installing a hypervisor on the host system.
!Hypervisor
!Code snippet to be added to <code>configuration.nix</code>
|-
|QEMU/KVM
|{{file|configuration.nix|nix|
<nowiki>
{
  virtualisation.libvirtd.enable = true;


See [[Virt-manager]]
  # if you use libvirtd on a desktop environment
  programs.virt-manager.enable = true; # can be used to manage non-local hosts as well
}
</nowiki>
}}
|-
|Xen Project Hypervisor
|{{file|configuration.nix|nix|
<nowiki>
{
  virtualisation.xen.enable = true;
}
</nowiki>
}}
|-
|VirtualBox
|{{file|configuration.nix|nix|
<nowiki>
{
  virtualisation.virtualbox.host.enable = true;
  users.extraGroups.vboxusers.members = [ "username" ];
 
  # Non-free Extension Pack
  nixpkgs.config.allowUnfree = true;
  virtualisation.virtualbox.host.enableExtensionPack = true;
}
</nowiki>
}}
|-
|VMware
|{{file|configuration.nix|nix|
<nowiki>
{
  virtualisation.vmware.host.enable = true;
}
</nowiki>
}}
|}


{| class="wikitable"
|+Installing the appropriate guest utilities on a virtualised system.
!Hypervisor the guest is running on
!Code snippet to be added to the guest's <code>configuration.nix</code>
|-
|QEMU/KVM
|{{file|configuration.nix|nix|
<nowiki>
{
  services.qemuGuest.enable =true;
  services.spice-vdagentd.enable = true;
}
</nowiki>
}}
|-
|VirtualBox
|{{file|configuration.nix|nix|
<nowiki>
{
  virtualisation.virtualbox.guest.enable = true;
  virtualisation.virtualbox.guest.x11 = true;
}
</nowiki>
}}
|-
|VMware
|{{file|configuration.nix|nix|
<nowiki>
{
  services.xserver.videoDrivers = [ "vmware" ];
  virtualisation.vmware.guest.enable = true;
}
</nowiki>
}}
|-
|microvm.nix
|Consult the [https://astro.github.io/microvm.nix/ MicroVM.nix documentation]


[[Category:Guide]]
[[Category:Software]]
[[Category:Virtualization]]
[[Category:Desktop]]
[[Category:Server]]