Files
nixpkgs/nixos/tests/nextcloud/home-bindmount.nix
Maximilian Bosch ef3a9736aa nixos/nextcloud: add test verifying that bind-mounts and special places of /var/lib/nextcloud are OK
This is a regular source for confusion and had no test-coverage so far,
so adding two tests that

* Make sure Nextcloud running in a different location (tmpfs mount here as mock for the mount
  of a different disk).

* A bind-mount of Nextcloud from a disk-mount to /var/lib/nextcloud can
  be created.
2026-08-02 19:07:28 +02:00

69 lines
2.0 KiB
Nix

{
name,
pkgs,
testBase,
system,
...
}:
with import ../../lib/testing-python.nix { inherit system pkgs; };
runTest (
{ lib, ... }:
{
inherit name;
meta.maintainers = lib.teams.nextcloud.members;
imports = [ testBase ];
nodes.nextcloud = { pkgs, ... }: {
# Make sure that inside our tmpfs mount an actual directory for Nextcloud exists.
boot.initrd.systemd.tmpfiles.settings."nextcloud"."/sysroot/mnt/nextcloud".d = { };
boot.initrd.systemd.mounts = [
# Create a mocked /mnt/nextcloud. Only a tmpfs here, but in reality this could e.g.
# be the mount of a larger disk.
{
unitConfig.DefaultDependencies = "no";
conflicts = [ "umount.target" ];
wantedBy = [ "initrd.target" ];
before = [ "systemd-tmpfiles-setup-sysroot.service" ];
options = "x-initrd.mount";
where = "/sysroot/mnt";
what = "tmpfs";
type = "tmpfs";
}
# Bind some directory to /var/lib/nextcloud, the place that the Nextcloud module expects
# by default.
{
conflicts = [ "umount.target" ];
wantedBy = [ "initrd.target" ];
before = [ "systemd-tmpfiles-setup-sysroot.service" ];
options = "x-initrd.mount,bind";
where = "/sysroot/var/lib/nextcloud";
what = "/sysroot/mnt/nextcloud";
type = "none";
}
];
environment.systemPackages = [
pkgs.util-linux
];
services.nextcloud = {
config.dbtype = "sqlite";
};
};
test-helpers.init = ''
import json
mnts = json.loads(nextcloud.succeed("findmnt /var/lib/nextcloud -J"))["filesystems"]
t.assertEqual(1, len(mnts))
mnt = mnts[0]
t.assertEqual("tmpfs[/nextcloud]", mnt["source"])
t.assertEqual("/var/lib/nextcloud", mnt["target"])
'';
test-helpers.extraTests = ''
nextcloud.succeed("test -d /mnt/nextcloud/data/root")
'';
}
)