diff --git a/flake.lock b/flake.lock
index 376a43c..8e85b32 100644
--- a/flake.lock
+++ b/flake.lock
@@ -147,6 +147,21 @@
         "type": "github"
       }
     },
+    "lite-config": {
+      "locked": {
+        "lastModified": 1723691425,
+        "narHash": "sha256-xOroQo/+CAtocvJQsGPE5ukr1Btp72xlcWPB4tBZp6M=",
+        "owner": "yelite",
+        "repo": "lite-config",
+        "rev": "34357ad12ad0a66b2de55a2457159bda36c71a06",
+        "type": "github"
+      },
+      "original": {
+        "owner": "yelite",
+        "repo": "lite-config",
+        "type": "github"
+      }
+    },
     "nix-darwin": {
       "inputs": {
         "nixpkgs": [
@@ -269,6 +284,7 @@
         "empty": "empty",
         "flake-compat": "flake-compat",
         "flake-parts": "flake-parts",
+        "lite-config": "lite-config",
         "nix-darwin": "nix-darwin",
         "nixpkgs": "nixpkgs",
         "nixpkgs-update": "nixpkgs-update",
diff --git a/flake.nix b/flake.nix
index aca85c1..cf848b9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -24,6 +24,7 @@
     flake-compat.url = "github:nix-community/flake-compat";
     flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
     flake-parts.url = "github:hercules-ci/flake-parts";
+    lite-config.url = "github:yelite/lite-config";
     nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
     nix-darwin.url = "github:LnL7/nix-darwin";
     nixpkgs-update-github-releases.flake = false;
@@ -50,7 +51,41 @@
     flake-parts.lib.mkFlake { inherit inputs; } {
       systems = import inputs.systems;
 
-      imports = [ inputs.treefmt-nix.flakeModule ];
+      imports = [
+        inputs.lite-config.flakeModule
+        inputs.treefmt-nix.flakeModule
+      ];
+
+      lite-config =
+        { lib, ... }:
+        {
+          nixpkgs = {
+            config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "terraform" ];
+          };
+
+          hostModuleDir = ./hosts;
+
+          hosts = {
+            build01.system = "x86_64-linux";
+            build02.system = "x86_64-linux";
+            build03.system = "x86_64-linux";
+            build04.system = "aarch64-linux";
+            darwin01.system = "aarch64-darwin";
+            darwin02.system = "aarch64-darwin";
+            web02.system = "x86_64-linux";
+          };
+
+          systemModules = [
+            (
+              { hostPlatform, ... }:
+              {
+                imports =
+                  lib.optionals hostPlatform.isDarwin [ ./modules/darwin/common ]
+                  ++ lib.optionals hostPlatform.isLinux [ ./modules/nixos/common ];
+              }
+            )
+          ];
+        };
 
       perSystem =
         {
@@ -72,11 +107,6 @@
             imports = [ ./dev/treefmt.nix ];
           };
 
-          _module.args.pkgs = import inputs.nixpkgs {
-            inherit system;
-            config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "terraform" ];
-          };
-
           checks =
             let
               darwinConfigurations = lib.mapAttrs' (
@@ -103,69 +133,7 @@
             };
         };
 
-      flake.darwinConfigurations =
-        let
-          darwinSystem =
-            args:
-            inputs.nix-darwin.lib.darwinSystem (
-              {
-                specialArgs = {
-                  inherit inputs;
-                };
-              }
-              // args
-            );
-        in
-        {
-          darwin01 = darwinSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.aarch64-darwin;
-            modules = [ ./hosts/darwin01/configuration.nix ];
-          };
-          darwin02 = darwinSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.aarch64-darwin;
-            modules = [ ./hosts/darwin02/configuration.nix ];
-          };
-        };
-
-      flake.nixosConfigurations =
-        let
-          nixosSystem =
-            args:
-            inputs.nixpkgs.lib.nixosSystem (
-              {
-                specialArgs = {
-                  inherit inputs;
-                };
-              }
-              // args
-            );
-        in
-        {
-          build01 = nixosSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
-            modules = [ ./hosts/build01/configuration.nix ];
-          };
-          build02 = nixosSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
-            modules = [ ./hosts/build02/configuration.nix ];
-          };
-          build03 = nixosSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
-            modules = [ ./hosts/build03/configuration.nix ];
-          };
-          build04 = nixosSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.aarch64-linux;
-            modules = [ ./hosts/build04/configuration.nix ];
-          };
-          web02 = nixosSystem {
-            pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
-            modules = [ ./hosts/web02/configuration.nix ];
-          };
-        };
-
       flake.darwinModules = {
-        common = ./modules/darwin/common;
-
         builder = ./modules/darwin/builder.nix;
         community-builder = ./modules/darwin/community-builder;
         hercules-ci = ./modules/darwin/hercules-ci.nix;
@@ -173,8 +141,6 @@
       };
 
       flake.nixosModules = {
-        common = ./modules/nixos/common;
-
         buildbot = ./modules/nixos/buildbot.nix;
         builder = ./modules/nixos/builder.nix;
         community-builder = ./modules/nixos/community-builder;
diff --git a/hosts/build01/configuration.nix b/hosts/build01/default.nix
similarity index 87%
rename from hosts/build01/configuration.nix
rename to hosts/build01/default.nix
index 56da2d5..9ab30b3 100644
--- a/hosts/build01/configuration.nix
+++ b/hosts/build01/default.nix
@@ -2,7 +2,6 @@
 {
   imports = [
     inputs.srvos.nixosModules.hardware-hetzner-online-amd
-    inputs.self.nixosModules.common
     inputs.self.nixosModules.disko-zfs
     inputs.self.nixosModules.builder
     inputs.self.nixosModules.community-builder
@@ -13,8 +12,6 @@
   # Emulate riscv64 until we have proper builders
   boot.binfmt.emulatedSystems = [ "riscv64-linux" ];
 
-  networking.hostName = "build01";
-
   systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f9:3b:2946::1/64";
 
   system.stateVersion = "23.11";
diff --git a/hosts/build02/configuration.nix b/hosts/build02/default.nix
similarity index 90%
rename from hosts/build02/configuration.nix
rename to hosts/build02/default.nix
index 5b3bf40..eb2bdd7 100644
--- a/hosts/build02/configuration.nix
+++ b/hosts/build02/default.nix
@@ -6,7 +6,6 @@
     inputs.srvos.nixosModules.hardware-hetzner-online-amd
     ./nixpkgs-update.nix
     ./nixpkgs-update-backup.nix
-    inputs.self.nixosModules.common
     inputs.self.nixosModules.builder
     inputs.self.nixosModules.disko-zfs
   ];
@@ -18,7 +17,6 @@
 
   boot.kernelParams = [ "zfs.zfs_arc_max=${toString (24 * 1024 * 1024 * 1024)}" ]; # 24GB, try to limit OOM kills / reboots
 
-  networking.hostName = "build02";
   networking.nameservers = [
     "1.1.1.1"
     "1.0.0.1"
diff --git a/hosts/build03/configuration.nix b/hosts/build03/default.nix
similarity index 90%
rename from hosts/build03/configuration.nix
rename to hosts/build03/default.nix
index 09ca120..61af12d 100644
--- a/hosts/build03/configuration.nix
+++ b/hosts/build03/default.nix
@@ -3,7 +3,6 @@
   imports = [
     inputs.srvos.nixosModules.mixins-nginx
     inputs.srvos.nixosModules.hardware-hetzner-online-amd
-    inputs.self.nixosModules.common
     inputs.self.nixosModules.disko-zfs
     inputs.self.nixosModules.buildbot
     inputs.self.nixosModules.builder
@@ -21,7 +20,5 @@
 
   systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f8:2190:2698::2";
 
-  networking.hostName = "build03";
-
   system.stateVersion = "23.11";
 }
diff --git a/hosts/build04/configuration.nix b/hosts/build04/default.nix
similarity index 91%
rename from hosts/build04/configuration.nix
rename to hosts/build04/default.nix
index ce93662..c270f6f 100644
--- a/hosts/build04/configuration.nix
+++ b/hosts/build04/default.nix
@@ -3,7 +3,6 @@
   imports = [
     inputs.srvos.nixosModules.hardware-hetzner-online-arm
     inputs.self.nixosModules.disko-zfs
-    inputs.self.nixosModules.common
     inputs.self.nixosModules.builder
     inputs.self.nixosModules.hercules-ci
     inputs.self.nixosModules.remote-builder
@@ -18,8 +17,6 @@
 
   nixCommunity.remote-builder.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEmdo1x1QkRepZf7nSe+OdEWX+wOjkBLF70vX9F+xf68 builder";
 
-  networking.hostName = "build04";
-
   system.stateVersion = "23.11";
 
   systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f9:3051:3962::2";
diff --git a/hosts/darwin01/configuration.nix b/hosts/darwin01/default.nix
similarity index 84%
rename from hosts/darwin01/configuration.nix
rename to hosts/darwin01/default.nix
index ead3e09..7f3194a 100644
--- a/hosts/darwin01/configuration.nix
+++ b/hosts/darwin01/default.nix
@@ -2,7 +2,6 @@
 
 {
   imports = [
-    inputs.self.darwinModules.common
     inputs.self.darwinModules.builder
     inputs.self.darwinModules.community-builder
   ];
@@ -15,7 +14,5 @@
   # disable nixos-tests
   nix.settings.system-features = [ "big-parallel" ];
 
-  networking.hostName = "darwin01";
-
   system.stateVersion = 4;
 }
diff --git a/hosts/darwin02/configuration.nix b/hosts/darwin02/default.nix
similarity index 88%
rename from hosts/darwin02/configuration.nix
rename to hosts/darwin02/default.nix
index bb73b9a..e81b30e 100644
--- a/hosts/darwin02/configuration.nix
+++ b/hosts/darwin02/default.nix
@@ -2,7 +2,6 @@
 
 {
   imports = [
-    inputs.self.darwinModules.common
     inputs.self.darwinModules.builder
     inputs.self.darwinModules.hercules-ci
     inputs.self.darwinModules.remote-builder
@@ -18,7 +17,5 @@
   # disable nixos-tests
   nix.settings.system-features = [ "big-parallel" ];
 
-  networking.hostName = "darwin02";
-
   system.stateVersion = 4;
 }
diff --git a/hosts/web02/configuration.nix b/hosts/web02/default.nix
similarity index 77%
rename from hosts/web02/configuration.nix
rename to hosts/web02/default.nix
index 874cd27..7b58c28 100644
--- a/hosts/web02/configuration.nix
+++ b/hosts/web02/default.nix
@@ -2,13 +2,10 @@
 {
   imports = [
     ./gandi.nix
-    inputs.self.nixosModules.common
     inputs.self.nixosModules.monitoring
     inputs.srvos.nixosModules.mixins-nginx
   ];
 
-  networking.hostName = "web02";
-
   networking.useDHCP = true;
 
   # enabled by default for stateVersion < 23.11