Commit 5aff8768ca92

Vincent Demeester <vincent@sbr.pm>
2026-02-18 16:56:57
refactor(systems): centralize NFS mounts in globals
Defined default NFS shares (rhea + aion) in globals.nix under net.nfs.defaultHosts. Removed audiobooks and music from rhea (served by aion). Replaced duplicated config blocks in 5 host hardware.nix files with globals reference.
1 parent 0897bf5
systems/aion/extra.nix
@@ -1,6 +1,5 @@
 {
   libx,
-  globals,
   lib,
   pkgs,
   config,
@@ -150,7 +149,6 @@ in
       };
     };
 
-
     audible-sync = {
       enable = true; # enable one migration dayrs
       user = "vincent";
systems/aix/extra.nix
@@ -1,6 +1,5 @@
 {
   libx,
-  globals,
   ...
 }:
 let
@@ -98,7 +97,6 @@ in
         };
     };
 
-
     # DNS resolver for local network - resolve specific sbr.pm domains to Aix
     dnsmasq = {
       enable = true;
systems/aix/hardware.nix
@@ -1,4 +1,5 @@
-_: {
+{ globals, ... }:
+{
   imports = [
     ../common/services/nfs-mounts.nix
   ];
@@ -16,25 +17,6 @@ _: {
     };
   };
 
-  # NFS mounts from rhea and aion
-  services.nfs-mounts.hosts = {
-    rhea = {
-      server = "rhea.sbr.pm";
-      folders = [
-        "audiobooks"
-        "downloads"
-        "ebooks"
-        "music"
-        "pictures"
-        "videos"
-      ];
-    };
-    aion = {
-      server = "aion.sbr.pm";
-      folders = [
-        "audiobooks"
-        "music"
-      ];
-    };
-  };
+  # NFS mounts from globals defaults (rhea + aion)
+  services.nfs-mounts.hosts = globals.net.nfs.defaultHosts;
 }
systems/aomi/extra.nix
@@ -1,6 +1,4 @@
 {
-  globals,
-  libx,
   pkgs,
   ...
 }:
systems/aomi/hardware.nix
@@ -1,4 +1,5 @@
 {
+  globals,
   inputs,
   ...
 }:
@@ -46,25 +47,6 @@
 
   swapDevices = [ { device = "/dev/disk/by-uuid/24da6a46-cd28-4bff-9220-6f449e3bd8b5"; } ];
 
-  # NFS mounts from rhea and aion
-  services.nfs-mounts.hosts = {
-    rhea = {
-      server = "rhea.sbr.pm";
-      folders = [
-        "audiobooks"
-        "downloads"
-        "ebooks"
-        "music"
-        "pictures"
-        "videos"
-      ];
-    };
-    aion = {
-      server = "aion.sbr.pm";
-      folders = [
-        "audiobooks"
-        "music"
-      ];
-    };
-  };
+  # NFS mounts from globals defaults (rhea + aion)
+  services.nfs-mounts.hosts = globals.net.nfs.defaultHosts;
 }
systems/athena/extra.nix
@@ -1,6 +1,4 @@
 {
-  libx,
-  globals,
   ...
 }:
 {
systems/demeter/extra.nix
@@ -1,6 +1,4 @@
 {
-  libx,
-  globals,
   config,
   ...
 }:
@@ -48,7 +46,6 @@
     #   logLevel = "INFO";
     # };
 
-
   };
 
   age.secrets."mosquitto-homeassistant-password" = {
systems/kyushu/extra.nix
@@ -1,8 +1,6 @@
 {
-  libx,
   pkgs,
   lib,
-  globals,
   ...
 }:
 {
systems/kyushu/hardware.nix
@@ -1,4 +1,9 @@
-{ inputs, lib, ... }:
+{
+  globals,
+  inputs,
+  lib,
+  ...
+}:
 {
   imports = [
     inputs.disko.nixosModules.disko
@@ -22,27 +27,8 @@
     # opengl.extraPackages = with pkgs; [ vaapiIntel libvdpau-va-gl vaapiVdpau intel-ocl intel-media-driver ];
   };
 
-  # NFS mounts from rhea and aion
-  services.nfs-mounts.hosts = {
-    rhea = {
-      server = "rhea.sbr.pm";
-      folders = [
-        "audiobooks"
-        "downloads"
-        "ebooks"
-        "music"
-        "pictures"
-        "videos"
-      ];
-    };
-    aion = {
-      server = "aion.sbr.pm";
-      folders = [
-        "audiobooks"
-        "music"
-      ];
-    };
-  };
+  # NFS mounts from globals defaults (rhea + aion)
+  services.nfs-mounts.hosts = globals.net.nfs.defaultHosts;
 
   # NFS mounts from synodine (NFSv3)
   fileSystems."/net/synodine/usbshare" = {
systems/okinawa/extra.nix
@@ -1,8 +1,6 @@
 {
   pkgs,
   inputs,
-  libx,
-  globals,
   config,
   ...
 }:
@@ -68,7 +66,6 @@
     keyboards = [ "Eyelash Corne" ];
   };
 
-
   # Age secrets
   age.secrets = {
     "opencode-password" = {
systems/okinawa/hardware.nix
@@ -1,4 +1,5 @@
 {
+  globals,
   inputs,
   lib,
   pkgs,
@@ -84,25 +85,8 @@
     };
   };
 
-  # NFS mounts from rhea and aion (NFSv4)
-  services.nfs-mounts.hosts = {
-    rhea = {
-      server = "rhea.sbr.pm";
-      folders = [
-        "downloads"
-        "ebooks"
-        "pictures"
-        "videos"
-      ];
-    };
-    aion = {
-      server = "aion.sbr.pm";
-      folders = [
-        "audiobooks"
-        "music"
-      ];
-    };
-  };
+  # NFS mounts from globals defaults (rhea + aion)
+  services.nfs-mounts.hosts = globals.net.nfs.defaultHosts;
 
   # NFS mounts from synodine (NFSv3)
   fileSystems."/net/synodine/usbshare" = {
systems/rhea/extra.nix
@@ -429,7 +429,6 @@ in
         };
     };
 
-
     # smartd = {
     #   enable = true;
     #   devices = [ { device = "/dev/nvme0n1"; } ];
systems/sakhalin/extra.nix
@@ -1,5 +1,4 @@
 {
-  libx,
   globals,
   lib,
   pkgs,
@@ -459,7 +458,6 @@ in
       '';
     };
 
-
   };
 
   # Create Grafana dashboard directory and deploy Ollama dashboards
systems/sakhalin/hardware.nix
@@ -1,4 +1,5 @@
 {
+  globals,
   ...
 }:
 {
@@ -48,27 +49,8 @@
 
   swapDevices = [ { device = "/dev/disk/by-uuid/9eb067d1-b329-4fbb-ae27-38abfbe7c108"; } ];
 
-  # NFS mounts from rhea and aion
-  services.nfs-mounts.hosts = {
-    rhea = {
-      server = "rhea.sbr.pm";
-      folders = [
-        "audiobooks"
-        "downloads"
-        "ebooks"
-        "music"
-        "pictures"
-        "videos"
-      ];
-    };
-    aion = {
-      server = "aion.sbr.pm";
-      folders = [
-        "audiobooks"
-        "music"
-      ];
-    };
-  };
+  # NFS mounts from globals defaults (rhea + aion)
+  services.nfs-mounts.hosts = globals.net.nfs.defaultHosts;
 
   networking = {
     firewall.enable = false; # we are in safe territory :D
systems/shikoku/extra.nix
@@ -1,6 +1,4 @@
 {
-  globals,
-  libx,
   pkgs,
   ...
 }:
globals.nix
@@ -78,6 +78,26 @@ _: {
     vpn = {
       endpoint = "167.99.17.238";
     };
+    nfs = {
+      defaultHosts = {
+        rhea = {
+          server = "rhea.sbr.pm";
+          folders = [
+            "downloads"
+            "ebooks"
+            "pictures"
+            "videos"
+          ];
+        };
+        aion = {
+          server = "aion.sbr.pm";
+          folders = [
+            "audiobooks"
+            "music"
+          ];
+        };
+      };
+    };
   };
   machines = {
     athena = {