{ self, inputs, ... }: let 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}; } ]; }; }; in { nixops4Deployments.git = { providers, ... }: { providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; resources = { vm02116 = makeResource "vm02116" { inherit providers; }; fedi300 = makeResource "fedi300" { inherit providers; }; }; }; nixops4Deployments.web = { providers, ... }: { providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; resources = { vm02187 = makeResource "vm02187" { inherit providers; }; }; }; nixops4Deployments.other = { providers, ... }: { providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; resources = { vm02117 = makeResource "vm02117" { inherit providers; }; vm02179 = makeResource "vm02179" { inherit providers; }; vm02186 = makeResource "vm02186" { inherit providers; }; }; }; }