30 lines
1.1 KiB
Nix
30 lines
1.1 KiB
Nix
{ pkgs, ... }:
|
|
{
|
|
# NFS client for /data/services
|
|
# Mounts from data-services.service.consul (Consul DNS for automatic failover)
|
|
# The NFS server registers itself in Consul, so this will automatically
|
|
# point to whichever host is currently running the NFS server
|
|
#
|
|
# Uses persistent mount (not automount) with nofail to prevent blocking boot.
|
|
# The mount is established at boot time and persists - no auto-unmount.
|
|
# This prevents issues with Docker bind mounts seeing empty automount stubs.
|
|
|
|
imports = [
|
|
./wait-for-dns-ready.nix
|
|
];
|
|
|
|
fileSystems."/data/services" = {
|
|
device = "data-services.service.consul:/persist/services";
|
|
fsType = "nfs";
|
|
options = [
|
|
"nofail" # Don't block boot if mount fails
|
|
"x-systemd.mount-timeout=30s" # Timeout for mount attempts
|
|
"x-systemd.after=wait-for-dns-ready.service" # Wait for DNS to actually work
|
|
"_netdev" # Network filesystem (wait for network)
|
|
];
|
|
};
|
|
|
|
# Ensure NFS client packages are available
|
|
environment.systemPackages = [ pkgs.nfs-utils ];
|
|
}
|