Category:Virtualization: Difference between revisions

From NixOS Wiki
Klinger (talk | contribs)
mNo edit summary
Refactor page: split tables, improve introduction
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This guide page exists to point out resources related to virtualization in the Nix ecosystem.
This category page exists to list resources related to <strong>virtualisation</strong> in the Nix ecosystem.


You can use  
== Overview ==
 
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.


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


for virtualization. You can use [[Containers]] as well.
{| class="wikitable"
{| class="wikitable"
|+Install of host and install of guest additions
|+Installing a hypervisor on the host system.
!NixOS host
!Hypervisor
!NixOS guest
!Code snippet to be added to <code>configuration.nix</code>
!Code  
|-
|-
|QEMU/KVM
|QEMU/KVM
|
|{{file|configuration.nix|nix|
|virtualisation.libvirtd.enable = true;
<nowiki>
<nowiki>#</nowiki> if you use libvirtd on a desktop environment
{
programs.virt-manager.enable = true; # can be used to manage non-local hosts as well
  virtualisation.libvirtd.enable = true;
 
  # 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
|VirtualBox
|
|{{file|configuration.nix|nix|
|virtualisation.virtualbox.host.enable = true;
<nowiki>
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
{
<nowiki>#</nowiki> unfree Extension Pack
  virtualisation.virtualbox.host.enable = true;
nixpkgs.config.allowUnfree = true;
  users.extraGroups.vboxusers.members = [ "username" ];
virtualisation.virtualbox.host.enableExtensionPack = true;
 
  # Non-free Extension Pack
  nixpkgs.config.allowUnfree = true;
  virtualisation.virtualbox.host.enableExtensionPack = true;
}
</nowiki>
}}
|-
|-
|VMware
|VMware
|
|{{file|configuration.nix|nix|
|virtualisation.vmware.host.enable = true;
<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
|QEMU/KVM
|services.qemuGuest.enable =true;
|{{file|configuration.nix|nix|
services.spice-vdagentd.enable = true;
<nowiki>
{
  services.qemuGuest.enable =true;
  services.spice-vdagentd.enable = true;
}
</nowiki>
}}
|-
|-
|
|VirtualBox
|VirtualBox
|virtualisation.virtualbox.guest.enable = true;
|{{file|configuration.nix|nix|
virtualisation.virtualbox.guest.x11 = true;
<nowiki>
{
  virtualisation.virtualbox.guest.enable = true;
  virtualisation.virtualbox.guest.x11 = true;
}
</nowiki>
}}
|-
|-
|
|VMware
|VMware
|services.xserver.videoDrivers = [ "vmware" ];
|{{file|configuration.nix|nix|
virtualisation.vmware.guest.enable = true;
<nowiki>
{
  services.xserver.videoDrivers = [ "vmware" ];
  virtualisation.vmware.guest.enable = true;
}
</nowiki>
}}
|-
|-
|
|microvm.nix
|microvm.nix
|see  https://github.com/astro/microvm.nix
|Consult the [https://astro.github.io/microvm.nix/ MicroVM.nix documentation]
|}
 


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

Latest revision as of 22:15, 27 October 2024

This category page exists to list resources related to virtualisation in the Nix ecosystem.

Overview

You can use the following technologies for classic virtualisation on NixOS. You can also use containers, though they come with their own advantages and drawbacks.

Installing a hypervisor on the host system.
Hypervisor Code snippet to be added to configuration.nix
QEMU/KVM
configuration.nix
{
  virtualisation.libvirtd.enable = true;

  # if you use libvirtd on a desktop environment
  programs.virt-manager.enable = true; # can be used to manage non-local hosts as well
}
Xen Project Hypervisor
configuration.nix
{
  virtualisation.xen.enable = true;
}
VirtualBox
configuration.nix
{
  virtualisation.virtualbox.host.enable = true;
  users.extraGroups.vboxusers.members = [ "username" ];
  
  # Non-free Extension Pack
  nixpkgs.config.allowUnfree = true;
  virtualisation.virtualbox.host.enableExtensionPack = true;
}
VMware
configuration.nix
{
  virtualisation.vmware.host.enable = true;
}
Installing the appropriate guest utilities on a virtualised system.
Hypervisor the guest is running on Code snippet to be added to the guest's configuration.nix
QEMU/KVM
configuration.nix
{
  services.qemuGuest.enable =true;
  services.spice-vdagentd.enable = true;
}
VirtualBox
configuration.nix
{
  virtualisation.virtualbox.guest.enable = true;
  virtualisation.virtualbox.guest.x11 = true;
}
VMware
configuration.nix
{
  services.xserver.videoDrivers = [ "vmware" ];
  virtualisation.vmware.guest.enable = true;
}
microvm.nix Consult the MicroVM.nix documentation