Transitioning back to a deployment/ dir

This commit is contained in:
niten 2021-11-29 17:15:48 -08:00
parent c345daa524
commit 6780fa76cd
2 changed files with 44 additions and 30 deletions

31
common/deployment.nix Normal file
View File

@ -0,0 +1,31 @@
{ inputs, deployment-hosts, description, enable-rollback ? true, ... }:
with inputs.nixpkgs.lib; let
network-config = {
nixpkgs = inputs.nixpkgs;
network = {
inherit description;
enableRollback = enable-rollback;
};
};
host-configs = genAttrs deployment-hosts
(hostname: fudo-nixos.nixopsHostConfigurations.${hostname});
host-uber-secrets = genAttrs deployment-hosts
(hostname: { config, ... }: let
uber-secrets = config.fudo.secrets.files.host-filesystem-keys;
in {
imports = [
inputs.fudo-secrets.nixosModule
({ config, ... }: {
deployment.keys = mkIf (hasAttr hostname uber-secrets) {
deployment.keys = mapAttrs (secret: secret-file: {
keyFile = secret-file;
user = "root";
permissions = "0400";
}) uber-secrets.${hostname};
};
})
];
});
in network-config // host-configs // host-uber-secrets

View File

@ -1,5 +1,5 @@
{ {
description = "Definition of the Informis NixOps network."; description = "Informis NixOps network.";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-21.05"; nixpkgs.url = "nixpkgs/nixos-21.05";
@ -17,39 +17,22 @@
}; };
}; };
outputs = { self, nixpkgs, fudo-nixos, fudo-entities, fudo-secrets, ... }: outputs = { self, nixpkgs, fudo-nixos, fudo-entities, fudo-secrets } @ inputs:
with nixpkgs.lib; { with nixpkgs.lib; {
nixopsConfigurations.default = let nixopsConfigurations.default = let
domain = "informis.land"; domain = "informis.land";
description = "Informis NixOps Network";
deployment-hosts = filterAttrs deployment-hosts = attrNames
(hostname: hostOpts: (filterAttrs
hostOpts.domain == domain && (hostname: hostOpts:
hostOpts.nixos-system) hostOpts.domain == domain &&
fudo-entities.entities.hosts; hostOpts.nixos-system)
fudo-entities.entities.hosts);
network-config = { deployment-config-generator = import ../common/deployment.nix;
inherit nixpkgs; in deployment-config-generator {
network = { inherit inputs deployment-hosts description;
description = "Seattle NixOps network"; };
enableRollback = true;
};
};
uber-secrets = config.fudo.secrets.files.host-filesystem-keys;
host-configs = (mapAttrs (hostname: hostOpts:
fudo-nixos.nixopsHostConfigurations.${hostname})
deployment-hosts);
host-uber-secrets = (mapAttrs (hostname: hostOpts:
if (hasAttr hostname uber-secrets) then
mapAttrs (secret: secret-file: {
keyFile = secret-file;
user = "root";
permissions = "0400";
}) uber-secrets.${hostname}
else {}));
in network-config // host-configs // host-uber-secrets;
}; };
} }