From 2da1bd043374a8f62239387317fae388a6c62800 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Tue, 22 Jun 2021 15:23:32 -0400
Subject: [PATCH] Turn morph/lib into a namespace in its own right

Put its contents in it and then use them from there instead of importing them
all over the rest of the code.
---
 morph/grid/local/grid.nix      | 16 ++++++++--------
 morph/grid/production/grid.nix | 25 ++++++++++++-------------
 morph/grid/testing/grid.nix    | 17 ++++++++---------
 morph/lib/default.nix          |  9 +++++++++
 4 files changed, 37 insertions(+), 30 deletions(-)
 create mode 100644 morph/lib/default.nix

diff --git a/morph/grid/local/grid.nix b/morph/grid/local/grid.nix
index fdc0cde5..dccb3813 100644
--- a/morph/grid/local/grid.nix
+++ b/morph/grid/local/grid.nix
@@ -1,7 +1,7 @@
-# Load the helper function and call it with arguments tailored for the local
-# grid.  It will make the morph configuration for us.  We share this function
-# with the production grid and have one fewer possible point of divergence.
-import ../../lib/make-grid.nix {
+let lib = import ../../lib;
+in lib.make-grid {
+  # Make a morph configuration for this grid.  We share this function
+  # with the other grids and have one fewer possible point of divergence.
   name = "LocalDev";
   config = ./config.json;
   nodes = cfg:
@@ -22,7 +22,7 @@ import ../../lib/make-grid.nix {
     nodeExporterTargets = [ "monitoring" "payments" "storage1" "storage2" ];
 
   in {
-    "payments" = import ../../lib/make-issuer.nix (cfg // rec {
+    "payments" = lib.make-issuer (cfg // rec {
       publicIPv4 = "192.168.67.21";
       monitoringvpnIPv4 = "172.23.23.11";
       hardware = import ./virtual-hardware.nix ({ inherit publicIPv4; });
@@ -31,7 +31,7 @@ import ../../lib/make-grid.nix {
       inherit sshUsers;
     });
 
-    "storage1" = import ../../lib/make-testing.nix (cfg // rec {
+    "storage1" = lib.make-testing (cfg // rec {
       publicIPv4 = "192.168.67.22";
       monitoringvpnIPv4 = "172.23.23.12";
       hardware = import ./virtual-hardware.nix ({ inherit publicIPv4; });
@@ -40,7 +40,7 @@ import ../../lib/make-grid.nix {
       inherit sshUsers;
     });
 
-    "storage2" = import ../../lib/make-testing.nix (cfg // rec {
+    "storage2" = lib.make-testing (cfg // rec {
       publicIPv4 = "192.168.67.23";
       monitoringvpnIPv4 = "172.23.23.13";
       hardware = import ./virtual-hardware.nix ({ inherit publicIPv4; });
@@ -49,7 +49,7 @@ import ../../lib/make-grid.nix {
       inherit sshUsers;
     });
 
-    "monitoring" = import ../../lib/make-monitoring.nix (cfg // rec {
+    "monitoring" = lib.make-monitoring (cfg // rec {
       publicIPv4 = "192.168.67.24";
       monitoringvpnIPv4 = "172.23.23.1";
       inherit vpnClientIPs;
diff --git a/morph/grid/production/grid.nix b/morph/grid/production/grid.nix
index fee0c9be..aea3a9df 100644
--- a/morph/grid/production/grid.nix
+++ b/morph/grid/production/grid.nix
@@ -1,7 +1,6 @@
-# Load the helper function and call it with arguments tailored for the testing
-# grid.  It will make the morph configuration for us.  We share this function
-# with the testing grid and have one fewer possible point of divergence.
-import ../../lib/make-grid.nix {
+# See morph/grid/local/grid.nix for additional commentary.
+let lib = import ../../lib;
+in lib.make-grid {
   name = "Production";
   config = ./config.json;
   nodes = cfg:
@@ -52,16 +51,16 @@ import ../../lib/make-grid.nix {
     # doesn't specify one.
     #
     # The names must be unique!
-    "payments.privatestorage.io" = import ../../lib/make-issuer.nix (cfg // {
+    "payments.privatestorage.io" = lib.make-issuer (cfg // {
       publicIPv4 = "18.184.142.208";
       monitoringvpnIPv4 = "172.23.23.11";
       inherit monitoringvpnKeyDir;
       inherit sshUsers;
-      hardware = ../../lib/issuer-aws.nix;
+      hardware = lib.hardware-aws;
       stateVersion = "19.03";
     });
 
-    "storage001" = import ../../lib/make-storage.nix (cfg // {
+    "storage001" = lib.make-storage (cfg // {
         cfg = import ./storage001-config.nix;
         inherit sshUsers;
         hardware = ./storage001-hardware.nix;
@@ -69,7 +68,7 @@ import ../../lib/make-grid.nix {
         monitoringvpnIPv4 = "172.23.23.21";
         inherit monitoringvpnKeyDir;
     });
-    "storage002" = import ../../lib/make-storage.nix (cfg // {
+    "storage002" = lib.make-storage (cfg // {
         cfg = import ./storage002-config.nix;
         inherit sshUsers;
         hardware = ./storage002-hardware.nix;
@@ -77,7 +76,7 @@ import ../../lib/make-grid.nix {
         monitoringvpnIPv4 = "172.23.23.22";
         inherit monitoringvpnKeyDir;
     });
-    "storage003" = import ../../lib/make-storage.nix (cfg // {
+    "storage003" = lib.make-storage (cfg // {
         cfg = import ./storage003-config.nix;
         inherit sshUsers;
         hardware = ./storage003-hardware.nix;
@@ -85,7 +84,7 @@ import ../../lib/make-grid.nix {
         monitoringvpnIPv4 = "172.23.23.23";
         inherit monitoringvpnKeyDir;
     });
-    "storage004" = import ../../lib/make-storage.nix (cfg // {
+    "storage004" = lib.make-storage (cfg // {
         cfg = import ./storage004-config.nix;
         inherit sshUsers;
         hardware = ./storage004-hardware.nix;
@@ -93,7 +92,7 @@ import ../../lib/make-grid.nix {
         monitoringvpnIPv4 = "172.23.23.24";
         inherit monitoringvpnKeyDir;
     });
-    "storage005" = import ../../lib/make-storage.nix (cfg // {
+    "storage005" = lib.make-storage (cfg // {
         cfg = import ./storage005-config.nix;
         inherit sshUsers;
         hardware = ./storage005-hardware.nix;
@@ -102,14 +101,14 @@ import ../../lib/make-grid.nix {
         inherit monitoringvpnKeyDir;
     });
 
-    "monitoring" = import ../../lib/make-monitoring.nix (cfg // {
+    "monitoring" = lib.make-monitoring (cfg // {
       publicIPv4 = "monitoring.private.storage";
       monitoringvpnIPv4 = "172.23.23.1";
       inherit monitoringvpnKeyDir;
       inherit vpnClientIPs;
       inherit hostsMap;
       inherit nodeExporterTargets;
-      hardware = ../../lib/issuer-aws.nix;
+      hardware = lib.hardware-aws;
       stateVersion = "19.09";
       inherit sshUsers;
     });
diff --git a/morph/grid/testing/grid.nix b/morph/grid/testing/grid.nix
index e31a28f2..73635932 100644
--- a/morph/grid/testing/grid.nix
+++ b/morph/grid/testing/grid.nix
@@ -1,7 +1,6 @@
-# Load the helper function and call it with arguments tailored for the testing
-# grid.  It will make the morph configuration for us.  We share this function
-# with the production grid and have one fewer possible point of divergence.
-import ../../lib/make-grid.nix {
+# See morph/grid/local/grid.nix for additional commentary.
+let lib = import ../../lib;
+in lib.make-grid {
   name = "Testing";
   config = ./config.json;
   nodes = cfg:
@@ -21,16 +20,16 @@ import ../../lib/make-grid.nix {
     nodeExporterTargets = [ "monitoring" "payments" "storage001" ];
 
   in {
-    "payments" = import ../../lib/make-issuer.nix (cfg // {
+    "payments" = lib.make-issuer (cfg // {
       publicIPv4 = "18.194.183.13";
       monitoringvpnIPv4 = "172.23.23.11";
       inherit monitoringvpnKeyDir;
       inherit sshUsers;
-      hardware = ../../lib/issuer-aws.nix;
+      hardware = lib.hardware-aws;
       stateVersion = "19.03";
     });
 
-    "storage001" = import ../../lib/make-testing.nix (cfg // {
+    "storage001" = lib.make-testing (cfg // {
       publicIPv4 = "3.120.26.190";
       monitoringvpnIPv4 = "172.23.23.12";
       inherit monitoringvpnKeyDir;
@@ -39,14 +38,14 @@ import ../../lib/make-grid.nix {
       stateVersion = "19.03";
     });
 
-    "monitoring" = import ../../lib/make-monitoring.nix (cfg // {
+    "monitoring" = lib.make-monitoring (cfg // {
       publicIPv4 = "18.156.171.217";
       monitoringvpnIPv4 = "172.23.23.1";
       inherit monitoringvpnKeyDir;
       inherit vpnClientIPs;
       inherit hostsMap;
       inherit nodeExporterTargets;
-      hardware = ../../lib/issuer-aws.nix;
+      hardware = lib.hardware-aws;
       stateVersion = "19.09";
       inherit sshUsers;
     });
diff --git a/morph/lib/default.nix b/morph/lib/default.nix
new file mode 100644
index 00000000..95a3ee14
--- /dev/null
+++ b/morph/lib/default.nix
@@ -0,0 +1,9 @@
+rec {
+  make-grid = import ./make-grid.nix;
+  make-issuer = import ./make-issuer.nix;
+  make-testing = import ./make-testing.nix;
+  make-storage = import ./make-storage.nix;
+  make-monitoring = import ./make-monitoring.nix;
+
+  hardware-aws = import ./issuer-aws.nix;
+}
-- 
GitLab