From 34eb7263cc0eced5943cdaebee1448233e07af7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=E2=80=9CNiols=E2=80=9D=20Jeannerod?= Date: Thu, 30 Jan 2025 09:53:45 +0100 Subject: [PATCH] Factorise the resource definition --- infra/fedi300/default.nix | 1 - infra/flake-part.nix | 141 ++++++++++---------------------------- infra/vm02116/default.nix | 1 - infra/vm02117/default.nix | 4 -- infra/vm02179/default.nix | 4 -- infra/vm02186/default.nix | 4 -- infra/vm02187/default.nix | 1 - 7 files changed, 36 insertions(+), 120 deletions(-) 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..dd43bb1 100644 --- a/infra/flake-part.nix +++ b/infra/flake-part.nix @@ -1,5 +1,35 @@ { 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, ... }: @@ -7,41 +37,8 @@ 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; } - ]; - }; - }; + vm02116 = makeResource "vm02116" { inherit providers; }; + fedi300 = makeResource "fedi300" { inherit providers; }; }; }; @@ -51,23 +48,7 @@ providers.local = inputs.nixops4-nixos.modules.nixops4Provider.local; 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; } - ]; - }; - }; + vm02187 = makeResource "vm02187" { inherit providers; }; }; }; @@ -77,59 +58,9 @@ 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; } - ]; - }; - }; + vm02117 = makeResource "vm02117" { inherit providers; }; + vm02179 = makeResource "vm02179" { inherit providers; }; + vm02186 = makeResource "vm02186" { inherit providers; }; }; }; } 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 ];