From 9ccc374d3928c5408a50c85e67da98645b10e21a Mon Sep 17 00:00:00 2001
From: dadada <dadada@dadada.li>
Date: Tue, 23 Aug 2022 23:05:41 +0200
Subject: [PATCH] add deply config for ifrit

---
 checks.nix    | 31 +++++++++++++++++++---------
 deploy.nix    | 22 ++++++++++++++++++++
 dev-shell.nix |  5 +++--
 flake.lock    | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 flake.nix     |  4 ++++
 outputs.nix   |  9 ++++++---
 6 files changed, 112 insertions(+), 15 deletions(-)
 create mode 100644 deploy.nix

diff --git a/checks.nix b/checks.nix
index 2c5b12a..66ee350 100644
--- a/checks.nix
+++ b/checks.nix
@@ -1,9 +1,22 @@
-{ pkgs, formatter }:
-{
-  format = pkgs.runCommand
-    "check-format"
-    {
-      buildInputs = [ formatter ];
-    }
-    "${formatter}/bin/nixpkgs-fmt --check ${./.} && touch $out";
-}
+{ self
+, deploy-rs
+, flake-utils
+, nixpkgs
+, ...
+}:
+#builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib //
+(flake-utils.lib.eachDefaultSystem (system:
+  let
+    pkgs = nixpkgs.legacyPackages.${system};
+    formatter = self.formatter.${system};
+  in
+  {
+    checks = {
+      format = pkgs.runCommand
+        "check-format"
+        {
+          buildInputs = [ formatter ];
+        }
+        "${formatter}/bin/nixpkgs-fmt --check ${./.} && touch $out";
+    } // deploy-rs.lib."${system}".deployChecks self.deploy;
+  })).checks
diff --git a/deploy.nix b/deploy.nix
new file mode 100644
index 0000000..fd394b8
--- /dev/null
+++ b/deploy.nix
@@ -0,0 +1,22 @@
+{ self, deploy-rs, ... }:
+let
+  domain = "dadada.li";
+  system = "x86_64-linux";
+  activateNixos = deploy-rs.lib."${system}".activate.nixos;
+  configs = self.nixosConfigurations;
+  daNode = hostname: {
+    hostname = "${hostname}.${domain}";
+    fastConnection = true;
+    profiles = {
+      system = {
+        sshUser = "dadada";
+        path = activateNixos configs."${hostname}";
+        user = "root";
+      };
+    };
+  };
+in
+{
+  nodes.ifrit = daNode "ifrit";
+}
+
diff --git a/dev-shell.nix b/dev-shell.nix
index 4be50f0..fc2c720 100644
--- a/dev-shell.nix
+++ b/dev-shell.nix
@@ -1,6 +1,7 @@
-{ pkgs, agenix-bin, ... }:
+{ pkgs, agenix, deploy-rs, system, ... }:
 pkgs.mkShell {
   buildInputs = [
-    agenix-bin
+    agenix.defaultPackage."${system}"
+    deploy-rs.defaultPackage."${system}"
   ];
 }
diff --git a/flake.lock b/flake.lock
index b2ef740..1f43241 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,6 +20,28 @@
         "type": "github"
       }
     },
+    "deploy-rs": {
+      "inputs": {
+        "flake-compat": "flake-compat",
+        "nixpkgs": [
+          "myNixpkgs"
+        ],
+        "utils": "utils"
+      },
+      "locked": {
+        "lastModified": 1659725433,
+        "narHash": "sha256-1ZxuK67TL29YLw88vQ18Y2Y6iYg8Jb7I6/HVzmNB6nM=",
+        "owner": "serokell",
+        "repo": "deploy-rs",
+        "rev": "41f15759dd8b638e7b4f299730d94d5aa46ab7eb",
+        "type": "github"
+      },
+      "original": {
+        "owner": "serokell",
+        "repo": "deploy-rs",
+        "type": "github"
+      }
+    },
     "doom-emacs": {
       "flake": false,
       "locked": {
@@ -166,6 +188,22 @@
       }
     },
     "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1648199409,
+        "narHash": "sha256-JwPKdC2PoVBkG6E+eWw3j6BMR6sL3COpYWfif7RVb8Y=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "64a525ee38886ab9028e6f61790de0832aa3ef03",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-compat_2": {
       "flake": false,
       "locked": {
         "lastModified": 1650374568,
@@ -356,7 +394,7 @@
         "evil-org-mode": "evil-org-mode",
         "evil-quick-diff": "evil-quick-diff",
         "explain-pause-mode": "explain-pause-mode",
-        "flake-compat": "flake-compat",
+        "flake-compat": "flake-compat_2",
         "flake-utils": "flake-utils_2",
         "format-all": "format-all",
         "nix-straight": "nix-straight",
@@ -601,6 +639,7 @@
     "root": {
       "inputs": {
         "agenix": "agenix",
+        "deploy-rs": "deploy-rs",
         "flake-utils": "flake-utils",
         "home-manager": "home-manager",
         "homePage": "homePage",
@@ -685,6 +724,21 @@
         "type": "github"
       }
     },
+    "utils": {
+      "locked": {
+        "lastModified": 1648297722,
+        "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "ws-butler": {
       "flake": false,
       "locked": {
diff --git a/flake.nix b/flake.nix
index 501b480..a678789 100644
--- a/flake.nix
+++ b/flake.nix
@@ -32,6 +32,10 @@
       url = "github:ryantm/agenix";
       inputs.nixpkgs.follows = "myNixpkgs";
     };
+    deploy-rs = {
+      url = "github:serokell/deploy-rs";
+      inputs.nixpkgs.follows = "myNixpkgs";
+    };
   };
 
   outputs = { ... } @ args: import ./outputs.nix args;
diff --git a/outputs.nix b/outputs.nix
index 9c2ad7e..c7965e2 100644
--- a/outputs.nix
+++ b/outputs.nix
@@ -1,5 +1,6 @@
 # Adapted from Mic92/dotfiles
 { self
+, deploy-rs
 , flake-utils
 , homePage
 , nixpkgs
@@ -17,16 +18,14 @@
     pkgs = nixpkgs.legacyPackages.${system};
     selfPkgs = self.packages.${system};
     formatter = self.formatter.${system};
-    agenix-bin = agenix.defaultPackage."${system}";
   in
   {
     apps = import ./apps.nix { inherit pkgs; };
 
-    devShells.default = pkgs.callPackage ./dev-shell.nix { inherit pkgs agenix-bin; };
+    devShells.default = pkgs.callPackage ./dev-shell.nix inputs // { inherit pkgs system; };
 
     formatter = nixpkgs.legacyPackages."${system}".nixpkgs-fmt;
 
-    checks = import ./checks.nix { inherit formatter pkgs; };
   }))
   // {
 
@@ -44,4 +43,8 @@
   overlays = import ./overlays;
 
   hydraJobs = import ./hydra-jobs.nix inputs;
+
+  deploy = import ./deploy.nix inputs;
+
+  checks = import ./checks.nix inputs;
 }