diff --git a/flake.nix b/flake.nix index b31ddba..aeaff75 100644 --- a/flake.nix +++ b/flake.nix @@ -76,13 +76,9 @@ { self, nixpkgs, ... }@inputs: let inherit (nixpkgs) lib; - flake = import ./flake { inherit lib inputs self; }; in { - # Every host under hosts/ is discovered and built. - nixosConfigurations = flake.mkHosts { - root = self + "/hosts"; - }; + inherit (import ./flake { inherit lib inputs self; }) nixosConfigurations; # A project shell for agent-local resources that should travel with this # checkout rather than the operator's global profile. diff --git a/flake/default.nix b/flake/default.nix index 58c9e1f..230e711 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -4,55 +4,50 @@ self, }: let - # TODO: refactor the registry code - registryAssembly = import ./registry.nix { inherit lib self; }; - util = import ../lib { inherit lib; }; - mkModules = import ./module.nix { inherit util; }; - modules = mkModules { + registry = import ./registry.nix { + inherit lib; + hosts = self.nixosConfigurations; + root = self + "/registry"; + }; + + modules = import ./module.nix { + inherit util; root = self + "/modules"; }; - guestModules = guests.mkGuests { + guestModules = import ./guest.nix { + inherit + inputs + lib + registry + specialArgs + util + ; + repositoryModules = modules; root = self + "/guests"; }; - #---------------------------------------------------------- - - collectedRegistry = registryAssembly.collect { hosts = self.nixosConfigurations; }; - specialArgs = { inherit inputs self util ; - registry = collectedRegistry; + registry = registry.collected; }; - - guests = import ./guest.nix { - inherit - inputs - lib - specialArgs - registryAssembly - util - ; - repositoryModules = modules; - }; - - hosts = import ./host.nix { +in +{ + nixosConfigurations = import ./host.nix { inherit inputs lib specialArgs guestModules - registryAssembly ; + registryModule = registry.module; repositoryModules = modules; + root = self + "/hosts"; }; -in -{ - inherit (hosts) mkHosts; } diff --git a/flake/guest.nix b/flake/guest.nix index 9464f03..5f8c50f 100644 --- a/flake/guest.nix +++ b/flake/guest.nix @@ -1,9 +1,10 @@ { inputs, lib, + root, specialArgs, repositoryModules, - registryAssembly, + registry, util, }: let @@ -65,7 +66,7 @@ let enable = lib.mkEnableOption "a reverse-proxy route for this guest"; route = lib.mkOption { - type = registryAssembly.definitions.route.type; + type = registry.types.route; description = "Route registry entry published for this guest."; }; }; @@ -247,7 +248,7 @@ let inputs.stylix.nixosModules.stylix repositoryModules - registryAssembly.module + registry.module cfg.interior { @@ -268,15 +269,11 @@ let }; }; in +let + files = util.collectNixFiles root; + guestFiles = lib.filterAttrs (file: type: type == "regular" && lib.hasSuffix ".nix" file) (builtins.readDir root); + names = map (file: lib.removeSuffix ".nix" file) (lib.attrNames guestFiles); +in { - mkGuests = - { root }: - let - files = util.collectNixFiles root; - guestFiles = lib.filterAttrs (file: type: type == "regular" && lib.hasSuffix ".nix" file) (builtins.readDir root); - names = map (file: lib.removeSuffix ".nix" file) (lib.attrNames guestFiles); - in - { - imports = files ++ map mkGuest names; - }; + imports = files ++ map mkGuest names; } diff --git a/flake/host.nix b/flake/host.nix index 3345fd1..a25372d 100644 --- a/flake/host.nix +++ b/flake/host.nix @@ -1,12 +1,12 @@ { inputs, lib, + root, specialArgs, repositoryModules, guestModules, - # TODO refactor registry - registryAssembly, + registryModule, }: let mkHost = @@ -26,7 +26,7 @@ let guestModules # TODO: refactor - registryAssembly.module (root + "/${name}") + registryModule (root + "/${name}") { networking.hostName = name; @@ -35,15 +35,11 @@ let ]; }; in -{ - mkHosts = - { root }: - let - directories = lib.filterAttrs (_name: type: type == "directory") (builtins.readDir root); - names = lib.attrNames directories; - in - lib.genAttrs names ( - name: - mkHost { inherit root name; } - ); -} +let + directories = lib.filterAttrs (_name: type: type == "directory") (builtins.readDir root); + names = lib.attrNames directories; +in +lib.genAttrs names ( + name: + mkHost { inherit root name; } +) diff --git a/flake/module.nix b/flake/module.nix index 5c38e3e..9dead8f 100644 --- a/flake/module.nix +++ b/flake/module.nix @@ -1,5 +1,7 @@ -{ util }: -{ root }: +{ + root, + util, +}: { imports = util.collectNixFiles root; }