NixOS:nixos-rebuild build-vm: Difference between revisions
imported>Mcdonc Using virtualisation.cores and virtualisation.memorySize and importing virtualisation/qemu-vm.nix effectively tells Nix your host system is a VM, and all kinds of hilarity ensues... see https://github.com/NixOS/nixpkgs/issues/247413 |
imported>Mcdonc Get setting names right |
||
Line 28: | Line 28: | ||
https://discourse.nixos.org/t/default-login-and-password-for-nixos/4683/2 | https://discourse.nixos.org/t/default-login-and-password-for-nixos/4683/2 | ||
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 set options <code>virtualisation.vmVariant.cores</code> and <code>virtualisation.vmVariant.memorySize</code> to enlarge the CPU cores and memory size for the 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 set options <code>virtualisation.vmVariant.virtualisation.cores</code> and <code>virtualisation.vmVariant.virtualisation.memorySize</code> to enlarge the CPU cores and memory size for the virtual machine. | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> |
Revision as of 00:36, 6 August 2023
A virtual machine can be created , it will use your /etc/nixos/configuration.nix to make a 'clone' of your system. Useful for testing new configurations.
nixos-rebuild build-vm
nixos-rebuild build-vm -I nixos-config=./configuration.nix -I nix_path='<nixpkgs/nixos>' --max-jobs 4 --show-trace # e.g. to specify the environment variables / cores used
You will not be able to login to this virtual machine, as the passwords are not carried over to the virtual machine you build.
You should have user nixosvmtest (isSystemUser or isNormalUser)
users.users.nixosvmtest.isSystemUser = true ;
users.users.nixosvmtest.initialPassword = "test";
If you have a user called nixosvmtest for example, you can add
users.users.nixosvmtest.group = "nixosvmtest";
users.groups.nixosvmtest = {};
to your /etc/nixos/configuration.nix
you should now be able to login and test your system with this user and password.
https://discourse.nixos.org/t/default-login-and-password-for-nixos/4683/2
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 set options virtualisation.vmVariant.virtualisation.cores
and virtualisation.vmVariant.virtualisation.memorySize
to enlarge the CPU cores and memory size for the virtual machine.
{
virtualisation.vmVariant = {
# following configuration is added only when building VM with build-vm
virtualisation = {
memorySize = 2048; # Use 2048MiB memory.
cores = 3;
};
}
Troubleshooting
Still can't login after updating configuration
When running a virtual machine a file called $hostname.qcow2
is created in your current working directory. After changing your /etc/nixos/configuration.nix
delete this file, rebuild and then start the new virtual machine. Now you should be able to login.
Alternatives
Bootable ISO
Build it as a bootable ISO image:
VM
{
...
imports = [
<nixos/nixos/modules/virtualisation/virtualbox-image.nix> ]
...
nix build -f '<nixpkgs/nixos>' -I nixos-config=./configuration.nix config.system.build.virtualBoxOVA
Source