From 016535a111d824be69604c35e7b70fa156bffed9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Av=C3=A9?= Date: Sun, 22 Sep 2024 16:27:43 +0200 Subject: [PATCH] Improve NFS handling --- flake.lock | 58 +++++++++++++++++++++++----------------- hosts/Aloria/default.nix | 12 +++++---- hosts/Common/default.nix | 1 + hosts/Common/nfs.nix | 55 ++++++++++++++++++++++++++++++------- hosts/Kell/default.nix | 7 ++--- hosts/Riva/default.nix | 6 +++-- 6 files changed, 95 insertions(+), 44 deletions(-) diff --git a/flake.lock b/flake.lock index f9de7fb..4431b67 100644 --- a/flake.lock +++ b/flake.lock @@ -99,11 +99,11 @@ ] }, "locked": { - "lastModified": 1726823634, - "narHash": "sha256-rU8Yy62KSLU8Q2J64F+50OJKORNdogxbXl2w4rFw13o=", + "lastModified": 1726985855, + "narHash": "sha256-NJPGK030Y3qETpWBhj9oobDQRbXdXOPxtu+YgGvZ84o=", "owner": "nix-community", "repo": "home-manager", - "rev": "4803bf558bdf20cb067aceb8830b7ad70113f4e3", + "rev": "04213d1ce4221f5d9b40bcee30706ce9a91d148d", "type": "github" }, "original": { @@ -153,11 +153,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1726825661, - "narHash": "sha256-bnUrJnpDHtfnb6gJwJPBS74kVXnZrecpNbVlq75Oqeg=", + "lastModified": 1726995313, + "narHash": "sha256-HTbsXJDFugdQ794d1Bnh8eRSY7AlunIxd7jFW9kkKNM=", "ref": "refs/heads/main", - "rev": "9e98fb0167f8bc6c5eb4510a65b42aaa3b743421", - "revCount": 5241, + "rev": "e5ff19ac0f2c8d53a0c847d06a17676e636d6447", + "revCount": 5247, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -236,11 +236,11 @@ ] }, "locked": { - "lastModified": 1724966483, - "narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=", + "lastModified": 1726874949, + "narHash": "sha256-PNnIpwGqpTvMU3N2r0wMQwK1E+t4Bb5fbJwblQvr+80=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2", + "rev": "d97af4f6bd068c03a518b597675e598f57ea2291", "type": "github" }, "original": { @@ -261,11 +261,11 @@ ] }, "locked": { - "lastModified": 1721324119, - "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", + "lastModified": 1726840673, + "narHash": "sha256-HIPEXyRRVZoqD6U+lFS1B0tsIU7p83FaB9m7KT/x6mQ=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", + "rev": "b68dab23fc922eae99306988133ee80a40b39ca5", "type": "github" }, "original": { @@ -323,11 +323,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1725983898, - "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=", + "lastModified": 1726755586, + "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43", + "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e", "type": "github" }, "original": { @@ -339,11 +339,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1726463316, - "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", + "lastModified": 1726755586, + "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", + "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e", "type": "github" }, "original": { @@ -355,11 +355,11 @@ }, "nur": { "locked": { - "lastModified": 1726824598, - "narHash": "sha256-kFWCW7nD9RoUbrlNW1lE9ElmtSmWD/E9HMNJ7z3fJ8o=", + "lastModified": 1727011111, + "narHash": "sha256-2mgUfBkeAd7TL0Iphk2LcrSRrPQEaeAwO5KfpGVnpm4=", "owner": "nix-community", "repo": "NUR", - "rev": "cf86f6490757943388c0770c3a68845b172e8f76", + "rev": "dc07e8263258662a2ca0c66df18eabca98e82823", "type": "github" }, "original": { @@ -438,6 +438,14 @@ "hyprland", "hyprlang" ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], "nixpkgs": [ "hyprland", "nixpkgs" @@ -448,11 +456,11 @@ ] }, "locked": { - "lastModified": 1726046979, - "narHash": "sha256-6SEsjurq9cdTkITA6d49ncAJe4O/8CgRG5/F//s6Xh8=", + "lastModified": 1726933538, + "narHash": "sha256-xTqnMoJsEojuvqJLuM+U7EZ7q71efaj3pbvjutq4TXc=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "e695669fd8e1d1be9eaae40f35e00f8bd8b64c18", + "rev": "4880c50146d0c2a3152d2b02f79253810c330c11", "type": "github" }, "original": { diff --git a/hosts/Aloria/default.nix b/hosts/Aloria/default.nix index 9024f1e..5e1f061 100644 --- a/hosts/Aloria/default.nix +++ b/hosts/Aloria/default.nix @@ -1,10 +1,12 @@ { pkgs, inputs, config, ... }: -{ +let + serverIP = "10.0.0.1"; +in { imports = [ (import ../Common/default.nix { inherit inputs pkgs config; }) (import ../Common/nvidia.nix { inherit inputs pkgs config; }) (import ../Common/desktop.nix { inherit inputs pkgs config; }) - (import ../Common/nfs.nix { inherit inputs pkgs config; }) + (import ../Common/nfs.nix { inherit pkgs serverIP; }) ]; hardware.graphics.extraPackages = [ pkgs.intel-compute-runtime @@ -29,7 +31,7 @@ address = [ "10.0.0.5/24" "2a02:a03f:83ad:2101::5/128" ]; privateKeyFile = "/home/user/.secrets/Wireguard/Aloria.key"; listenPort = 51820; - autostart = true; + autostart = false; postUp = "resolvectl dns Tunnel 10.0.0.1; resolvectl domain Tunnel ~thomasave.be;"; dns = ["10.0.0.1"]; peers = [{ @@ -43,7 +45,7 @@ address = [ "10.0.0.5/24" "2a02:a03f:83ad:2101::5/128" ]; privateKeyFile = "/home/user/.secrets/Wireguard/Aloria.key"; listenPort = 51820; - autostart = false; + autostart = true; postUp = "resolvectl dns OPNsense 10.0.0.1; resolvectl domain OPNsense ~thomasave.be;"; dns = ["10.0.0.1"]; peers = [{ @@ -54,7 +56,7 @@ }]; }; }; - fileSystems."/home/server".device = pkgs.lib.mkForce "10.0.0.1:/home/server"; + # fileSystems."/home/server".device = pkgs.lib.mkForce "10.0.0.1:/home/server"; services.upower.enable = true; networking.wireless.iwd.enable = true; diff --git a/hosts/Common/default.nix b/hosts/Common/default.nix index cbf1d58..68a2dba 100644 --- a/hosts/Common/default.nix +++ b/hosts/Common/default.nix @@ -10,6 +10,7 @@ boot.loader.timeout = 1; boot.loader.efi.canTouchEfiVariables = true; systemd.extraConfig = "DefaultTimeoutStopSec=10s"; + systemd.services.systemd-user-sessions.enable = false; boot.kernelPackages = pkgs.linuxPackages_latest; services.thermald.enable = true; diff --git a/hosts/Common/nfs.nix b/hosts/Common/nfs.nix index 2dfaa8b..108bf9e 100644 --- a/hosts/Common/nfs.nix +++ b/hosts/Common/nfs.nix @@ -1,24 +1,61 @@ -{ ... }: -{ - fileSystems."/home/server" = { - device = "192.168.1.2:/home/server"; +{pkgs, serverIP, ...}: + +let + sharePath = "/home/server"; + mountPath = "/home/server"; + common_options = [ + "noauto" + "_netdev" + "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.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" ]; + 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" "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" "x-gvfs-hide"]; + options = bind_options; }; fileSystems."/home/user/Documents" = { device = "/home/server/Storage/Thomas/Documents"; - options = [ "bind" "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" "x-gvfs-hide"]; + options = bind_options; }; fileSystems."/home/user/Pictures" = { device = "/home/server/Storage/Thomas/Pictures"; - options = [ "bind" "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" "x-gvfs-hide"]; + options = bind_options; }; fileSystems."/home/user/Videos" = { device = "/home/server/Storage/Thomas/Videos"; - options = [ "bind" "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" "x-gvfs-hide"]; + options = bind_options; }; } diff --git a/hosts/Kell/default.nix b/hosts/Kell/default.nix index 1df8a87..9d02042 100644 --- a/hosts/Kell/default.nix +++ b/hosts/Kell/default.nix @@ -1,10 +1,11 @@ { inputs, config, pkgs, ... }: - -{ +let + serverIP = "192.168.1.2"; +in { imports = [ (import ../Common/default.nix { inherit inputs pkgs; }) (import ../Common/desktop.nix { inherit inputs pkgs config; }) - (import ../Common/nfs.nix { inherit inputs pkgs config; }) + (import ../Common/nfs.nix { inherit pkgs serverIP; }) ]; # AMD CPU diff --git a/hosts/Riva/default.nix b/hosts/Riva/default.nix index bb6fd65..7f3c532 100644 --- a/hosts/Riva/default.nix +++ b/hosts/Riva/default.nix @@ -1,8 +1,10 @@ { inputs, config, pkgs, ... }: -{ +let + serverIP = "192.168.1.2"; +in { imports = [ (import ../Common/default.nix { inherit inputs config pkgs; }) - (import ../Common/nfs.nix { inherit inputs pkgs config; }) + (import ../Common/nfs.nix { inherit pkgs serverIP; }) ]; services.ollama = {