Commit eccf478

HPCesia <me@hpcesia.com>
2026-06-28 11:53:12
Add deploy-rs for remote servers
1 parent a507440
Changed files (3)
modules/flake/deploy-rs.nix
@@ -0,0 +1,59 @@
+{
+  den,
+  inputs,
+  self,
+  lib,
+  ...
+}: let
+  # TODO: Standalone Home Manager deploy profile
+  allHosts = lib.mergeAttrsList (lib.attrValues den.hosts);
+  deployableHosts =
+    lib.filterAttrs
+    (
+      n: v:
+        v.hasAspect den.aspects.core.openssh.access
+        && !(v.hasAspect den.aspects.core.installer)
+    )
+    allHosts;
+in {
+  flake-file.inputs.deploy-rs = {
+    url = "github:serokell/deploy-rs";
+    inputs.nixpkgs.follows = "nixpkgs";
+    inputs.flake-compat.follows = "flake-compat";
+  };
+
+  flake.deploy.nodes =
+    lib.mapAttrs (name: host: {
+      hostname = host.hostName;
+      profilesOrder = ["system"];
+      profiles.system = {
+        path =
+          inputs.deploy-rs.lib.${host.system}.activate.${host.class}
+          self."${host.class}Configurations".${name};
+        sshUser = "hpcesia";
+        user = "root";
+        interactiveSudo = true;
+      };
+    })
+    deployableHosts;
+
+  flake.checks =
+    builtins.mapAttrs (
+      system: deployLib: deployLib.deployChecks self.deploy
+    )
+    inputs.deploy-rs.lib;
+
+  den.schema.flake-parts.includes = [
+    {
+      devshell = {system, ...}: {
+        commands = [
+          {
+            name = "deploy";
+            package = inputs.deploy-rs.packages.${system}.deploy-rs;
+            help = "Deploy profiles to remote servers";
+          }
+        ];
+      };
+    }
+  ];
+}
flake.lock
@@ -104,6 +104,30 @@
         "type": "github"
       }
     },
+    "deploy-rs": {
+      "inputs": {
+        "flake-compat": [
+          "flake-compat"
+        ],
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "utils": "utils"
+      },
+      "locked": {
+        "lastModified": 1781627888,
+        "narHash": "sha256-5yHuAh9k7rT7rtf3uRaXkiUyYvQE9oaCgzhprLm2mr8=",
+        "owner": "serokell",
+        "repo": "deploy-rs",
+        "rev": "6d3087eedff75a715b40c0e124ba15d2dd7bec28",
+        "type": "github"
+      },
+      "original": {
+        "owner": "serokell",
+        "repo": "deploy-rs",
+        "type": "github"
+      }
+    },
     "devshell": {
       "inputs": {
         "nixpkgs": [
@@ -282,7 +306,7 @@
         "nixpkgs": [
           "nixpkgs"
         ],
-        "systems": "systems",
+        "systems": "systems_2",
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
@@ -419,6 +443,7 @@
     "root": {
       "inputs": {
         "den": "den",
+        "deploy-rs": "deploy-rs",
         "devshell": "devshell",
         "disko": "disko",
         "flake-compat": "flake-compat",
@@ -451,6 +476,21 @@
         "type": "github"
       }
     },
+    "systems_2": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
     "treefmt-nix": {
       "inputs": {
         "nixpkgs": [
@@ -472,6 +512,24 @@
         "type": "github"
       }
     },
+    "utils": {
+      "inputs": {
+        "systems": "systems"
+      },
+      "locked": {
+        "lastModified": 1731533236,
+        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "vaultix": {
       "inputs": {
         "advisory-db": "advisory-db",
flake.nix
@@ -7,6 +7,13 @@
 
   inputs = {
     den.url = "github:denful/den";
+    deploy-rs = {
+      url = "github:serokell/deploy-rs";
+      inputs = {
+        flake-compat.follows = "flake-compat";
+        nixpkgs.follows = "nixpkgs";
+      };
+    };
     devshell = {
       url = "github:numtide/devshell";
       inputs.nixpkgs.follows = "nixpkgs";