old
1{
2 den,
3 inputs,
4 self,
5 lib,
6 ...
7}: let
8 # TODO: Standalone Home Manager deploy profile
9 allHosts = lib.mergeAttrsList (lib.attrValues den.hosts);
10 deployableHosts =
11 lib.filterAttrs
12 (
13 n: v:
14 v.hasAspect den.aspects.core.openssh.access
15 && !(v.hasAspect den.aspects.core.installer)
16 )
17 allHosts;
18in {
19 flake-file.inputs.deploy-rs = {
20 url = "github:serokell/deploy-rs";
21 inputs.nixpkgs.follows = "nixpkgs";
22 inputs.flake-compat.follows = "flake-compat";
23 };
24
25 flake.deploy.nodes =
26 lib.mapAttrs (name: host: {
27 hostname = host.hostName;
28 profilesOrder = ["system"];
29 profiles.system = {
30 path =
31 inputs.deploy-rs.lib.${host.system}.activate.${host.class}
32 self."${host.class}Configurations".${name};
33 sshUser = "root";
34 user = "root";
35 };
36 })
37 deployableHosts;
38
39 flake.checks =
40 builtins.mapAttrs (
41 system: deployLib: deployLib.deployChecks self.deploy
42 )
43 inputs.deploy-rs.lib;
44
45 den.schema.flake-parts.includes = [
46 {
47 devshell = {system, ...}: {
48 commands = [
49 {
50 name = "deploy";
51 package = inputs.deploy-rs.packages.${system}.deploy-rs;
52 help = "Deploy profiles to remote servers";
53 }
54 ];
55 };
56 }
57 ];
58}