diff options
Diffstat (limited to 'parts/deploy.nix')
| -rw-r--r-- | parts/deploy.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/parts/deploy.nix b/parts/deploy.nix new file mode 100644 index 0000000..bebf25c --- /dev/null +++ b/parts/deploy.nix @@ -0,0 +1,49 @@ +{ + self, + inputs, + lib, + withSystem, + ... +}: let + systems = ["atlas" "p-body"]; + + deployedSystems = + lib.filterAttrs + (n: _: builtins.elem n systems) + self.nixosConfigurations; + + deployPkgs = import inputs.nixpkgs rec { + system = "x86_64-linux"; + overlays = [ + inputs.deploy-rs.overlay + (_: prev: { + deploy-rs = { + inherit (withSystem system (p: p.pkgs)) deploy-rs; + inherit (prev.deploy-rs) lib; + }; + }) + ]; + }; + + mkNodes = hosts: let + inherit (builtins) attrNames listToAttrs map; + vals = + map (name: let + system = self.nixosConfigurations.${name}; + in { + inherit name; + value = { + sshUser = "root"; + hostname = system.config.networking.hostName; + profiles.system.path = deployPkgs.deploy-rs.lib.activate.nixos system; + }; + }) + (attrNames hosts); + in + listToAttrs vals; +in { + flake.deploy = { + remoteBuild = true; + nodes = mkNodes deployedSystems; + }; +} |
