main
1{
2 lib,
3 config,
4 inputs,
5 self,
6 ...
7}: let
8 prefix = config.flake.meta.host.prefix;
9 hostsMeta = config.flake.meta.host.hosts;
10 collectHostsModules = modules:
11 lib.filterAttrs
12 (name: _:
13 (lib.hasPrefix prefix name)
14 && (hostsMeta.${lib.removePrefix prefix name}.deploy))
15 modules;
16in {
17 flake.deploy.nodes =
18 lib.pipe
19 (collectHostsModules config.flake.modules.nixos)
20 [
21 (lib.mapAttrs' (
22 name: value: {
23 name = lib.removePrefix prefix name;
24 inherit value;
25 }
26 ))
27 (lib.mapAttrs' (
28 name: _: {
29 inherit name;
30 value = {
31 hostname = name;
32 profiles.system = {
33 user = "root";
34 sshUser = "root";
35 path =
36 inputs.deploy-rs.lib.${hostsMeta.${name}.system}.activate.nixos
37 self.nixosConfigurations.${name};
38 };
39 };
40 }
41 ))
42 ];
43 flake.checks =
44 builtins.mapAttrs (
45 system: deployLib: deployLib.deployChecks self.deploy
46 )
47 inputs.deploy-rs.lib;
48}