From 72a931a71a4722c0e56b231d07787bef608ceedc Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 5 Aug 2025 21:31:36 +0900 Subject: nix: interactive nixos vm This is useful for quickly spinning up an ephemeral hakurei environment for testing changes or reproducing vm test failures. Signed-off-by: Ophestra --- test/interactive/vm.nix | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/interactive/vm.nix (limited to 'test/interactive/vm.nix') diff --git a/test/interactive/vm.nix b/test/interactive/vm.nix new file mode 100644 index 00000000..c1239a64 --- /dev/null +++ b/test/interactive/vm.nix @@ -0,0 +1,55 @@ +{ + virtualisation.vmVariant.virtualisation = { + memorySize = 4096; + qemu.options = [ + "-vga none -device virtio-gpu-pci" + "-smp 8" + ]; + + mountHostNixStore = true; + writableStore = true; + writableStoreUseTmpfs = false; + + sharedDirectories = { + cwd = { + target = "/mnt/.ro-cwd"; + source = ''"$OLDPWD"''; + securityModel = "none"; + }; + }; + + fileSystems = { + "/mnt/.ro-cwd".options = [ + "ro" + "noatime" + ]; + "/mnt/cwd".overlay = { + lowerdir = [ "/mnt/.ro-cwd" ]; + upperdir = "/tmp/.cwd/upper"; + workdir = "/tmp/.cwd/work"; + }; + + "/mnt/src".overlay = { + lowerdir = [ ../.. ]; + upperdir = "/tmp/.src/upper"; + workdir = "/tmp/.src/work"; + }; + }; + }; + + systemd.services = { + logrotate-checkconf.enable = false; + hakurei-src-fix-ownership = { + wantedBy = [ "multi-user.target" ]; + wants = [ "mnt-src.mount" ]; + after = [ "mnt-src.mount" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + chown -R alice:users /mnt/src/ + ''; + }; + }; +} -- cgit v1.3.1