Commit 7fc77ff

HPCesia <me@hpcesia.com>
2025-10-04 10:00:52
feat: deploy-rs for pardofelis
1 parent a67ace5
Changed files (5)
modules
flake
gen-configuration
hosts
chaser-pardofelis
modules/flake/gen-configuration/deploy-rs.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  config,
+  inputs,
+  self,
+  ...
+}: let
+  prefix = config.flake.meta.host.prefix;
+  hostsMeta = config.flake.meta.host.hosts;
+  collectHostsModules = modules:
+    lib.filterAttrs
+    (name: _:
+      (lib.hasPrefix prefix name)
+      && (hostsMeta.${lib.removePrefix prefix name}.deploy))
+    modules;
+in {
+  flake.deploy.nodes =
+    lib.pipe
+    (collectHostsModules config.flake.modules.nixos)
+    [
+      (lib.mapAttrs' (
+        name: value: {
+          name = lib.removePrefix prefix name;
+          inherit value;
+        }
+      ))
+      (lib.mapAttrs' (
+        name: _: {
+          inherit name;
+          value = {
+            hostName = name;
+            profiles.system = {
+              user = "root";
+              path =
+                inputs.deploy-rs.lib.${hostsMeta.${name}.system}.activate.nixos
+                self.nixosConfigurations.${name};
+            };
+          };
+        }
+      ))
+    ];
+  flake.checks =
+    builtins.mapAttrs (
+      system: deployLib: deployLib.deployChecks self.deploy
+    )
+    inputs.deploy-rs.lib;
+}
modules/flake/meta.nix
@@ -26,6 +26,10 @@
           type = types.str;
           description = "Public host key of the host.";
         };
+        deploy = lib.mkEnableOption {
+          default = false;
+          description = "Whether to deploy the host using deploy-rs.";
+        };
       };
     };
 
modules/hosts/chaser-pardofelis/default.nix
@@ -6,11 +6,13 @@
   flake.meta.host.hosts.pardofelis = {
     system = "x86_64-linux";
     hostPubKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEuT/WkeA7btTeATmWJ2O9f/A6FI0Gl/1KjPGfHbWD5C root@pardofelis";
+    deploy = true;
   };
   flake.modules.nixos."hosts/pardofelis" = {
     imports =
       (with config.flake.modules.nixos; [
         core
+        user-hpcesia
         user-root
       ])
       ++ (
flake.lock
@@ -57,6 +57,28 @@
         "type": "github"
       }
     },
+    "deploy-rs": {
+      "inputs": {
+        "flake-compat": "flake-compat_2",
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "utils": "utils"
+      },
+      "locked": {
+        "lastModified": 1756719547,
+        "narHash": "sha256-N9gBKUmjwRKPxAafXEk1EGadfk2qDZPBQp4vXWPHINQ=",
+        "owner": "serokell",
+        "repo": "deploy-rs",
+        "rev": "125ae9e3ecf62fb2c0fd4f2d894eb971f1ecaed2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "serokell",
+        "repo": "deploy-rs",
+        "type": "github"
+      }
+    },
     "disko": {
       "inputs": {
         "nixpkgs": [
@@ -114,6 +136,22 @@
       }
     },
     "flake-compat_2": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1733328505,
+        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-compat_3": {
       "flake": false,
       "locked": {
         "lastModified": 1696426674,
@@ -205,7 +243,7 @@
     },
     "flake-utils_2": {
       "inputs": {
-        "systems": "systems"
+        "systems": "systems_2"
       },
       "locked": {
         "lastModified": 1731533236,
@@ -536,7 +574,7 @@
     },
     "pre-commit-hooks": {
       "inputs": {
-        "flake-compat": "flake-compat_2",
+        "flake-compat": "flake-compat_3",
         "gitignore": "gitignore",
         "nixpkgs": [
           "vaultix",
@@ -562,7 +600,7 @@
         "nixpkgs": [
           "nixpkgs"
         ],
-        "utils": "utils"
+        "utils": "utils_2"
       },
       "locked": {
         "lastModified": 1758268340,
@@ -582,6 +620,7 @@
       "inputs": {
         "catppuccin": "catppuccin",
         "colmena": "colmena",
+        "deploy-rs": "deploy-rs",
         "disko": "disko",
         "distro-grub-themes": "distro-grub-themes",
         "flake-parts": "flake-parts",
@@ -696,7 +735,40 @@
         "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"
+      }
+    },
     "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"
+      }
+    },
+    "utils_2": {
       "locked": {
         "lastModified": 1678901627,
         "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
flake.nix
@@ -7,6 +7,9 @@
     colmena.url = "github:zhaofengli/colmena";
     colmena.inputs.nixpkgs.follows = "nixpkgs";
 
+    deploy-rs.url = "github:serokell/deploy-rs";
+    deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
+
     disko.url = "github:nix-community/disko/v1.11.0";
     disko.inputs.nixpkgs.follows = "nixpkgs";