ALPHA: wire is a tool to deploy nixos systems wire.althaea.zone/
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

add per-node special args (#381)

authored by

marshmallow and committed by
GitHub
d6725ae2 c10ce52d

+50 -10
+1
CHANGELOG.md
··· 10 10 ### Added 11 11 12 12 - Add a `--substitute-on-destination` argument. 13 + - Add the `meta.nodeSpecialArgs` meta option. 13 14 14 15 ## [v1.0.0] - 2025-12-17 15 16
+4
doc/guides/writing-a-hive.md
··· 23 23 # type: attrset 24 24 specialArgs = { }; 25 25 26 + # `meta.nodeSpecialArgs` lets you override `meta.specialArgs` per-node. 27 + # type: attrset of attrset 28 + nodeSpecialArgs: = { }; 29 + 26 30 # `meta.nodeNixpkgs` lets you override nixpkgs per-node. 27 31 # type: attrset of "A path or an instance of nixpkgs." 28 32 nodeNixpkgs: = { };
+18
doc/reference/meta.md
··· 61 61 } 62 62 ``` 63 63 64 + ## meta.nodeSpecialArgs 65 + 66 + Extra `specialArgs` to override `meta.specialArgs` for each node 67 + 68 + _Type:_ attribute set of attribute set 69 + 70 + _Default:_ `{ }` 71 + 72 + _Example:_ 73 + 74 + ```nix 75 + { 76 + meta.nodeSpecialArgs = { 77 + extra-property = "some-value"; 78 + }; 79 + } 80 + ``` 81 + 64 82 ## meta.nodeNixpkgs 65 83 66 84 Per-node nixpkgs to override `meta.nixpkgs`.
+2 -1
runtime/evaluate.nix
··· 83 83 specialArgs = { 84 84 inherit name nodes; 85 85 } 86 - // mergedHive.meta.specialArgs or { }; 86 + // mergedHive.meta.specialArgs or { } 87 + // mergedHive.meta.nodeSpecialArgs.${name} or { }; 87 88 }; 88 89 89 90 nodes = builtins.listToAttrs (
+25 -9
tests/nix/suite/test_remote_deploy/hive.nix
··· 5 5 inherit (import ../utils.nix { testName = "test_keys-@IDENT@"; }) makeHive mkHiveNode; 6 6 in 7 7 makeHive { 8 - meta.nixpkgs = import <nixpkgs> { localSystem = "x86_64-linux"; }; 8 + meta = { 9 + nixpkgs = import <nixpkgs> { localSystem = "x86_64-linux"; }; 10 + 11 + specialArgs = { 12 + message = "second"; 13 + }; 14 + 15 + nodeSpecialArgs = { 16 + receiver-third.message = "third"; 17 + }; 18 + }; 9 19 10 20 receiver = mkHiveNode { hostname = "receiver"; } { 11 21 environment.etc."identity".text = "first"; ··· 20 30 ]; 21 31 }; 22 32 23 - receiver-second = mkHiveNode { hostname = "receiver"; } { 24 - environment.etc."identity".text = "second"; 25 - deployment.target.host = "receiver"; 26 - }; 33 + receiver-second = mkHiveNode { hostname = "receiver"; } ( 34 + { message, ... }: 35 + { 36 + environment.etc."identity".text = message; 37 + deployment.target.host = "receiver"; 38 + } 39 + ); 27 40 28 - receiver-third = mkHiveNode { hostname = "receiver"; } { 29 - environment.etc."identity".text = "third"; 30 - deployment.target.host = "receiver"; 31 - }; 41 + receiver-third = mkHiveNode { hostname = "receiver"; } ( 42 + { message, ... }: 43 + { 44 + environment.etc."identity".text = message; 45 + deployment.target.host = "receiver"; 46 + } 47 + ); 32 48 33 49 receiver-unreachable = mkHiveNode { hostname = "receiver"; } { 34 50 # test node pinging