From 34529a7de434b5a1d79049d17ada3d80c8420e14 Mon Sep 17 00:00:00 2001 From: Kiara Grouwstra Date: Mon, 23 Jun 2025 19:22:47 +0200 Subject: [PATCH] data model: migration --- deployment/data-model-test.nix | 6 ++++++ deployment/data-model.nix | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/deployment/data-model-test.nix b/deployment/data-model-test.nix index 55a0e1d8..053f7ba2 100644 --- a/deployment/data-model-test.nix +++ b/deployment/data-model-test.nix @@ -46,6 +46,10 @@ in module = { }; runtime-environment = config.runtime-environments.bar; }; + migrations.boo = { + deployment = config.deployments.baz; + runtime-environment = config.runtime-environments.bar; + }; } ); in @@ -54,12 +58,14 @@ in has-runtime-environment = lib.isAttrs example.runtime-environments.bar.single-ssh-host.module; has-application = lib.isAttrs example.applications.foo.module; has-deployment = lib.isAttrs example.deployments.baz.module; + has-migration = lib.isAttrs example.migrations.boo.deployment; }; expected = { has-runtime-configuration = true; has-runtime-environment = true; has-application = true; has-deployment = true; + has-migration = true; }; }; } diff --git a/deployment/data-model.nix b/deployment/data-model.nix index 2a90fc11..78bfefca 100644 --- a/deployment/data-model.nix +++ b/deployment/data-model.nix @@ -127,6 +127,23 @@ let } ]; }; + migration = submoduleWith { + description = "Migration of a Fediversity deployment to a Fediversity run-time environment"; + modules = [ + { + options = { + deployment = mkOption { + description = "Deployment to migrate"; + type = deployment; + }; + runtime-environment = mkOption { + description = "Run-time environment to migrate the deployment to"; + type = runtime-environment; + }; + }; + } + ]; + }; in { options = { @@ -146,5 +163,9 @@ in description = "Deployment of a configuration of applications to a run-time environment"; type = attrsOf deployment; }; + migrations = mkOption { + description = "Migrations from Fediversity deployments to Fediversity run-time environments"; + type = attrsOf migration; + }; }; }