diff --git a/modules/services/network-filesystems/nfsd.nix b/modules/services/network-filesystems/nfsd.nix index dba2db22621f..b4dc014d68ed 100644 --- a/modules/services/network-filesystems/nfsd.nix +++ b/modules/services/network-filesystems/nfsd.nix @@ -69,7 +69,7 @@ in services.rpcbind.enable = true; - services.nfs.client.enable = true; # needed for statd and idmapd + boot.supportedFilesystems = [ "nfs" ]; # needed for statd and idmapd environment.systemPackages = [ pkgs.nfsUtils ]; diff --git a/modules/tasks/filesystems.nix b/modules/tasks/filesystems.nix index 57a020a4a256..739d63bf4790 100644 --- a/modules/tasks/filesystems.nix +++ b/modules/tasks/filesystems.nix @@ -184,12 +184,6 @@ in '' # Ensure that this job is restarted when fstab changed: # ${fstab} - - ${optionalString config.services.nfs.client.enable '' - ensure statd || true - ensure idmapd || true - ''} - echo "mounting filesystems..." ''; diff --git a/modules/tasks/filesystems/nfs.nix b/modules/tasks/filesystems/nfs.nix index e54cb814f500..740a3b6e4473 100644 --- a/modules/tasks/filesystems/nfs.nix +++ b/modules/tasks/filesystems/nfs.nix @@ -31,23 +31,9 @@ in { - ###### interface - - options = { - - services.nfs.client.enable = mkOption { - default = any (fs: fs.fsType == "nfs" || fs.fsType == "nfs4") config.fileSystems; - description = '' - Whether to enable support for mounting NFS filesystems. - ''; - }; - - }; - - ###### implementation - config = mkIf config.services.nfs.client.enable { + config = mkIf (any (fs: fs == "nfs" || fs == "nfs4") config.boot.supportedFilesystems) { services.rpcbind.enable = true; @@ -63,6 +49,13 @@ in environment.etc = singleton idmapdConfFile; + # Ensure that statd and idmapd are started before mountall. + jobs.mountall.preStart = + '' + ensure statd || true + ensure idmapd || true + ''; + jobs.statd = { description = "Kernel NFS server - Network Status Monitor";