From 188a9b4e249d036d984f87c4cac9f7242f2416b4 Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Fri, 6 Sep 2024 17:26:22 +0200 Subject: [PATCH] Configure remote deployment with deploy-rs --- .envrc | 1 + flake.lock | 76 ++++++++++++++++++++++++++++++++++++++++++-- flake.nix | 5 +++ flake/checks.nix | 4 +++ flake/dev-shells.nix | 24 ++++++++++---- flake/hosts.nix | 21 ++++++++---- hosts/common.nix | 1 - justfile | 4 +-- 8 files changed, 117 insertions(+), 19 deletions(-) create mode 100644 .envrc diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..07fd338 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake . \ No newline at end of file diff --git a/flake.lock b/flake.lock index 9eafeda..71ebe6f 100644 --- a/flake.lock +++ b/flake.lock @@ -16,6 +16,28 @@ "type": "github" } }, + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": [ + "nixpkgs" + ], + "utils": "utils" + }, + "locked": { + "lastModified": 1718194053, + "narHash": "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -75,6 +97,22 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -110,7 +148,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1710146030, @@ -207,7 +245,7 @@ }, "nix-vscode-extensions": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" @@ -326,6 +364,7 @@ "root": { "inputs": { "betterfox": "betterfox", + "deploy-rs": "deploy-rs", "disko": "disko", "firefox-addons": "firefox-addons", "flake-parts": "flake-parts", @@ -379,6 +418,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": [ @@ -399,6 +453,24 @@ "type": "github" } }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "wrapper-manager": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index a383d8f..4e402a4 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + deploy-rs = { + url = "github:serokell/deploy-rs"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/flake/checks.nix b/flake/checks.nix index 256d5c9..a130438 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -17,4 +17,8 @@ ''; }; }; + + flake.checks = builtins.mapAttrs ( + _: deployLib: deployLib.deployChecks self.deploy + ) inputs.deploy-rs.lib; } diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index 14c1fca..70018f3 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,13 +1,23 @@ +{ inputs, ... }: { perSystem = - { pkgs, ... }: + { pkgs, system, ... }: { - devShells.sops = pkgs.mkShell { - packages = [ - pkgs.sops - pkgs.age - pkgs.ssh-to-age - ]; + devShells = { + default = pkgs.mkShell { + packages = [ + pkgs.nh + inputs.deploy-rs.defaultPackage.${system} + ]; + }; + + sops = pkgs.mkShell { + packages = [ + pkgs.sops + pkgs.age + pkgs.ssh-to-age + ]; + }; }; }; } diff --git a/flake/hosts.nix b/flake/hosts.nix index 82157bc..7e895b5 100644 --- a/flake/hosts.nix +++ b/flake/hosts.nix @@ -25,13 +25,20 @@ let ); }; }; - in { - flake.nixosConfigurations = lib.mkMerge [ - (mkHost "north" unstable) - (mkHost "inspiron" unstable) - (mkHost "stratus" stable) - (mkHost "installer" stable) - ]; + flake = { + nixosConfigurations = lib.mkMerge [ + (mkHost "north" unstable) + (mkHost "inspiron" unstable) + (mkHost "stratus" stable) + (mkHost "installer" stable) + ]; + + deploy.nodes.stratus = { + hostname = "stratus"; + sshUser = "root"; + profiles.system.path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.stratus; + }; + }; } diff --git a/hosts/common.nix b/hosts/common.nix index 4efd47b..4e57850 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -65,7 +65,6 @@ environment.systemPackages = [ pkgs.git pkgs.just - pkgs.nh ]; nixpkgs.config.allowUnfree = true; diff --git a/justfile b/justfile index 4107b7a..46d93dc 100644 --- a/justfile +++ b/justfile @@ -26,8 +26,8 @@ fmt: check: nix flake check -dev-sops: - nix develop .#sops --command zsh +dev shell='default': + nix develop .#{{ shell }} --command zsh build-iso: nix build .#nixosConfigurations.installer.config.formats.iso -o result