NixOS:nixos-rebuild build-vm: Difference between revisions
m Add subtitle and fix formatting |
Restructured page, add more text more sections |
||
Line 1: | Line 1: | ||
The commands | |||
<code> | * <code>nixos-rebuild build-vm</code> | ||
nixos-rebuild build-vm | * <code>nixos-rebuild build-vm-with-bootloader</code> | ||
will build a virtual machine running NixOS with your system's configuration (usually <code>/etc/nixos/configuration.nix</code>) by using [[Qemu]]. | |||
One of its usages is for testing new configurations without needing to try them on the host. | |||
= Usage = | |||
== Create login user == | |||
Before calling one of the commands above, you will have to create a user with an initial password first which you can login to because your passwords of your current system are not carried over to the virtual machine. | |||
Here is an example for a default user which you can simply add to your system config: | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
users.users.nixosvmtest.isSystemUser = true ; | users.users.nixosvmtest.isSystemUser = true; | ||
users.users.nixosvmtest.initialPassword = "test"; | users.users.nixosvmtest.initialPassword = "test"; | ||
users.groups.nixosvmtest = {}; | |||
users.users.nixosvmtest.group = "nixosvmtest"; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
See this [https://discourse.nixos.org/t/default-login-and-password-for-nixos/4683/2 discourse-answer] for more information. | |||
== Create and run virtual machine == | |||
Create the virtual machine by using of the commands above. Afterwards you will find an executable file in <code>./result/bin</code>. By executing the file qemu will open up and you can start testing the system. | |||
== Examples == | |||
<syntaxhighlight lang="bash"> | |||
# build vm of your system config | |||
nixos-rebuild build-vm | |||
# e.g. to specify the environment variables / cores used | |||
nixos-rebuild build-vm\ | |||
-I nixos-config=./configuration.nix\ | |||
-I nix_path='<nixpkgs/nixos>'\ | |||
--max-jobs 4\ | |||
--show-trace | |||
# From the man page: This boots using the regular boot loader of your configuration | |||
# rather than booting directly into the kernel and initial ramdisk of the system. | |||
nixos-rebuild build-vm-with-bootloader | |||
</syntaxhighlight> | |||
= Configure Virtual Machine = | |||
By default, the virtual machine is configured to have 1 CPU and 1024MiB memory. It may be too small for testing with desktop environment enabled inside. You can | By default, the virtual machine is configured to have 1 CPU and 1024MiB memory. It may be too small for testing with a desktop environment enabled inside. You can configure the allocated resources with either | ||
* [https://search.nixos.org/options?channel=25.05&show=virtualisation.vmVariant&query=virtualisation.vmVariant <code>virtualisation.vmVariant</code>] | |||
* [https://search.nixos.org/options?channel=25.05&show=virtualisation.vmVariantWithBootLoader&query=virtualisation.vmVariant <code>virtualisation.vmVariantWithBootloader</code>] | |||
by adding the following to your config: | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
# replace `vmVariant` with `vmVariantWithBootLoader` if you are going to use `build-vm-with-bootloder`. | |||
virtualisation.vmVariant = { | virtualisation.vmVariant = { | ||
# following configuration is added only when building VM with build-vm | # the following configuration is added only when building VM with `build-vm` | ||
virtualisation = { | virtualisation = { | ||
memorySize = | memorySize = 2048; # use 2048MiB memory | ||
cores = 3; | cores = 3; # use 3 cpu cores | ||
}; | }; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Troubleshooting == | == Troubleshooting == |