fix specialArg handling + use mergeStructs

This commit is contained in:
do butterflies cry? 2025-12-18 11:41:40 +10:00
parent 64d13428d0
commit 8734ca8835

View file

@ -74,11 +74,7 @@
in { in {
system = missing "its system type" "system"; # intentionally left missing!! (to raise errors) system = missing "its system type" "system"; # intentionally left missing!! (to raise errors)
modules = missing "its required modules" "modules"; modules = missing "its required modules" "modules";
specialArgs = Terminal { specialArgs = Terminal {};
inherit inputs;
pkgs = sys.pkgsFor system;
upkgs = sys.upkgsFor system;
};
deploy = { deploy = {
user = "root"; user = "root";
@ -113,32 +109,39 @@
else let else let
templateAttrs = templateNode name nodeAttrs.system; templateAttrs = templateNode name nodeAttrs.system;
in in
nib.parse.parseStructFor templateAttrs nodeAttrs; nib.parse.mergeStructs templateAttrs nodeAttrs;
# mapNodes = f: builtins.mapAttrs f (builtins.mapAttrs parseNode config.nexus.nodes); # mapNodes = f: builtins.mapAttrs f (builtins.mapAttrs parseNode config.nexus.nodes);
mapNodes = f: mapNodes = f:
builtins.mapAttrs ( builtins.mapAttrs
name: nodeAttrs: f name (parseNode name nodeAttrs) (nodeName: nodeAttrs: f nodeName (parseNode nodeName nodeAttrs))
)
config.nexus.nodes; config.nexus.nodes;
in rec { in rec {
nixosConfigurations = mapNodes ( nixosConfigurations = mapNodes (
_: node: nodeName: node:
lib.nixosSystem { lib.nixosSystem {
system = node.system; system = node.system;
modules = node.modules; modules = node.modules;
# nix passes these to every single module # nix passes these to every single module
specialArgs = {} // node.modules.specialArgs; specialArgs =
node.modules.specialArgs
// {
inherit inputs;
pkgs = sys.pkgsFor node.system;
upkgs = sys.upkgsFor node.system;
};
} }
); );
deploy.nodes = mapNodes (_: node: { deploy.nodes = mapNodes (nodeName: node: let
nixosFor = system: deploy-rs.lib.${system}.activate.nixos;
in {
hostname = node.deploy.ssh.host; hostname = node.deploy.ssh.host;
profilesOrder = ["default"]; # profiles priority profilesOrder = ["default"]; # profiles priority
profiles.default = { profiles.default = {
path = deploy-rs.lib.${node.system}.activate.nixos nixosConfigurations.${node.system}; path = nixosFor node.system nixosConfigurations.${nodeName};
user = node.deploy.user; user = node.deploy.user;
sudo = node.deploy.sudo; sudo = node.deploy.sudo;