Fix NFS shares never mounting on lxc-docker

Two compounding bugs, confirmed live on the running lxc-docker
container (vmid 102 on pve.sweet.home):

1. x-systemd.automount never works inside any Linux container --
   systemd logs "Starting of <unit>.automount unsupported" for every
   share and never mounts them. modules/docker/mount-data.nix and
   modules/raspi/mount-data.nix now key off config.boot.isContainer
   (set true by nixpkgs' proxmox-lxc.nix) to mount eagerly with
   `nofail` there instead, while VM-based docker targets keep automount
   unchanged.

2. The container's Proxmox `features` never included `mount=nfs`, so
   AppArmor blanket-denies the nfs/rpc_pipefs mount syscalls NFS
   needs ("permission denied"). scripts/env.sh's
   PROXMOX_DEFAULT_LXC_FEATURES now includes mount=nfs;nfs4 for future
   lxc-* containers -- the semicolon required quoting the --features
   value in create-proxmox-resource.sh's remote pct-create command,
   since it's sent as a raw string for the remote shell to parse and an
   unquoted `;` would be read as a command separator.

The already-running container needs a matching `pct set --features`
plus a restart to pick this up -- that's an operator step outside this
repo.
This commit is contained in:
2026-07-20 12:56:42 +00:00
parent 17dd00bee1
commit 6847a7a6f4
4 changed files with 45 additions and 16 deletions
+15 -10
View File
@@ -1,5 +1,15 @@
{ config, lib, pkgs, vars, ... }:
let
# `x-systemd.automount` never works inside a Linux container (LXC
# included, regardless of privilege) -- confirmed live on lxc-docker:
# systemd logs "Starting of <unit>.automount unsupported" for every
# share and never mounts them. Mount eagerly there instead, with
# `nofail` so a boot with the NFS server unreachable doesn't hang
# (the VM platforms rely on automount itself to get that same
# non-blocking behavior, so they don't need `nofail` too).
automountOpts = if config.boot.isContainer then [ "nofail" ] else [ "x-systemd.automount" ];
in
{
fileSystems = {
${vars.nfsShares.dockerConfig.mountpoint} = {
@@ -9,9 +19,8 @@
options = [
"nfsvers=4.2"
"_netdev"
"x-systemd.automount"
"noatime"
];
] ++ automountOpts;
};
${vars.nfsShares.dockerDatabases.mountpoint} = {
@@ -21,9 +30,8 @@
options = [
"nfsvers=4.2"
"_netdev"
"x-systemd.automount"
"noatime"
];
] ++ automountOpts;
};
${vars.nfsShares.dockerVolumes.mountpoint} = {
@@ -33,9 +41,8 @@
options = [
"nfsvers=4.2"
"_netdev"
"x-systemd.automount"
"noatime"
];
] ++ automountOpts;
};
${vars.nfsShares.nextcloudData.mountpoint} = {
@@ -45,9 +52,8 @@
options = [
"nfsvers=4.2"
"_netdev"
"x-systemd.automount"
"noatime"
];
] ++ automountOpts;
};
${vars.nfsShares.raspiVolumes.mountpoint} = {
@@ -57,9 +63,8 @@
options = [
"nfsvers=4.2"
"_netdev"
"x-systemd.automount"
"noatime"
];
] ++ automountOpts;
};
};
}