65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 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;
 | 
						|
    };
 | 
						|
}
 |