clanServices: bring back state-version
It seems it was accidentially deleted. We cannot do that @davHau please offer a migration path That allows people to migrate, without breaking their clans
This commit is contained in:
37
clanServices/state-version/README.md
Normal file
37
clanServices/state-version/README.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
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.
|
||||||
39
clanServices/state-version/default.nix
Normal file
39
clanServices/state-version/default.nix
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
_class = "clan.service";
|
||||||
|
manifest.name = "clan-core/state-version";
|
||||||
|
manifest.description = "Automatically generate the state version of the nixos installation.";
|
||||||
|
manifest.categories = [ "System" ];
|
||||||
|
|
||||||
|
roles.default = {
|
||||||
|
|
||||||
|
perInstance =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
nixosModule =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
var = config.clan.core.vars.generators.state-version.files.version or { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
16
clanServices/state-version/flake-module.nix
Normal file
16
clanServices/state-version/flake-module.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{ 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
21
clanServices/state-version/tests/vm/default.nix
Normal file
21
clanServices/state-version/tests/vm/default.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
name = "state-version";
|
||||||
|
|
||||||
|
clan = {
|
||||||
|
directory = ./.;
|
||||||
|
inventory = {
|
||||||
|
machines.server = { };
|
||||||
|
instances.default = {
|
||||||
|
module.name = "@clan/state-version";
|
||||||
|
module.input = "self";
|
||||||
|
roles.default.machines."server" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes.server = { };
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"publickey": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg",
|
||||||
|
"type": "age"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
25.11
|
||||||
Reference in New Issue
Block a user