Category:Virtualization: Difference between revisions

From NixOS Wiki
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]]

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