improve passing host and channel arguments to fup
we need to filter out arguments that are added in the devos api also anything thats null in either hostDefaults and hosts has to be removed
This commit is contained in:
parent
064ba88cdf
commit
466304c8cd
|
@ -81,7 +81,7 @@
|
||||||
"utils": "utils_2"
|
"utils": "utils_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"narHash": "sha256-clwJnNLVOASak2CfkWu3Yztb1uWwtndY4VLDWEa9R3s=",
|
"narHash": "sha256-TOrVXGFk5rt1Wn14ja2spg44NuZnFM/V6qguQfO+8Kc=",
|
||||||
"path": "./lib",
|
"path": "./lib",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
|
@ -355,11 +355,11 @@
|
||||||
"flake-utils": "flake-utils"
|
"flake-utils": "flake-utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1619480667,
|
"lastModified": 1619532520,
|
||||||
"narHash": "sha256-KBiMpZcCv7D3wQ51ow7Sq8Xl01hDiRp5f7Py93CeD40=",
|
"narHash": "sha256-+xIFAW5J0AcxwAflAX1gg/C8kfaqeZbS4XAZusCrZPY=",
|
||||||
"owner": "gytis-ivaskevicius",
|
"owner": "gytis-ivaskevicius",
|
||||||
"repo": "flake-utils-plus",
|
"repo": "flake-utils-plus",
|
||||||
"rev": "be032a4396ad4cd7ea9bb733db8e456ec339ac9c",
|
"rev": "8eb7f9206713a528174c20c5133521dc37e2bfb1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -146,11 +146,11 @@
|
||||||
"flake-utils": "flake-utils"
|
"flake-utils": "flake-utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1619480667,
|
"lastModified": 1619532520,
|
||||||
"narHash": "sha256-KBiMpZcCv7D3wQ51ow7Sq8Xl01hDiRp5f7Py93CeD40=",
|
"narHash": "sha256-+xIFAW5J0AcxwAflAX1gg/C8kfaqeZbS4XAZusCrZPY=",
|
||||||
"owner": "gytis-ivaskevicius",
|
"owner": "gytis-ivaskevicius",
|
||||||
"repo": "flake-utils-plus",
|
"repo": "flake-utils-plus",
|
||||||
"rev": "be032a4396ad4cd7ea9bb733db8e456ec339ac9c",
|
"rev": "8eb7f9206713a528174c20c5133521dc37e2bfb1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -25,35 +25,39 @@ let
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
stripChannel = channel: removeAttrs channel [
|
||||||
|
# arguments in our channels api that shouldn't be passed to fup
|
||||||
|
"overlays"
|
||||||
|
];
|
||||||
getDefaultChannel = channels: channels.${cfg.nixos.hostDefaults.channelName};
|
getDefaultChannel = channels: channels.${cfg.nixos.hostDefaults.channelName};
|
||||||
|
|
||||||
|
# evalArgs sets channelName and system to null by default
|
||||||
|
# but for proper default handling in fup, null args have to be removed
|
||||||
|
stripHost = args: removeAttrs (lib.filterAttrs (_: arg: arg != null) args) [
|
||||||
|
# arguments in our hosts/hostDefaults api that shouldn't be passed to fup
|
||||||
|
"externalModules"
|
||||||
|
];
|
||||||
|
hosts = lib.mapAttrs (_: stripHost) cfg.nixos.hosts;
|
||||||
|
hostDefaults = stripHost cfg.nixos.hostDefaults;
|
||||||
in
|
in
|
||||||
lib.systemFlake (lib.recursiveUpdate
|
lib.systemFlake (lib.recursiveUpdate
|
||||||
otherArguments
|
otherArguments
|
||||||
{
|
{
|
||||||
inherit self inputs;
|
inherit self inputs hosts;
|
||||||
inherit (cfg) channelsConfig supportedSystems;
|
inherit (cfg) channelsConfig supportedSystems;
|
||||||
|
|
||||||
channels = mapAttrs
|
channels = mapAttrs
|
||||||
(name: channel:
|
(name: channel:
|
||||||
channel // {
|
stripChannel (channel // {
|
||||||
# pass channels if "overlay" has three arguments
|
# pass channels if "overlay" has three arguments
|
||||||
overlaysBuilder = channels: lib.unifyOverlays channels channel.overlays;
|
overlaysBuilder = channels: lib.unifyOverlays channels channel.overlays;
|
||||||
}
|
})
|
||||||
) cfg.channels;
|
) cfg.channels;
|
||||||
|
|
||||||
# the host arguments cannot exist for fup hostDefaults to work
|
hostDefaults = lib.mergeAny hostDefaults {
|
||||||
# so evalArgs sets them to null by default and the null args are filtered out here
|
|
||||||
hosts = mapAttrs (_: host: lib.filterAttrs (_: arg: arg != null) host) cfg.nixos.hosts;
|
|
||||||
|
|
||||||
hostDefaults = {
|
|
||||||
specialArgs.suites = cfg.nixos.suites;
|
specialArgs.suites = cfg.nixos.suites;
|
||||||
modules = cfg.nixos.hostDefaults.modules
|
modules = cfg.nixos.hostDefaults.externalModules ++ defaultModules;
|
||||||
++ cfg.nixos.hostDefaults.externalModules
|
|
||||||
++ defaultModules;
|
|
||||||
builder = os.devosSystem { inherit self inputs; };
|
builder = os.devosSystem { inherit self inputs; };
|
||||||
inherit (cfg.nixos.hostDefaults)
|
|
||||||
channelName
|
|
||||||
system;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosModules = lib.exporter.modulesFromList cfg.nixos.hostDefaults.modules;
|
nixosModules = lib.exporter.modulesFromList cfg.nixos.hostDefaults.modules;
|
||||||
|
|
Loading…
Reference in a new issue