71 lines
1.7 KiB
Nix
71 lines
1.7 KiB
Nix
{
|
|
pkgs,
|
|
serverIP,
|
|
...
|
|
}: let
|
|
sharePath = "/home/server";
|
|
mountPath = "/home/server";
|
|
common_options = [
|
|
"noauto"
|
|
"_netdev"
|
|
"soft"
|
|
"bg"
|
|
"intr"
|
|
# "x-systemd.automount"
|
|
"x-systemd.idle-timeout=600"
|
|
"x-systemd.device-timeout=2s"
|
|
"x-systemd.mount-timeout=2s"
|
|
"timeo=5"
|
|
"x-gvfs-hide"
|
|
"x-systemd.after=network-online.target"
|
|
"x-systemd.requires=network-online.target"
|
|
];
|
|
bind_options =
|
|
[
|
|
"bind"
|
|
"x-systemd.after=${builtins.replaceStrings ["/"] ["-"] mountPath}.mount"
|
|
]
|
|
++ common_options;
|
|
in {
|
|
services.rpcbind.enable = true;
|
|
boot.supportedFilesystems = ["nfs"];
|
|
fileSystems.${mountPath} = {
|
|
device = "${serverIP}:${sharePath}";
|
|
fsType = "nfs";
|
|
options =
|
|
[
|
|
"x-systemd.after=wg-quick-Tunnel.service"
|
|
"x-systemd.after=wg-quick-OPNsense.service"
|
|
]
|
|
++ common_options;
|
|
};
|
|
|
|
systemd.services."${builtins.replaceStrings ["/"] ["-"] mountPath}-unmount" = {
|
|
description = "Unmount NFS share before shutdown";
|
|
wantedBy = ["shutdown.target"];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecStart = "/bin/true";
|
|
ExecStop = "${pkgs.util-linux}/bin/umount -f -l ${mountPath}";
|
|
TimeoutStopSec = "10s";
|
|
};
|
|
};
|
|
fileSystems."/home/user/Workspace" = {
|
|
device = "/home/server/Workspace";
|
|
options = bind_options;
|
|
};
|
|
fileSystems."/home/user/Documents" = {
|
|
device = "/home/server/Storage/Thomas/Documents";
|
|
options = bind_options;
|
|
};
|
|
fileSystems."/home/user/Pictures" = {
|
|
device = "/home/server/Storage/Thomas/Pictures";
|
|
options = bind_options;
|
|
};
|
|
fileSystems."/home/user/Videos" = {
|
|
device = "/home/server/Storage/Thomas/Videos";
|
|
options = bind_options;
|
|
};
|
|
}
|