forked from Fediversity/Fediversity
63 lines
1.4 KiB
Nix
63 lines
1.4 KiB
Nix
{
|
|
self,
|
|
inputs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (builtins) mapAttrs;
|
|
inherit (lib.attrsets) genAttrs;
|
|
|
|
makeResource =
|
|
vmid:
|
|
{ providers, ... }:
|
|
let
|
|
vmmodule = import (./. + "/${vmid}");
|
|
in
|
|
{
|
|
type = providers.local.exec;
|
|
imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ];
|
|
ssh = {
|
|
# FIXME: The following assumes that `vmmodule` does not use arguments
|
|
# and does not get `proxolix.vm.ip4` from an import, etc. I have tried
|
|
# an approach with `lib.evalModules` but I cannot get it to work.
|
|
host = vmmodule.procolix.vm.ip4;
|
|
opts = "";
|
|
hostPublicKey = self.keys.systems.${vmid};
|
|
};
|
|
nixpkgs = inputs.nixpkgs;
|
|
nixos.module = {
|
|
imports = [
|
|
vmmodule
|
|
./common
|
|
self.nixosModules.ageSecrets
|
|
{ fediversity.hostPublicKey = self.keys.systems.${vmid}; }
|
|
];
|
|
};
|
|
};
|
|
|
|
makeDeployments = mapAttrs (
|
|
_: vmids:
|
|
{ providers, ... }:
|
|
{
|
|
providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local;
|
|
resources = genAttrs vmids (vmid: makeResource vmid { inherit providers; });
|
|
}
|
|
);
|
|
|
|
in
|
|
{
|
|
nixops4Deployments = makeDeployments {
|
|
git = [
|
|
"vm02116"
|
|
"fedi300"
|
|
];
|
|
web = [ "vm02187" ];
|
|
other = [
|
|
"vm02117"
|
|
"vm02179"
|
|
"vm02186"
|
|
];
|
|
};
|
|
}
|