blob: 1eaa186f77c8c847e1b45dc881515e13aad30af0 [file] [log] [blame]
# SPDX-FileCopyrightText: 2024 Auxolotl Infrastructure Contributors
# SPDX-FileCopyrightText: 2024 Clicks Codes
#
# SPDX-License-Identifier: GPL-3.0-only
{ 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.users.infra 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;
}
// {
user = "root";
}
// lib.optionalAttrs host.config.clicks.security.doas.enable { sudo = "doas -u"; };
};
};
}
) { } names;
in
{
inherit nodes;
};
}