summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-20 13:58:21 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-20 13:58:21 +0100
commit33639143ea50404a04bc4c454435aff1bd79dd4b (patch)
treeede4b6832bb86ac30281fc22700ae1fe40658f37
parentfix(treewide): Update to nixos release 24.11 (diff)
downloadnixos-server-33639143ea50404a04bc4c454435aff1bd79dd4b.tar.gz
nixos-server-33639143ea50404a04bc4c454435aff1bd79dd4b.zip
refactor({modules,test}): Migrate to a `by-name` structure
-rw-r--r--flake.lock17
-rw-r--r--flake.nix12
-rw-r--r--modules/by-name/et/etesync/module.nix (renamed from modules/nixos/vhack/etesync/default.nix)0
-rw-r--r--modules/by-name/et/etesync/secret_file.age (renamed from modules/nixos/vhack/etesync/secret_file.age)0
-rw-r--r--modules/by-name/gi/git-server/css.nix (renamed from modules/nixos/vhack/git-server/css.nix)0
-rw-r--r--modules/by-name/gi/git-server/module.nix (renamed from modules/nixos/vhack/git-server/default.nix)0
-rw-r--r--modules/by-name/ng/nginx/module.nix (renamed from modules/nixos/vhack/nginx/default.nix)0
-rw-r--r--modules/by-name/ng/nginx/redirects.nix (renamed from modules/nixos/vhack/nginx/redirects.nix)0
-rw-r--r--modules/by-name/ni/nix-sync/hosts.nix (renamed from modules/nixos/vhack/nix-sync/hosts.nix)0
-rw-r--r--modules/by-name/ni/nix-sync/internal_module.nix (renamed from modules/nixos/vhack/nix-sync/module.nix)0
-rw-r--r--modules/by-name/ni/nix-sync/module.nix (renamed from modules/nixos/vhack/nix-sync/default.nix)2
-rw-r--r--modules/by-name/op/openssh/module.nix (renamed from modules/nixos/vhack/openssh/default.nix)0
-rw-r--r--modules/by-name/pe/peertube/module.nix (renamed from modules/nixos/vhack/peertube/default.nix)0
-rw-r--r--modules/by-name/pe/peertube/secrets/general.age (renamed from modules/nixos/vhack/peertube/secrets/general.age)0
-rw-r--r--modules/by-name/pe/peertube/secrets/smtp.age (renamed from modules/nixos/vhack/peertube/secrets/smtp.age)0
-rw-r--r--modules/default.nix21
-rw-r--r--modules/nixos/default.nix5
-rw-r--r--modules/nixos/vhack/default.nix10
-rw-r--r--secrets.nix7
-rw-r--r--tests.nix28
-rw-r--r--tests/README.md2
-rw-r--r--tests/by-name/gi/git-server/ssh_keys.nix (renamed from tests/nixos/vhack/git-server/ssh_keys.nix)0
-rw-r--r--tests/by-name/gi/git-server/test.nix (renamed from tests/nixos/vhack/git-server/test.nix)17
-rw-r--r--tests/default.nix13
24 files changed, 74 insertions, 60 deletions
diff --git a/flake.lock b/flake.lock
index a901d68..c85da85 100644
--- a/flake.lock
+++ b/flake.lock
@@ -170,6 +170,22 @@
         "type": "github"
       }
     },
+    "library": {
+      "locked": {
+        "lastModified": 1734626644,
+        "narHash": "sha256-p/RVC4Rp5AGN3qwlVoQJHkbEkvcilSr2lWfRgnlRXlQ=",
+        "ref": "prime",
+        "rev": "1021c1ffe1dd8dd75380dac618b93ff2cefd81f4",
+        "revCount": 1,
+        "type": "git",
+        "url": "https://git.vhack.eu/vhack.eu/nix-library"
+      },
+      "original": {
+        "ref": "prime",
+        "type": "git",
+        "url": "https://git.vhack.eu/vhack.eu/nix-library"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1734522913,
@@ -257,6 +273,7 @@
         "flake-compat": "flake-compat",
         "flake-utils": "flake-utils",
         "impermanence": "impermanence",
+        "library": "library",
         "nixpkgs": "nixpkgs",
         "nixpkgs-unstable": "nixpkgs-unstable",
         "ragenix": "ragenix",
diff --git a/flake.nix b/flake.nix
index d9f02c2..ff3014f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -5,6 +5,8 @@
     nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11-small";
     nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable-small";
 
+    library.url = "git+https://git.vhack.eu/vhack.eu/nix-library?ref=prime";
+
     # inputs for following
     systems = {
       url = "github:nix-systems/x86_64-linux"; # only evaluate for this system
@@ -73,6 +75,7 @@
     self,
     nixpkgs,
     nixpkgs-unstable,
+    library,
     # modules
     simple-nixos-mailserver,
     impermanence,
@@ -90,7 +93,7 @@
     specialArgs =
       attrs
       // {
-        inherit pkgsUnstable nixpkgs-unstable nixos-lib extraModules;
+        inherit pkgsUnstable nixpkgs-unstable nixos-lib extraModules nixLib;
       };
 
     extraModules = [
@@ -100,8 +103,9 @@
       agenix.nixosModules.default
     ];
 
-    inherit (pkgs) lib;
-    tests = import ./tests.nix {inherit lib pkgs specialArgs;};
+    tests = import ./tests {inherit pkgs specialArgs nixLib;};
+
+    inherit (library) nixLib;
   in {
     nixosConfigurations."server1" = nixpkgs.lib.nixosSystem {
       system = "x86_64-linux";
@@ -109,7 +113,7 @@
       modules =
         extraModules
         ++ [
-          ./modules/nixos
+          ./modules
           ./hosts/server1/configuration.nix
         ];
     };
diff --git a/modules/nixos/vhack/etesync/default.nix b/modules/by-name/et/etesync/module.nix
index 0f6c565..0f6c565 100644
--- a/modules/nixos/vhack/etesync/default.nix
+++ b/modules/by-name/et/etesync/module.nix
diff --git a/modules/nixos/vhack/etesync/secret_file.age b/modules/by-name/et/etesync/secret_file.age
index 8d8e3c2..8d8e3c2 100644
--- a/modules/nixos/vhack/etesync/secret_file.age
+++ b/modules/by-name/et/etesync/secret_file.age
diff --git a/modules/nixos/vhack/git-server/css.nix b/modules/by-name/gi/git-server/css.nix
index 3d73ea0..3d73ea0 100644
--- a/modules/nixos/vhack/git-server/css.nix
+++ b/modules/by-name/gi/git-server/css.nix
diff --git a/modules/nixos/vhack/git-server/default.nix b/modules/by-name/gi/git-server/module.nix
index a374f4c..a374f4c 100644
--- a/modules/nixos/vhack/git-server/default.nix
+++ b/modules/by-name/gi/git-server/module.nix
diff --git a/modules/nixos/vhack/nginx/default.nix b/modules/by-name/ng/nginx/module.nix
index 6a82147..6a82147 100644
--- a/modules/nixos/vhack/nginx/default.nix
+++ b/modules/by-name/ng/nginx/module.nix
diff --git a/modules/nixos/vhack/nginx/redirects.nix b/modules/by-name/ng/nginx/redirects.nix
index a021e72..a021e72 100644
--- a/modules/nixos/vhack/nginx/redirects.nix
+++ b/modules/by-name/ng/nginx/redirects.nix
diff --git a/modules/nixos/vhack/nix-sync/hosts.nix b/modules/by-name/ni/nix-sync/hosts.nix
index 98dbbf1..98dbbf1 100644
--- a/modules/nixos/vhack/nix-sync/hosts.nix
+++ b/modules/by-name/ni/nix-sync/hosts.nix
diff --git a/modules/nixos/vhack/nix-sync/module.nix b/modules/by-name/ni/nix-sync/internal_module.nix
index a3ab0af..a3ab0af 100644
--- a/modules/nixos/vhack/nix-sync/module.nix
+++ b/modules/by-name/ni/nix-sync/internal_module.nix
diff --git a/modules/nixos/vhack/nix-sync/default.nix b/modules/by-name/ni/nix-sync/module.nix
index a624e0e..0a92888 100644
--- a/modules/nixos/vhack/nix-sync/default.nix
+++ b/modules/by-name/ni/nix-sync/module.nix
@@ -40,7 +40,7 @@
   domains = import ./hosts.nix {};
 in {
   imports = [
-    ./module.nix
+    ./internal_module.nix
   ];
 
   options.vhack.nix-sync = {
diff --git a/modules/nixos/vhack/openssh/default.nix b/modules/by-name/op/openssh/module.nix
index 30d16a6..30d16a6 100644
--- a/modules/nixos/vhack/openssh/default.nix
+++ b/modules/by-name/op/openssh/module.nix
diff --git a/modules/nixos/vhack/peertube/default.nix b/modules/by-name/pe/peertube/module.nix
index 29d1d07..29d1d07 100644
--- a/modules/nixos/vhack/peertube/default.nix
+++ b/modules/by-name/pe/peertube/module.nix
diff --git a/modules/nixos/vhack/peertube/secrets/general.age b/modules/by-name/pe/peertube/secrets/general.age
index 854ab1a..854ab1a 100644
--- a/modules/nixos/vhack/peertube/secrets/general.age
+++ b/modules/by-name/pe/peertube/secrets/general.age
diff --git a/modules/nixos/vhack/peertube/secrets/smtp.age b/modules/by-name/pe/peertube/secrets/smtp.age
index 1979ea7..1979ea7 100644
--- a/modules/nixos/vhack/peertube/secrets/smtp.age
+++ b/modules/by-name/pe/peertube/secrets/smtp.age
diff --git a/modules/default.nix b/modules/default.nix
new file mode 100644
index 0000000..61d259d
--- /dev/null
+++ b/modules/default.nix
@@ -0,0 +1,21 @@
+{nixLib, ...}: let
+  files =
+    builtins.attrValues
+    (nixLib.mkByName {
+      baseDirectory = ./by-name;
+      fileName = "module.nix";
+
+      # We only want the base paths.
+      finalizeFunction = name: value: value;
+
+      # TODO: Re-activate, when/if most modules have tests.  <2024-11-23>
+      # coImportsNameFunction = {
+      #   shard,
+      #   name,
+      # }:
+      #   ../tests/by-name + "/${shard}" + "/${name}" + "/test.nix";
+      # coImportsWarnMessageObject = "test";
+    });
+in {
+  imports = files;
+}
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
deleted file mode 100644
index fa21596..0000000
--- a/modules/nixos/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{...}: {
-  imports = [
-    ./vhack
-  ];
-}
diff --git a/modules/nixos/vhack/default.nix b/modules/nixos/vhack/default.nix
deleted file mode 100644
index bed22af..0000000
--- a/modules/nixos/vhack/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{...}: {
-  imports = [
-    ./etesync
-    ./git-server
-    ./nginx
-    ./nix-sync
-    ./openssh
-    ./peertube
-  ];
-}
diff --git a/secrets.nix b/secrets.nix
index 3f22872..bd5630e 100644
--- a/secrets.nix
+++ b/secrets.nix
@@ -10,9 +10,10 @@ let
     server1
   ];
 in {
-  "./modules/nixos/vhack/etesync/secret_file.age".publicKeys = allSecrets;
-  "./modules/nixos/vhack/peertube/secrets/general.age".publicKeys = allSecrets;
-  "./modules/nixos/vhack/peertube/secrets/smtp.age".publicKeys = allSecrets;
+  "./modules/by-name/et/etesync/secret_file.age".publicKeys = allSecrets;
+  "./modules/by-name/pe/peertube/secrets/general.age".publicKeys = allSecrets;
+  "./modules/by-name/pe/peertube/secrets/smtp.age".publicKeys = allSecrets;
+
   "./system/secrets/backup/backuppass.age".publicKeys = allSecrets;
   "./system/secrets/backup/backupssh.age".publicKeys = allSecrets;
   "./system/secrets/invidious/hmac.age".publicKeys = allSecrets;
diff --git a/tests.nix b/tests.nix
deleted file mode 100644
index d91a9c9..0000000
--- a/tests.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  pkgs,
-  lib,
-  specialArgs,
-}: let
-  # for `nix eval --file` (as it does not support args) use:
-  # ```
-  # specialArgs = {};
-  # pkgs = (builtins.getFlake "nixpkgs").legacyPackages."x86_64-linux";
-  # inherit (pkgs) lib;
-  # ```
-  # instead of the function arguments above.
-  importTests' = test: let
-    basename = builtins.baseNameOf test;
-    testName = builtins.baseNameOf (lib.strings.removeSuffix "/${basename}" "${builtins.toString test}");
-  in {
-    name = "${testName}";
-    value = pkgs.callPackage test specialArgs;
-  };
-
-  importTests = dir:
-    builtins.listToAttrs (builtins.map importTests' (
-      lib.fileset.toList (lib.fileset.fileFilter (file: file.name == "test.nix") dir)
-    ));
-
-  tests = importTests ./tests;
-in
-  tests
diff --git a/tests/README.md b/tests/README.md
index 2613f4a..0ff5738 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -3,4 +3,4 @@
 This directory tree mirrors the modules defined in the
 [modules](`../modules/`) directory.  Each module should have at least
 one test in the mirrored directory, effectively replacing the module's
-`default.nix` file.
+`module.nix` file.
diff --git a/tests/nixos/vhack/git-server/ssh_keys.nix b/tests/by-name/gi/git-server/ssh_keys.nix
index 07f0b88..07f0b88 100644
--- a/tests/nixos/vhack/git-server/ssh_keys.nix
+++ b/tests/by-name/gi/git-server/ssh_keys.nix
diff --git a/tests/nixos/vhack/git-server/test.nix b/tests/by-name/gi/git-server/test.nix
index 6d5edda..0cf3ee8 100644
--- a/tests/nixos/vhack/git-server/test.nix
+++ b/tests/by-name/gi/git-server/test.nix
@@ -4,6 +4,7 @@
   nixpkgs-unstable,
   pkgs,
   extraModules,
+  nixLib,
   ...
 }: let
   sshKeys =
@@ -47,7 +48,7 @@ in
     name = "git-server";
 
     node = {
-      specialArgs = {inherit pkgsUnstable nixpkgs-unstable;};
+      specialArgs = {inherit pkgsUnstable nixpkgs-unstable nixLib;};
 
       # Use the nixpkgs as constructed by the `nixpkgs.*` options
       pkgs = null;
@@ -58,7 +59,7 @@ in
         imports =
           extraModules
           ++ [
-            ../../../../modules/nixos
+            ../../../../modules
           ];
 
         system.activationScripts = {
@@ -234,11 +235,11 @@ in
       # He can't see the readme (FIXME:  find out why this does not work. <2024-08-13> )
       # with subtest("Bob can see alice's README"):
       #   client.succeed("sudo -u bob ${pkgs.writeShellScript "bob-alice-readme" ''
-      #   set -xe
-      #
-      #   curl --insecure --silent --fail --show-error 'https://server/alice/alice-project/about' > readme.html
-      #   cat readme.html
-      #   diff --side-by-side ${expectedHtmlReadme}  readme.html
-      # ''}")
+        #   set -xe
+        #
+        #   curl --insecure --silent --fail --show-error 'https://server/alice/alice-project/about' > readme.html
+        #   cat readme.html
+        #   diff --side-by-side ${expectedHtmlReadme}  readme.html
+        # ''}")
     '';
   }
diff --git a/tests/default.nix b/tests/default.nix
new file mode 100644
index 0000000..d9b354a
--- /dev/null
+++ b/tests/default.nix
@@ -0,0 +1,13 @@
+{
+  specialArgs,
+  nixLib,
+  pkgs,
+}: let
+  tests = nixLib.mkByName {
+    baseDirectory = ./by-name;
+    fileName = "test.nix";
+    finalizeFunction = name: value:
+      import value (nixLib.warnMerge specialArgs {inherit pkgs;} "the test args set");
+  };
+in
+  tests