From 221159aaeb0d1225f86aeb5972ada64018e1726e Mon Sep 17 00:00:00 2001 From: blahai Date: Wed, 19 Feb 2025 00:48:06 +0200 Subject: [PATCH] Modules: add deploy-rs config --- modules/flake/default.nix | 1 + modules/flake/deploy-rs.nix | 43 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 modules/flake/deploy-rs.nix diff --git a/modules/flake/default.nix b/modules/flake/default.nix index 659c4c7..774b485 100644 --- a/modules/flake/default.nix +++ b/modules/flake/default.nix @@ -3,6 +3,7 @@ ../../systems ./args.nix + ./deploy-rs.nix ./fmt.nix ./shell.nix ]; diff --git a/modules/flake/deploy-rs.nix b/modules/flake/deploy-rs.nix new file mode 100644 index 0000000..f96dae6 --- /dev/null +++ b/modules/flake/deploy-rs.nix @@ -0,0 +1,43 @@ +{ + lib, + self, + inputs, + config, + ... +}: let + inherit (builtins) elem mapAttrs attrNames; + inherit (lib.attrsets) filterAttrs; + + # extract the names of the systems that we want to deploy + deployableSystems = attrNames (filterAttrs (_: attrs: attrs.deployable) config.easy-hosts.hosts); + + easyHostsFromDeployableSystems = + filterAttrs ( + name: _: elem name deployableSystems + ) + self.nixosConfigurations; +in { + flake = { + checks = { + x86_64-linux = inputs.deploy-rs.lib.x86_64-linux.deployChecks self.deploy; + # aarch64-linux = inputs.deploy-rs.lib.aarch64-linux.deployChecks self.deploy; + }; + + deploy = { + autoRollback = true; + magicRollback = true; + + # then create a list of nodes that we want to deploy that we can pass to the deploy configuration + nodes = + mapAttrs (name: node: { + hostname = name; + profiles.system = { + user = "root"; + sshUser = node.config.olympus.system.mainUser or "root"; + path = inputs.deploy-rs.lib.${config.easy-hosts.hosts.${name}.system}.activate.nixos node; + }; + }) + easyHostsFromDeployableSystems; + }; + }; +}