From 8734ca8835ed74e77a2e5e6814d7a42716fed43d Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 18 Dec 2025 11:41:40 +1000 Subject: [PATCH] fix specialArg handling + use mergeStructs --- flake.nix | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/flake.nix b/flake.nix index 23557e1..557764f 100644 --- a/flake.nix +++ b/flake.nix @@ -74,11 +74,7 @@ in { system = missing "its system type" "system"; # intentionally left missing!! (to raise errors) modules = missing "its required modules" "modules"; - specialArgs = Terminal { - inherit inputs; - pkgs = sys.pkgsFor system; - upkgs = sys.upkgsFor system; - }; + specialArgs = Terminal {}; deploy = { user = "root"; @@ -113,32 +109,39 @@ else let templateAttrs = templateNode name nodeAttrs.system; 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 ( - name: nodeAttrs: f name (parseNode name nodeAttrs) - ) + builtins.mapAttrs + (nodeName: nodeAttrs: f nodeName (parseNode nodeName nodeAttrs)) config.nexus.nodes; in rec { nixosConfigurations = mapNodes ( - _: node: + nodeName: node: lib.nixosSystem { system = node.system; modules = node.modules; # 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; profilesOrder = ["default"]; # profiles priority profiles.default = { - path = deploy-rs.lib.${node.system}.activate.nixos nixosConfigurations.${node.system}; + path = nixosFor node.system nixosConfigurations.${nodeName}; user = node.deploy.user; sudo = node.deploy.sudo;