diff --git a/clanServices/state-version/README.md b/clanServices/state-version/README.md deleted file mode 100644 index c55063b66..000000000 --- a/clanServices/state-version/README.md +++ /dev/null @@ -1,37 +0,0 @@ -This service generates the `system.stateVersion` of the nixos installation -automatically. - -Possible values: -[system.stateVersion](https://search.nixos.org/options?channel=unstable&show=system.stateVersion&from=0&size=50&sort=relevance&type=packages&query=stateVersion) - -## Usage - -The following configuration will set `stateVersion` for all machines: - -``` -inventory.instances = { - state-version = { - module = { - name = "state-version"; - input = "clan"; - }; - roles.default.tags.all = { }; - }; -``` - -## Migration - -If you are already setting `system.stateVersion`, either let the automatic -generation happen, or trigger the generation manually for the machine. The -service will take the specified version, if one is already supplied through the -config. - -To manually generate the version for a specified machine run: - -``` -clan vars generate [MACHINE] -``` - -If the setting was already set, you can then remove `system.stateVersion` from -your machine configuration. For new machines, just import the service as shown -above. diff --git a/clanServices/state-version/default.nix b/clanServices/state-version/default.nix deleted file mode 100644 index b855c645b..000000000 --- a/clanServices/state-version/default.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ ... }: -{ - _class = "clan.service"; - manifest.name = "clan-core/state-version"; - manifest.description = "Automatically generate the state version of the nixos installation."; - manifest.categories = [ "System" ]; - manifest.readme = builtins.readFile ./README.md; - - roles.default = { - - perInstance = - { ... }: - { - nixosModule = - { - config, - lib, - ... - }: - let - var = config.clan.core.vars.generators.state-version.files.version or { }; - in - { - - warnings = [ - '' - The clan.state-version service is deprecated and will be - removed on 2025-07-15 in favor of a nix option. - - Please migrate your configuration to use `clan.core.settings.state-version.enable = true` instead. - '' - ]; - - system.stateVersion = lib.mkDefault (lib.removeSuffix "\n" var.value); - - clan.core.vars.generators.state-version = { - files.version = { - secret = false; - value = lib.mkDefault config.system.nixos.release; - }; - runtimeInputs = [ ]; - script = '' - echo -n ${config.system.stateVersion} > "$out"/version - ''; - }; - }; - }; - }; - -} diff --git a/clanServices/state-version/flake-module.nix b/clanServices/state-version/flake-module.nix deleted file mode 100644 index c4ff9d633..000000000 --- a/clanServices/state-version/flake-module.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ lib, ... }: -let - module = lib.modules.importApply ./default.nix { }; -in -{ - clan.modules.state-version = module; - perSystem = - { ... }: - { - clan.nixosTests.state-version = { - imports = [ ./tests/vm/default.nix ]; - - clan.modules."@clan/state-version" = module; - }; - }; -} diff --git a/clanServices/state-version/tests/vm/default.nix b/clanServices/state-version/tests/vm/default.nix deleted file mode 100644 index 2c9a81aeb..000000000 --- a/clanServices/state-version/tests/vm/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, ... }: -{ - name = "service-state-version"; - - clan = { - directory = ./.; - inventory = { - machines.server = { }; - instances.default = { - module.name = "@clan/state-version"; - module.input = "self"; - roles.default.machines."server" = { }; - }; - }; - }; - - nodes.server = { }; - - testScript = lib.mkDefault '' - start_all() - ''; -} diff --git a/clanServices/state-version/tests/vm/sops/users/admin/key.json b/clanServices/state-version/tests/vm/sops/users/admin/key.json deleted file mode 100644 index e408aa96b..000000000 --- a/clanServices/state-version/tests/vm/sops/users/admin/key.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "publickey": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg", - "type": "age" -} diff --git a/clanServices/state-version/tests/vm/vars/per-machine/server/state-version/version/value b/clanServices/state-version/tests/vm/vars/per-machine/server/state-version/version/value deleted file mode 100644 index 115ab7a6a..000000000 --- a/clanServices/state-version/tests/vm/vars/per-machine/server/state-version/version/value +++ /dev/null @@ -1 +0,0 @@ -25.11 \ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 141ac608e..483056eee 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -107,7 +107,6 @@ nav: - reference/clanServices/monitoring.md - reference/clanServices/packages.md - reference/clanServices/sshd.md - - reference/clanServices/state-version.md - reference/clanServices/syncthing.md - reference/clanServices/trusted-nix-caches.md - reference/clanServices/users.md diff --git a/docs/site/guides/migrations/migrate-inventory-services.md b/docs/site/guides/migrations/migrate-inventory-services.md index 0f4eaa4eb..4f64d5655 100644 --- a/docs/site/guides/migrations/migrate-inventory-services.md +++ b/docs/site/guides/migrations/migrate-inventory-services.md @@ -254,7 +254,7 @@ The following table shows the migration status of each deprecated clanModule: | `data-mesher` | ✅ [Migrated](../../reference/clanServices/data-mesher.md) | | | `deltachat` | ❌ Removed | | | `disk-id` | ❌ Removed | | -| `dyndns` | [Being Migrated](https://git.clan.lol/clan/clan-core/pulls/4390) | | +| `dyndns` | ✅ [Migrated](../../reference/clanServices/dyndns.md) | | | `ergochat` | ❌ Removed | | | `garage` | ✅ [Migrated](../../reference/clanServices/garage.md) | | | `golem-provider` | ❌ Removed | | @@ -263,18 +263,18 @@ The following table shows the migration status of each deprecated clanModule: | `iwd` | ❌ Removed | Use [wifi service](../../reference/clanServices/wifi.md) instead | | `localbackup` | ✅ [Migrated](../../reference/clanServices/localbackup.md) | | | `localsend` | ❌ Removed | | -| `machine-id` | ❌ Removed | Now an [option](../../reference/clan.core/settings.md) | +| `machine-id` | ✅ [Migrated](../../reference/clan.core/settings.md) | Now an [option](../../reference/clan.core/settings.md) | | `matrix-synapse` | ✅ [Migrated](../../reference/clanServices/matrix-synapse.md) | | | `moonlight` | ❌ Removed | | | `mumble` | ❌ Removed | | | `mycelium` | ✅ [Migrated](../../reference/clanServices/mycelium.md) | | | `nginx` | ❌ Removed | | | `packages` | ✅ [Migrated](../../reference/clanServices/packages.md) | | -| `postgresql` | ❌ Removed | Now an [option](../../reference/clan.core/settings.md) | +| `postgresql` | ✅ [Migrated](../../reference/clan.core/settings.md) | Now an [option](../../reference/clan.core/settings.md) | | `root-password` | ✅ [Migrated](../../reference/clanServices/users.md) | See [migration guide](../../reference/clanServices/users.md#migration-from-root-password-module) | | `single-disk` | ❌ Removed | | | `sshd` | ✅ [Migrated](../../reference/clanServices/sshd.md) | | -| `state-version` | ✅ [Migrated](../../reference/clanServices/state-version.md) | | +| `state-version` | ✅ [Migrated](../../reference/clan.core/settings.md) | Now an [option](../../reference/clan.core/settings.md) | | `static-hosts` | ❌ Removed | | | `sunshine` | ❌ Removed | | | `syncthing-static-peers` | ❌ Removed | | diff --git a/nixosModules/clanCore/defaults.nix b/nixosModules/clanCore/defaults.nix index d382222ee..30b8bea07 100644 --- a/nixosModules/clanCore/defaults.nix +++ b/nixosModules/clanCore/defaults.nix @@ -8,6 +8,10 @@ { imports = lib.optional (_class == "nixos") ( lib.mkIf config.clan.core.enableRecommendedDefaults { + + # Enable automatic state-version generation. + clan.core.settings.state-version.enable = true; + # Use systemd during boot as well except: # - systems with raids as this currently require manual configuration: https://github.com/NixOS/nixpkgs/issues/210210 # - for containers we currently rely on the `stage-2` init script that sets up our /etc @@ -37,6 +41,7 @@ }; config = lib.mkIf config.clan.core.enableRecommendedDefaults { + # This disables the HTML manual and `nixos-help` command but leaves # `man configuration.nix` documentation.doc.enable = lib.mkDefault false; diff --git a/nixosModules/clanCore/state-version/tests/flake-module.nix b/nixosModules/clanCore/state-version/tests/flake-module.nix index fa68c0a1c..b0a82e32c 100644 --- a/nixosModules/clanCore/state-version/tests/flake-module.nix +++ b/nixosModules/clanCore/state-version/tests/flake-module.nix @@ -9,28 +9,11 @@ clan = { directory = ./.; - - # Workaround until we can use nodes.server = { }; - modules."@clan/importer" = ../../../../clanServices/importer; - - inventory = { - machines.server = { }; - instances.importer = { - module.name = "@clan/importer"; - module.input = "self"; - roles.default.tags.all = { }; - roles.default.extraModules = [ - { - clan.core.settings.state-version.enable = true; - } - ]; - }; + machines.server = { + clan.core.settings.state-version.enable = true; }; }; - # TODO: Broken. Use instead of importer after fixing. - # nodes.server = { }; - # This is not an actual vm test, this is a workaround to # generate the needed vars for the eval test. testScript = ""; diff --git a/pkgs/clan-cli/clan_cli/tests/test_vars.py b/pkgs/clan-cli/clan_cli/tests/test_vars.py index 44b392f43..4f9ec9960 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_vars.py +++ b/pkgs/clan-cli/clan_cli/tests/test_vars.py @@ -198,7 +198,7 @@ def test_generate_public_and_secret_vars( assert check_vars(machine.name, machine.flake) # get last commit message commit_message = run( - ["git", "log", "-5", "--pretty=%B"], + ["git", "log", "-6", "--pretty=%B"], ).stdout.strip() assert ( "Update vars via generator my_generator for machine my_machine" @@ -878,7 +878,7 @@ def test_api_set_prompts( # get_generators should bind the store assert generators[0].files[0]._store is not None - assert len(generators) == 1 + assert len(generators) == 2 assert generators[0].name == "my_generator" assert generators[0].prompts[0].name == "prompt1" assert generators[0].prompts[0].previous_value == "input2"