vm tests: idmap-capable store for the userns subtest, restart nix-daemon via its socket
This commit is contained in:
parent
3e5b5b54a2
commit
65d75da8db
2 changed files with 13 additions and 1 deletions
|
|
@ -103,6 +103,13 @@ pkgs.testers.runNixOSTest {
|
||||||
../host-modules/hive-priv.nix
|
../host-modules/hive-priv.nix
|
||||||
];
|
];
|
||||||
virtualisation.memorySize = 2048;
|
virtualisation.memorySize = 2048;
|
||||||
|
# The store is an erofs image, which the kernel can idmap; the default
|
||||||
|
# 9p-backed store cannot. The userns subtest binds the image over the
|
||||||
|
# overlay that writableStore layers on it.
|
||||||
|
virtualisation.useNixStoreImage = true;
|
||||||
|
# With an image the store is read-only unless this is set; `nix-env -i`
|
||||||
|
# writes to it, and register-nix-paths creates /nix/store/.links.
|
||||||
|
virtualisation.writableStore = true;
|
||||||
# The script `nix-env -i`s these store paths inside the container, which
|
# The script `nix-env -i`s these store paths inside the container, which
|
||||||
# shares the host's store; the VM has no substituter to fetch them.
|
# shares the host's store; the VM has no substituter to fetch them.
|
||||||
virtualisation.additionalPaths = [
|
virtualisation.additionalPaths = [
|
||||||
|
|
@ -346,6 +353,10 @@ pkgs.testers.runNixOSTest {
|
||||||
host.succeed(f"stat -c %u:%g {NS_DIR}/config/cfg | grep -x 0:0")
|
host.succeed(f"stat -c %u:%g {NS_DIR}/config/cfg | grep -x 0:0")
|
||||||
host.succeed("stat -c %u:%g ${nsSocketDir} | grep -x ${dataOwner}:${dataOwner}")
|
host.succeed("stat -c %u:%g ${nsSocketDir} | grep -x ${dataOwner}:${dataOwner}")
|
||||||
|
|
||||||
|
# nspawn idmaps the /nix/store bind under a user namespace, which an
|
||||||
|
# overlayfs store refuses; the image under it accepts it. The remaining
|
||||||
|
# steps write nothing to the store.
|
||||||
|
host.succeed("mount --bind /nix/.ro-store /nix/store")
|
||||||
boot_ns = lambda: (
|
boot_ns = lambda: (
|
||||||
host.succeed(f"nixos-container start {NS}"),
|
host.succeed(f"nixos-container start {NS}"),
|
||||||
host.wait_until_succeeds(f"nixos-container run {NS} -- systemctl is-active multi-user.target"),
|
host.wait_until_succeeds(f"nixos-container run {NS} -- systemctl is-active multi-user.target"),
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,8 @@ pkgs.testers.runNixOSTest {
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"cp --remove-destination $(readlink -f /etc/nix/nix.conf) /etc/nix/nix.conf "
|
"cp --remove-destination $(readlink -f /etc/nix/nix.conf) /etc/nix/nix.conf "
|
||||||
"&& sed -i 's/^max-jobs = 0$/max-jobs = 1/' /etc/nix/nix.conf "
|
"&& sed -i 's/^max-jobs = 0$/max-jobs = 1/' /etc/nix/nix.conf "
|
||||||
"&& systemctl restart nix-daemon.socket nix-daemon.service"
|
"&& systemctl stop nix-daemon.socket nix-daemon.service "
|
||||||
|
"&& systemctl start nix-daemon.socket"
|
||||||
)
|
)
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"NIX_CONFIG='experimental-features = nix-command' "
|
"NIX_CONFIG='experimental-features = nix-command' "
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue