diff --git a/infra/fedi300/default.nix b/infra/fedi300/default.nix index 49f1e93..642423d 100644 --- a/infra/fedi300/default.nix +++ b/infra/fedi300/default.nix @@ -2,7 +2,6 @@ { imports = [ - ../common ./forgejo-actions-runner.nix ]; diff --git a/infra/flake-part.nix b/infra/flake-part.nix index ac31975..a0e223d 100644 --- a/infra/flake-part.nix +++ b/infra/flake-part.nix @@ -1,135 +1,63 @@ -{ self, inputs, ... }: - { - nixops4Deployments.git = + self, + inputs, + lib, + ... +}: + +let + inherit (builtins) mapAttrs; + inherit (lib.attrsets) genAttrs; + + makeResource = + vmid: { providers, ... }: + let + vmmodule = import (./. + "/${vmid}"); + in { - providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; - - resources = { - vm02116 = { - type = providers.local.exec; - imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; - ssh = { - host = "185.206.232.34"; - opts = ""; - hostPublicKey = self.keys.systems.vm02116; - }; - nixpkgs = inputs.nixpkgs; - nixos.module = { - imports = [ - ./vm02116 - self.nixosModules.ageSecrets - { fediversity.hostPublicKey = self.keys.systems.vm02116; } - ]; - }; - }; - - fedi300 = { - type = providers.local.exec; - imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; - ssh = { - host = "95.215.187.30"; - opts = ""; - hostPublicKey = self.keys.systems.fedi300; - }; - nixpkgs = inputs.nixpkgs; - nixos.module = { - imports = [ - ./fedi300 - self.nixosModules.ageSecrets - { fediversity.hostPublicKey = self.keys.systems.fedi300; } - ]; - }; - }; + 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}; } + ]; }; }; - nixops4Deployments.web = + makeDeployments = mapAttrs ( + _: vmids: { providers, ... }: { providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; + resources = genAttrs vmids (vmid: makeResource vmid { inherit providers; }); + } + ); - resources = { - vm02187 = { - type = providers.local.exec; - imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; - ssh = { - host = "185.206.232.187"; - opts = ""; - hostPublicKey = self.keys.systems.vm02187; - }; - nixpkgs = inputs.nixpkgs; - nixos.module = { - imports = [ - ./vm02187 - self.nixosModules.ageSecrets - { fediversity.hostPublicKey = self.keys.systems.vm02187; } - ]; - }; - }; - }; - }; - - nixops4Deployments.other = - { providers, ... }: - { - providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; - - resources = { - vm02117 = { - type = providers.local.exec; - imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; - ssh = { - host = "185.206.232.106"; - opts = ""; - hostPublicKey = self.keys.systems.vm02117; - }; - nixpkgs = inputs.nixpkgs; - nixos.module = { - imports = [ - ./vm02117 - self.nixosModules.ageSecrets - { fediversity.hostPublicKey = self.keys.systems.vm02117; } - ]; - }; - }; - - vm02179 = { - type = providers.local.exec; - imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; - ssh = { - host = "185.206.232.179"; - opts = ""; - hostPublicKey = self.keys.systems.vm02179; - }; - nixpkgs = inputs.nixpkgs; - nixos.module = { - imports = [ - ./vm02179 - self.nixosModules.ageSecrets - { fediversity.hostPublicKey = self.keys.systems.vm02179; } - ]; - }; - }; - - vm02186 = { - type = providers.local.exec; - imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos ]; - ssh = { - host = "185.206.232.186"; - opts = ""; - hostPublicKey = self.keys.systems.vm02186; - }; - nixpkgs = inputs.nixpkgs; - nixos.module = { - imports = [ - ./vm02186 - self.nixosModules.ageSecrets - { fediversity.hostPublicKey = self.keys.systems.vm02186; } - ]; - }; - }; - }; - }; +in +{ + nixops4Deployments = makeDeployments { + git = [ + "vm02116" + "fedi300" + ]; + web = [ "vm02187" ]; + other = [ + "vm02117" + "vm02179" + "vm02186" + ]; + }; } diff --git a/infra/vm02116/default.nix b/infra/vm02116/default.nix index 09801fd..34f7a24 100644 --- a/infra/vm02116/default.nix +++ b/infra/vm02116/default.nix @@ -1,6 +1,5 @@ { imports = [ - ../common ./forgejo.nix ]; diff --git a/infra/vm02117/default.nix b/infra/vm02117/default.nix index 7096fcd..30b8d79 100644 --- a/infra/vm02117/default.nix +++ b/infra/vm02117/default.nix @@ -1,8 +1,4 @@ { - imports = [ - ../common - ]; - procolix.vm = { name = "vm02117"; ip4 = "185.206.232.106"; diff --git a/infra/vm02179/default.nix b/infra/vm02179/default.nix index c532b44..fbf2027 100644 --- a/infra/vm02179/default.nix +++ b/infra/vm02179/default.nix @@ -1,8 +1,4 @@ { - imports = [ - ../common - ]; - procolix.vm = { name = "vm02179"; ip4 = "185.206.232.179"; diff --git a/infra/vm02186/default.nix b/infra/vm02186/default.nix index ba477f3..032dc12 100644 --- a/infra/vm02186/default.nix +++ b/infra/vm02186/default.nix @@ -1,8 +1,4 @@ { - imports = [ - ../common - ]; - procolix.vm = { name = "vm02186"; ip4 = "185.206.232.186"; diff --git a/infra/vm02187/default.nix b/infra/vm02187/default.nix index 7b43b4c..70a0f0e 100644 --- a/infra/vm02187/default.nix +++ b/infra/vm02187/default.nix @@ -1,6 +1,5 @@ { imports = [ - ../common ./wiki.nix ];