restruct args into specialArgs._cerulean

This commit is contained in:
do butterflies cry? 2026-02-17 17:00:09 +10:00
parent 59d1028e19
commit d85a6b963f
5 changed files with 46 additions and 32 deletions

View file

@ -1,3 +1,7 @@
- [ ] base should automatically be set as the default (dont do anything with the default)
- [ ] try to remove common foot guns, ie abort if the user provides the home-manager or microvm nixosModules
since cerulean ALREADY provides these
- [ ] deploy port should default to the first port given to `services.openssh`
- [ ] use the Nix module system instead of projectOnto for `cerulean.mkNexus`

View file

@ -20,6 +20,7 @@
}: let
inherit
(builtins)
all
attrNames
concatLists
concatStringsSep
@ -184,33 +185,47 @@ in {
outputs = rec {
nixosConfigurations = mapNodes nexus (
{
base,
lib,
nodeName,
node,
...
}: let
nixosDecl = lib.nixosSystem rec {
system = node.system;
specialArgs =
nexus.args
// node.args
// {
inherit root specialArgs;
inherit (node) system;
_deploy-rs = inputs.deploy-rs;
nixosDecl = let
userArgs = nexus.args // node.args;
ceruleanArgs = {
inherit root base;
inherit (node) system;
_cerulean = {
inherit inputs userArgs;
args = ceruleanArgs;
};
modules =
[
self.nixosModules.default
(findImport (root + "/hosts/${nodeName}"))
};
specialArgs = assert (userArgs
|> attrNames
|> all (argName:
! ceruleanArgs ? argName
|| abort ''
`specialArgs` are like super important to Cerulean my love... </3
But `args.${argName}` is a reserved argument name :(
''));
userArgs // ceruleanArgs;
in
lib.nixosSystem {
inherit (node) system;
inherit specialArgs;
modules =
[
self.nixosModules.default
(findImport (root + "/hosts/${nodeName}"))
inputs.home-manager.nixosModules.default
# inputs.microvm.nixosModules.microvm
]
++ (getGroupModules root nodeName node)
++ node.modules
++ nexus.modules;
};
inputs.home-manager.nixosModules.default
# inputs.microvm.nixosModules.microvm
]
++ (getGroupModules root nodeName node)
++ node.modules
++ nexus.modules;
};
in
nixosDecl
);

View file

@ -93,7 +93,7 @@ in rec {
'';
in
f {
inherit nodeName node;
lib = base.lib;
inherit nodeName node base;
inherit (base) lib;
});
}

View file

@ -14,7 +14,7 @@
{
root,
system,
_deploy-rs,
_cerulean,
...
} @ args: {
imports = [
@ -26,7 +26,7 @@
./home-manager.nix
];
environment.systemPackages = [
_deploy-rs.packages.${system}.default
environment.systemPackages = with _cerulean.inputs; [
deploy-rs.packages.${system}.default
];
}

View file

@ -13,10 +13,9 @@
# limitations under the License.
{
root,
system,
config,
lib,
specialArgs,
_cerulean,
...
} @ args: let
inherit
@ -34,17 +33,13 @@ in {
|> filter (x: pathExists (root + "/homes/${x}"))
|> (x: lib.genAttrs x (y: import (root + "/homes/${y}")));
extraSpecialArgs = {inherit root system;} // (specialArgs.inputs or {});
extraSpecialArgs = _cerulean.args;
sharedModules = [
# user configuration
(import (root + "/nixpkgs.nix"))
# options declarations
(import ./nixpkgs.nix (args // {contextName = "homes";}))
];
# disable home-manager trying anything fancy
# we control the pkgs now!!
# useGlobalPkgs = true;
};
};
}