refactor(flake): split assembly code #73

Merged
alexion merged 10 commits from refactor/flake-assembly into main 2026-08-29 17:21:41 -04:00
5 changed files with 49 additions and 63 deletions
Showing only changes of commit 28d8eb7ca9 - Show all commits

View File

@@ -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.

View File

@@ -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;
}

View File

@@ -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
{
mkGuests =
{ root }:
let
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
{
in
{
imports = files ++ map mkGuest names;
};
}

View File

@@ -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
let
directories = lib.filterAttrs (_name: type: type == "directory") (builtins.readDir root);
names = lib.attrNames directories;
in
lib.genAttrs names (
in
lib.genAttrs names (
name:
mkHost { inherit root name; }
);
}
)

View File

@@ -1,5 +1,7 @@
{ util }:
{ root }:
{
root,
util,
}:
{
imports = util.collectNixFiles root;
}