summaryrefslogtreecommitdiff
path: root/systems/deploy.nix
blob: fbf20d3ffc11903a05eaedf0cedfe32a36a023a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
  lib,
  inputs,
  self,
  ...
}: let
  targets = ["atlas"];
  configurations = self.nixosConfigurations // self.darwinConfigurations;

  getDeploy = pkgs:
    (pkgs.appendOverlays [
      inputs.deploy.overlay
      (_: prev: {
        deploy-rs = {
          inherit (pkgs) deploy-rs;
          inherit (prev.deploy-rs) lib;
        };
      })
    ])
    .deploy-rs;

  toType = system:
    {
      "Linux" = "nixos";
      "Darwin" = "darwin";
    }
    .${system};

  toDeployNode = hostname: system: {
    sshUser = "root";
    inherit hostname;
    profiles.system.path = let
      deploy = getDeploy system.pkgs;
      type = toType system.pkgs.stdenv.hostPlatform.uname.system;
    in
      deploy.lib.activate.${type} system;
  };
in {
  flake.deploy = {
    remoteBuild = true;
    fastConnection = false;
    nodes = lib.mapAttrs toDeployNode (lib.getAttrs targets configurations);
  };
}