58 lines
1.4 KiB
Nix
58 lines
1.4 KiB
Nix
{ lib, inputs }:
|
|
|
|
let
|
|
inherit (inputs) deploy-rs;
|
|
in
|
|
rec {
|
|
## Create deployment configuration for use with deploy-rs.
|
|
##
|
|
## ```nix
|
|
## mkDeploy {
|
|
## inherit self;
|
|
## overrides = {
|
|
## my-host.system.sudo = "doas -u";
|
|
## };
|
|
## }
|
|
## ```
|
|
##
|
|
#@ { self: Flake, overrides: Attrs ? {} } -> Attrs
|
|
mkDeploy =
|
|
{
|
|
self,
|
|
overrides ? { },
|
|
}:
|
|
let
|
|
hosts = self.nixosConfigurations or { };
|
|
names = builtins.attrNames hosts;
|
|
nodes = lib.foldl (
|
|
result: name:
|
|
let
|
|
host = hosts.${name};
|
|
user = host.config.metacfg.user.name or null;
|
|
inherit (host.pkgs) system;
|
|
in
|
|
result
|
|
// {
|
|
${name} = (overrides.${name} or { }) // {
|
|
hostname = overrides.${name}.hostname or "${name}";
|
|
profiles = (overrides.${name}.profiles or { }) // {
|
|
system =
|
|
(overrides.${name}.profiles.system or { })
|
|
// {
|
|
path = deploy-rs.lib.${system}.activate.nixos host;
|
|
}
|
|
// lib.optionalAttrs (user != null) {
|
|
user = "root";
|
|
sshUser = user;
|
|
}
|
|
// lib.optionalAttrs (host.config.metacfg.security.doas.enable or false) { sudo = "doas -u"; };
|
|
};
|
|
};
|
|
}
|
|
) { } names;
|
|
in
|
|
{
|
|
inherit nodes;
|
|
};
|
|
}
|