From df3a070fa40c7698547ccc7e8fdfc15a854d81d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=E2=80=9CNiols=E2=80=9D=20Jeannerod?= Date: Thu, 31 Jul 2025 00:49:00 +0200 Subject: [PATCH] Infra: get rid of `makeResourceModule` (#485) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.fediversity.eu/Fediversity/Fediversity/pulls/485 Reviewed-by: Valentin Gagarin Reviewed-by: kiara Grouwstra Co-authored-by: Nicolas “Niols” Jeannerod Co-committed-by: Nicolas “Niols” Jeannerod --- infra/common/resource.nix | 1 + infra/flake-part.nix | 121 ++++++++++++--------------- machines/dev/fedi200/default.nix | 1 + machines/dev/fedi201/default.nix | 1 + machines/dev/forgejo-ci/default.nix | 1 + machines/dev/vm02116/default.nix | 1 + machines/dev/vm02187/default.nix | 1 + machines/operator/test01/default.nix | 1 + machines/operator/test02/default.nix | 1 + machines/operator/test03/default.nix | 1 + machines/operator/test04/default.nix | 1 + machines/operator/test05/default.nix | 1 + machines/operator/test06/default.nix | 1 + machines/operator/test11/default.nix | 1 + machines/operator/test12/default.nix | 1 + machines/operator/test13/default.nix | 1 + machines/operator/test14/default.nix | 1 + 17 files changed, 68 insertions(+), 69 deletions(-) diff --git a/infra/common/resource.nix b/infra/common/resource.nix index d50103da..55aa64d4 100644 --- a/infra/common/resource.nix +++ b/infra/common/resource.nix @@ -34,6 +34,7 @@ in imports = [ ./options.nix ./nixos + ./proxmox-qemu-vm.nix ]; ## Inject the shared options from the resource's `config` into the NixOS diff --git a/infra/flake-part.nix b/infra/flake-part.nix index cad2b1b3..4b341ded 100644 --- a/infra/flake-part.nix +++ b/infra/flake-part.nix @@ -17,59 +17,35 @@ let ; inherit (lib.attrsets) genAttrs; - ## Given a machine's name and whether it is a test VM, make a resource module, - ## except for its missing provider. (Depending on the use of that resource, we - ## will provide a different one.) - makeResourceModule = - { vmName, isTestVm }: - { - # TODO(@fricklerhandwerk): this is terrible but IMO we should just ditch flake-parts and have our own data model for how the project is organised internally - _module.args = { - inherit - inputs - keys - secrets - sources - ; - }; - - nixos.module.imports = [ - ## FIXME: It would be preferrable to have those `sources`-related - ## imports in the modules that use them. However, doing so triggers - ## infinite recursions because of the way we propagate `sources`. - ## `sources` must be propagated by means of `specialArgs`, but this - ## requires a bigger change. - "${sources.nixpkgs}/nixos/modules/profiles/qemu-guest.nix" - "${sources.agenix}/modules/age.nix" - "${sources.disko}/module.nix" - "${sources.home-manager}/nixos" - - ./common/proxmox-qemu-vm.nix - ]; - - imports = - [ - ./common/resource.nix - ] - ++ ( - if isTestVm then - [ - ../machines/operator/${vmName} - { - nixos.module.users.users.root.openssh.authorizedKeys.keys = [ - # allow our panel vm access to the test machines - keys.panel - ]; - } - ] - else - [ - ../machines/dev/${vmName} - ] - ); - fediversityVm.name = vmName; + commonResourceModule = { + # TODO(@fricklerhandwerk): this is terrible but IMO we should just ditch + # flake-parts and have our own data model for how the project is organised + # internally + _module.args = { + inherit + inputs + keys + secrets + sources + ; }; + ## FIXME: It would be preferrable to have those `sources`-related imports in + ## the modules that use them. However, doing so triggers infinite recursions + ## because of the way we propagate `sources`. `sources` must be propagated by + ## means of `specialArgs`, but this requires a bigger change. + nixos.module.imports = [ + "${sources.nixpkgs}/nixos/modules/profiles/qemu-guest.nix" + "${sources.agenix}/modules/age.nix" + "${sources.disko}/module.nix" + "${sources.home-manager}/nixos" + ]; + + imports = [ + ./common/resource.nix + ]; + }; + ## Given a list of machine names, make a deployment with those machines' ## configurations as resources. makeDeployment = @@ -81,10 +57,8 @@ let type = providers.local.exec; imports = [ inputs.nixops4-nixos.modules.nixops4Resource.nixos - (makeResourceModule { - inherit vmName; - isTestVm = false; - }) + commonResourceModule + ../machines/dev/${vmName} ]; }); }; @@ -101,21 +75,29 @@ let fediversity = import ../services/fediversity; } { - garageConfigurationResource = makeResourceModule { - vmName = "test01"; - isTestVm = true; + garageConfigurationResource = { + imports = [ + commonResourceModule + ../machines/operator/test01 + ]; }; - mastodonConfigurationResource = makeResourceModule { - vmName = "test06"; # somehow `test02` has a problem - use test06 instead - isTestVm = true; + mastodonConfigurationResource = { + imports = [ + commonResourceModule + ../machines/operator/test06 # somehow `test02` has a problem - use test06 instead + ]; }; - peertubeConfigurationResource = makeResourceModule { - vmName = "test05"; - isTestVm = true; + peertubeConfigurationResource = { + imports = [ + commonResourceModule + ../machines/operator/test05 + ]; }; - pixelfedConfigurationResource = makeResourceModule { - vmName = "test04"; - isTestVm = true; + pixelfedConfigurationResource = { + imports = [ + commonResourceModule + ../machines/operator/test04 + ]; }; }; @@ -135,11 +117,12 @@ let }; makeResourceConfig = - vm: + { vmName, isTestVm }: (evalModules { modules = [ nixops4ResourceNixosMockOptions - (makeResourceModule vm) + commonResourceModule + (if isTestVm then ../machines/operator/${vmName} else ../machines/dev/${vmName}) ]; }).config; diff --git a/machines/dev/fedi200/default.nix b/machines/dev/fedi200/default.nix index 23ba6de8..6014da4f 100644 --- a/machines/dev/fedi200/default.nix +++ b/machines/dev/fedi200/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "fedi200"; vmId = 200; proxmox = "fediversity"; description = "Testing machine for Hans"; diff --git a/machines/dev/fedi201/default.nix b/machines/dev/fedi201/default.nix index bb5058b8..3197b157 100644 --- a/machines/dev/fedi201/default.nix +++ b/machines/dev/fedi201/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "fedi201"; vmId = 201; proxmox = "fediversity"; description = "FediPanel"; diff --git a/machines/dev/forgejo-ci/default.nix b/machines/dev/forgejo-ci/default.nix index 901f11c0..ee212b17 100644 --- a/machines/dev/forgejo-ci/default.nix +++ b/machines/dev/forgejo-ci/default.nix @@ -20,6 +20,7 @@ in ssh.host = mkForce "forgejo-ci"; fediversityVm = { + name = "forgejo-ci"; domain = "procolix.com"; ipv4 = { diff --git a/machines/dev/vm02116/default.nix b/machines/dev/vm02116/default.nix index e9338028..0ffd24ab 100644 --- a/machines/dev/vm02116/default.nix +++ b/machines/dev/vm02116/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "vm02116"; vmId = 2116; proxmox = "procolix"; description = "Forgejo"; diff --git a/machines/dev/vm02187/default.nix b/machines/dev/vm02187/default.nix index 2f91d753..bc4e63f3 100644 --- a/machines/dev/vm02187/default.nix +++ b/machines/dev/vm02187/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "vm02187"; vmId = 2187; proxmox = "procolix"; description = "Wiki"; diff --git a/machines/operator/test01/default.nix b/machines/operator/test01/default.nix index fd5dc710..d644b6fe 100644 --- a/machines/operator/test01/default.nix +++ b/machines/operator/test01/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test01"; vmId = 7001; proxmox = "fediversity"; diff --git a/machines/operator/test02/default.nix b/machines/operator/test02/default.nix index c7e8fc04..53385da7 100644 --- a/machines/operator/test02/default.nix +++ b/machines/operator/test02/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test02"; vmId = 7002; proxmox = "fediversity"; diff --git a/machines/operator/test03/default.nix b/machines/operator/test03/default.nix index 55b86f59..ebfa3efb 100644 --- a/machines/operator/test03/default.nix +++ b/machines/operator/test03/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test03"; vmId = 7003; proxmox = "fediversity"; diff --git a/machines/operator/test04/default.nix b/machines/operator/test04/default.nix index 78f9ee09..f234393f 100644 --- a/machines/operator/test04/default.nix +++ b/machines/operator/test04/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test04"; vmId = 7004; proxmox = "fediversity"; diff --git a/machines/operator/test05/default.nix b/machines/operator/test05/default.nix index 277c7067..de461d57 100644 --- a/machines/operator/test05/default.nix +++ b/machines/operator/test05/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test05"; vmId = 7005; proxmox = "fediversity"; diff --git a/machines/operator/test06/default.nix b/machines/operator/test06/default.nix index 42a40dc3..a43090de 100644 --- a/machines/operator/test06/default.nix +++ b/machines/operator/test06/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test06"; vmId = 7006; proxmox = "fediversity"; diff --git a/machines/operator/test11/default.nix b/machines/operator/test11/default.nix index fe955029..848192d2 100644 --- a/machines/operator/test11/default.nix +++ b/machines/operator/test11/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test11"; vmId = 7011; proxmox = "fediversity"; diff --git a/machines/operator/test12/default.nix b/machines/operator/test12/default.nix index cfed2f84..a33b24c3 100644 --- a/machines/operator/test12/default.nix +++ b/machines/operator/test12/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test12"; vmId = 7012; proxmox = "fediversity"; diff --git a/machines/operator/test13/default.nix b/machines/operator/test13/default.nix index 1d71b6b7..97cdfb6b 100644 --- a/machines/operator/test13/default.nix +++ b/machines/operator/test13/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test13"; vmId = 7013; proxmox = "fediversity"; diff --git a/machines/operator/test14/default.nix b/machines/operator/test14/default.nix index 6832b2c7..34b4c3c6 100644 --- a/machines/operator/test14/default.nix +++ b/machines/operator/test14/default.nix @@ -2,6 +2,7 @@ _class = "nixops4Resource"; fediversityVm = { + name = "test14"; vmId = 7014; proxmox = "fediversity";