diff --git a/extern/default.nix b/extern/default.nix index 30cd1897..a8069e6d 100644 --- a/extern/default.nix +++ b/extern/default.nix @@ -8,6 +8,9 @@ overlays = [ nur.overlay devshell.overlay + (final: prev: { + deploy-rs = deploy.packages.${prev.system}.deploy-rs; + }) ]; # passed to all nixos modules diff --git a/flake.lock b/flake.lock index 703c7ea8..a3e0c904 100644 --- a/flake.lock +++ b/flake.lock @@ -27,6 +27,35 @@ "type": "github" } }, + "deploy": { + "inputs": { + "flake-compat": [ + "flake-compat" + ], + "naersk": [ + "naersk" + ], + "nixpkgs": [ + "override" + ], + "utils": [ + "utils" + ] + }, + "locked": { + "lastModified": 1612864896, + "narHash": "sha256-pbsvxe05kAWJzPeC6fs4t0Mk8mTZs6u/WQDMBqoA5tA=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "fecc7e723db40c7e056371467275186b3bbb9ef3", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, "devshell": { "locked": { "lastModified": 1612486691, @@ -79,6 +108,26 @@ "type": "github" } }, + "naersk": { + "inputs": { + "nixpkgs": [ + "override" + ] + }, + "locked": { + "lastModified": 1612192764, + "narHash": "sha256-7EnLtZQWP6511G1ZPA7FmJlqAr3hWsAYb24tvTvJ/ec=", + "owner": "nmattia", + "repo": "naersk", + "rev": "6e149bfd726a8ebefa415f2d713ba6d942435abd", + "type": "github" + }, + "original": { + "owner": "nmattia", + "repo": "naersk", + "type": "github" + } + }, "nixos": { "locked": { "lastModified": 1612690903, @@ -156,9 +205,11 @@ "root": { "inputs": { "ci-agent": "ci-agent", + "deploy": "deploy", "devshell": "devshell", "flake-compat": "flake-compat", "home": "home", + "naersk": "naersk", "nixos": "nixos", "nixos-hardware": "nixos-hardware", "nur": "nur", diff --git a/flake.nix b/flake.nix index b10ba755..3df3d02e 100644 --- a/flake.nix +++ b/flake.nix @@ -14,25 +14,33 @@ ci-agent.inputs.nixos-20_09.follows = "nixos"; ci-agent.inputs.nixos-unstable.follows = "override"; ci-agent.inputs.flake-compat.follows = "flake-compat"; + deploy.url = "github:serokell/deploy-rs"; + deploy.inputs.utils.follows = "utils"; + deploy.inputs.naersk.follows = "naersk"; + deploy.inputs.nixpkgs.follows = "override"; + deploy.inputs.flake-compat.follows = "flake-compat"; + naersk.url = "github:nmattia/naersk"; + naersk.inputs.nixpkgs.follows = "override"; flake-compat.url = "github:edolstra/flake-compat"; flake-compat.flake = false; }; outputs = - inputs@{ self - , ci-agent + inputs@{ ci-agent + , deploy + , devshell , home , nixos - , override - , utils - , nur - , devshell , nixos-hardware + , nur + , override + , self + , utils , ... }: let inherit (utils.lib) eachDefaultSystem flattenTreeSystem; - inherit (nixos.lib) recursiveUpdate; + inherit (nixos.lib) recursiveUpdate mapAttrs; inherit (self.lib) overlays nixosModules genPackages genPkgs genHomeActivationPackages; @@ -63,6 +71,21 @@ templates.flk.description = "flk template"; defaultTemplate = self.templates.flk; + + deploy.nodes = mapAttrs + (_: config: { + hostname = config.config.networking.hostName; + + profiles.system = { + user = "root"; + path = deploy.lib.x86_64-linux.activate.nixos config; + }; + }) + self.nixosConfigurations; + + checks = builtins.mapAttrs + (system: deployLib: deployLib.deployChecks self.deploy) + deploy.lib; }; systemOutputs = eachDefaultSystem (system: diff --git a/profiles/core/default.nix b/profiles/core/default.nix index bf96b266..b78d713e 100644 --- a/profiles/core/default.nix +++ b/profiles/core/default.nix @@ -12,6 +12,7 @@ in binutils coreutils curl + deploy-rs direnv dnsutils dosfstools @@ -22,8 +23,8 @@ in iputils jq manix - nix-index moreutils + nix-index nmap ripgrep tealdeer diff --git a/shell/default.nix b/shell/default.nix index caeceed8..5ee4e70e 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -23,7 +23,7 @@ pkgs.devshell.mkShell { nixos-install nixos-generate-config nixos-enter - ]; + ] ++ lib.optional (system == "x86_64-linux") deploy-rs; env = { inherit name; };