restruct args into specialArgs._cerulean
This commit is contained in:
parent
59d1028e19
commit
d85a6b963f
5 changed files with 46 additions and 32 deletions
4
TODO.md
4
TODO.md
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ in rec {
|
|||
'';
|
||||
in
|
||||
f {
|
||||
inherit nodeName node;
|
||||
lib = base.lib;
|
||||
inherit nodeName node base;
|
||||
inherit (base) lib;
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue