I am trying to come up with a quick iterative way of creating nixos VMs that i can spin up, reboot and has it’s own virtual drive, filesystem etc.
The motivation of this was when i was testing nixos modules disko and impermanence and i found that there wasn’t a way (AFAIK) to have an isolated VM where i had full control of it’s disk configuration and filesystem.
The approach that i like but doesn’t work is to use build-vm
.
nixos-rebuild build-vm --flake .#test
result/bin/run-nixos-vm
and then declare virtualisation options in the flake
virtualisation.vmVariant = {
virtualisation = {
diskSize = 100000;
memorySize = 8192; y.
cores = 3;
graphics = true;
};
};
i am able to start up this VM, but i cannot do any disk configuration within it i.e. i get errors when running parted
commands. i believe this is because it uses a p9 filesystem but could be wrong. Either way i have attempted to create a vm filesystem that uses tmpfs or ext4 similar to if i did a live install of nixos from an iso image. To achieve this i tried to make use of the filesystem options within the nixos virtualisation
module. But this seems to have no impact on the VM and i get the same output from lsblk
and df -Th
i.e. a p9 filesystem which errors on reformat/partition.
Does anybody know how to create a VM using build-vm
and have the VM load with a pre-specified filesystem?