mkDeploy
This commit is contained in:
parent
a2c4f7385b
commit
764d5dd68c
9 changed files with 4996 additions and 18 deletions
61
lib/deploy/default.nix
Normal file
61
lib/deploy/default.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
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.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 {})
|
||||
// {
|
||||
user = "root";
|
||||
path = deploy-rs.lib.${system}.activate.nixos host;
|
||||
}
|
||||
// lib.optionalAttrs (user != null) {
|
||||
sshUser = user;
|
||||
}
|
||||
// lib.optionalAttrs (host.config.system.security.doas.enable or false) {
|
||||
sudo = "doas -u";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
) {}
|
||||
names;
|
||||
in {
|
||||
inherit nodes;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue