nix: interactive nixos vm
All checks were successful
Test / Hakurei (push) Successful in 41s
Test / Create distribution (push) Successful in 32s
Test / Sandbox (push) Successful in 39s
Test / Sandbox (race detector) (push) Successful in 39s
Test / Hpkg (push) Successful in 40s
Test / Hakurei (race detector) (push) Successful in 41s
Test / Flake checks (push) Successful in 1m26s
All checks were successful
Test / Hakurei (push) Successful in 41s
Test / Create distribution (push) Successful in 32s
Test / Sandbox (push) Successful in 39s
Test / Sandbox (race detector) (push) Successful in 39s
Test / Hpkg (push) Successful in 40s
Test / Hakurei (race detector) (push) Successful in 41s
Test / Flake checks (push) Successful in 1m26s
This is useful for quickly spinning up an ephemeral hakurei environment for testing changes or reproducing vm test failures. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
55
test/interactive/vm.nix
Normal file
55
test/interactive/vm.nix
Normal file
@@ -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/
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user